Премини към съдържанието
  • Добре дошли!

    Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

    Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

     

прехвърляне на стойност в PHP на друга страница?


Препоръчан отговор


Здравейте,

Правя една състема за показване на новини, която в общи линии има една първоначална проверка - активна ли е или не, ако е активна, покажи новините, ако не - нищо. В админ панела успях да осъществя този грандиозен замисъл:

$newsystem = $_POST['newsystem'];


if($newsystem == 'active')

{

	echo "<form name='newsystem' method='post' action='".$PHP_SELF."'>";

	echo "<label for='newsystem'>news system is active</label>";

	echo "<input type='checkbox' name='newsystem' value='inactive'>";

	echo "<input type='submit' value='deactivate'></form>";

	// newsystem is active so display the NEWS INDEX

	............

}

else

{

	echo "<form name='newsystem' method='post' action='".$PHP_SELF."'>";

	echo "<label for='newsystem'>news system is not active</label>";

	echo "<input type='checkbox' name='newsystem' value='active'>";

	echo "<input type='submit' value='activate'></form>";	

}
Да, обаче, идеята ми е и на индексната страница да мога да проверя дали системата е активна или не и съответно да покажа или не новините. Тук вече нямам разрешение. Как да подам тази променлива от страницата с админ функциите към другата страница? Като част от цялата логин система е един файл "constants.php" - в него се дефинират разни други константи. Та там добавих следното:
if($newsystem == 'active')

{

	define("NEWS_SYSTEM", true);

}

else

{

	define("NEWS_SYSTEM", false);

}

ама проблемът е пак същия - не мога да подам променливата от едната страница на другата/всичките.... Как да стане тая далавера? :phone:

Редактирано от dalai.lamia (преглед на промените)
Линк към този отговор
Сподели в други сайтове

Не трябва ли първо да отвориш едно query и да "извикаш" нужните данни.. ? $query = mysql_query("SELECT * FROM ........ и т.н...

;'') и после да направиш проверката.. до колкото разбрах това искаш..

Линк към този отговор
Сподели в други сайтове
Не трябва ли първо да отвориш едно query и да "извикаш" нужните данни.. ? $query = mysql_query("SELECT * FROM ........ и т.н...

;'') и после да направиш проверката.. до колкото разбрах това искаш..

Мне, в тоя случай не ми трябва база данни. Променливата няма нужда да се съхранява в база данни. Единия вариант е да се вземе с глобална променлива (global), но не знам как точно ... Или може би трябва обработката на формата да става във външен файл (action=process.php), а не както в моя случай (action=$PHP_SELF). Именно затова питам, може някой по-знаещ да се сети за решение :headphones:

Линк към този отговор
Сподели в други сайтове
Мне, в тоя случай не ми трябва база данни. Променливата няма нужда да се съхранява в база данни. Единия вариант е да се вземе с глобална променлива (global), но не знам как точно ... Или може би трябва обработката на формата да става във външен файл (action=process.php), а не както в моя случай (action=$PHP_SELF). Именно затова питам, може някой по-знаещ да се сети за решение :clap:

Ами или с $GLOBALS или $_SESSION щом не искаш с база данни.

Линк към този отговор
Сподели в други сайтове

Няма ли да е по-лесно просто да имаш хедър файл някъде там, в който да има примерно:

$newsystem = 1; // 1 ->активна; 0 -> неактивна
И където ти е нужно да сложиш по един include към файла :) Ето така, да речем ;)
include 'h.php';


if($newsystem == '1')

{

	define("NEWS_SYSTEM", true);

}

else

{

	define("NEWS_SYSTEM", false);

}

Редактирано от Sm0k3y7h3p07 (преглед на промените)

Линк към този отговор
Сподели в други сайтове

KEN: Ами или с $GLOBALS или $_SESSION щом не искаш с база данни.

Ами там е проблемът, че не знам как да го напиша това - сравнително отскоро се занимавам с PHP.

Няма ли да е по-лесно просто да имаш хедър файл някъде там, в който да има примерно:
$newsystem = 1; // 1 ->активна; 0 -> неактивна
И където ти е нужно да сложиш по един include към файла :speak: Ето така, да речем :)
include 'h.php';


if($newsystem == '1')

{

	define("NEWS_SYSTEM", true);

}

else

{

	define("NEWS_SYSTEM", false);

}
Опасявам се, че тук не схващам всичко. Аз горе долу по този начин действам. В index.php (там където ще показвам новините) съм сложил следната проверка:
<?php

if((NEWS_SYSTEM == true) && ($p == "Home"))

{

include("news.php");

}

?>

За да вземе инфо дали NEWS_SYSTEM е true/false, включвам

<? include_once("include/session.php"); ?> -- оттам вече се осъществява връзка с логин системата, която ползвам и на която се опитвам да добавям екстри. "session.php" от своя страна търси "constants.php" , където има дефинирани други константи, необходими за системата. Мястото, от което обаче включвам и изключвам системата за новини е файла "login.php" , който също търси горните два файла (session.php, constants.php), но не знам как да извадя тази променлива от login.php да бъде валидна за цялата система. Както споменах, предполагам става с globals или както казва КЕН със $_SESSION. Да, ама не знам как да го напиша това sad.gif

Междувременно ще пробвам да го направя със запис в БД, но така няма ли е по-натоварващо за сървъра и самия скрипт?

Линк към този отговор
Сподели в други сайтове
KEN: Ами или с $GLOBALS или $_SESSION щом не искаш с база данни.

Ами там е проблемът, че не знам как да го напиша това - сравнително отскоро се занимавам с PHP.

Опасявам се, че тук не схващам всичко. Аз горе долу по този начин действам. В index.php (там където ще показвам новините) съм сложил следната проверка:

<?php

if((NEWS_SYSTEM == true) && ($p == "Home"))

{

include("news.php");

}

?>
За да вземе инфо дали NEWS_SYSTEM е true/false, включвам <? include_once("include/session.php"); ?> -- оттам вече се осъществява връзка с логин системата, която ползвам и на която се опитвам да добавям екстри. "session.php" от своя страна търси "constants.php" , където има дефинирани други константи, необходими за системата. Мястото, от което обаче включвам и изключвам системата за новини е файла "login.php" , който също търси горните два файла (session.php, constants.php), но не знам как да извадя тази променлива от login.php да бъде валидна за цялата система. Както споменах, предполагам става с globals или както казва КЕН със $_SESSION. Да, ама не знам как да го напиша това sad.gif Междувременно ще пробвам да го направя със запис в БД, но така няма ли е по-натоварващо за сървъра и самия скрипт?
file1.php
<?php

session_start();

$_SESSION['variablename'] = '111';

?>
file2.php
<?php

session_start();

echo '['.$_SESSION['variablename'].']';

?>

Редактирано от Ken (преглед на промените)
Линк към този отговор
Сподели в други сайтове
file1.php

<?php

session_start();

$_SESSION['variablename'] = '111';

?>
file2.php
<?php

session_start();

echo '['.$_SESSION['variablename'].']';

?>

Благодаря, ама просто не знам къде да ги добавя тия сесии. Проблемът е, че логин системата, която ползвам, във файла session.php има една камара други сесии - вътре някъде трябва да се сложи, защото иначе става конфликт и грешка, но там всичко е построено с класове, едни функции дето ги гледам "умно" ...

Линк към този отговор
Сподели в други сайтове
Благодаря, ама просто не знам къде да ги добавя тия сесии. Проблемът е, че логин системата, която ползвам, във файла session.php има една камара други сесии - вътре някъде трябва да се сложи, защото иначе става конфликт и грешка, но там всичко е построено с класове, едни функции дето ги гледам "умно" ...

Там, където ще активираш/деактивираш системата вмъкни :

$_SESSION['status'] = 1 (или 0);

а където ще проверяваш дали е активна или не :

if ($_SESSION['status'] == 1) ....

След като вече има стартирана сессия, не е необходимо наново да се изпълнява session_start();

Линк към този отговор
Сподели в други сайтове
Там, където ще активираш/деактивираш системата вмъкни :

$_SESSION['status'] = 1 (или 0);

а където ще проверяваш дали е активна или не :

if ($_SESSION['status'] == 1) ....

След като вече има стартирана сессия, не е необходимо наново да се изпълнява session_start();

УРАААААА! :P)

Направих го по-малко по-различен начин:

там където активирам/деактивирам:

$_SESSION['newsystem'] = $_POST['newsystem'];


if($_SESSION['newsystem'] == 'active')

{

	echo "<form name='newsystem' method='post' action='".$PHP_SELF."'>";

	echo "<label for='newsystem'>news system is ".$_SESSION['newsystem']."</label>";

	echo "<input type='checkbox' name='newsystem' value='inactive'>";

	echo "<input type='submit' value='deactivate'></form>";

	// newsystem is active so display the NEWS INDEX

	......................

}

else

{

	echo "<form name='newsystem' method='post' action='".$PHP_SELF."'>";

	еcho "<label for='newsystem'>news system is ".$_SESSION['newsystem']."</label>";

	echo "<input type='checkbox' name='newsystem' value='active'>";

	echo "<input type='submit' value='activate'></form>";	

}
А там, където показвам:
<?php

if(($_SESSION['newsystem'] == 'active') && ($p == "Home"))

{

	include("news.php");

}

?>

И работи ;)

Това по-лош вариант ли е от твоя или е същия?

Линк към този отговор
Сподели в други сайтове
УРАААААА! :P)

Направих го по-малко по-различен начин:

там където активирам/деактивирам:

$_SESSION['newsystem'] = $_POST['newsystem'];


if($_SESSION['newsystem'] == 'active')

{

	echo "<form name='newsystem' method='post' action='".$PHP_SELF."'>";

	echo "<label for='newsystem'>news system is ".$_SESSION['newsystem']."</label>";

	echo "<input type='checkbox' name='newsystem' value='inactive'>";

	echo "<input type='submit' value='deactivate'></form>";

	// newsystem is active so display the NEWS INDEX

	......................

}

else

{

	echo "<form name='newsystem' method='post' action='".$PHP_SELF."'>";

	еcho "<label for='newsystem'>news system is ".$_SESSION['newsystem']."</label>";

	echo "<input type='checkbox' name='newsystem' value='active'>";

	echo "<input type='submit' value='activate'></form>";	

}
А там, където показвам:
<?php

if(($_SESSION['newsystem'] == 'active') && ($p == "Home"))

{

	include("news.php");

}

?>

И работи ;)

Това по-лош вариант ли е от твоя или е същия?

Според мен е едно и също.

Линк към този отговор
Сподели в други сайтове
Според мен е едно и също.

Супер! Благодаря за помощта!

Сега продължавам да ровичкам по-надълбоко в тая система, за да си създам още проблеми :P

Линк към този отговор
Сподели в други сайтове

Всъщност, оказа се, че греша и че системата всъщност не работи....

Пропускът беше трудно видим вчера, но едва сега разбрах: тъй като използвам $_SESSION , то промените по системата (включена или изключена) се запомнят само за текущата сесия и САМО на моя компютър. Което ще рече, че само ако преди това съм включил системата (и съм съхранил в браузъра една стойност за $_SESSION['newsystem'] ), секцията всъщност ще се покаже и на индексната страница (където проверявам дали $_SESSION['newsystem'] има стойност и каква е тя (active / inactive).

Та, хайде пак отначало...

Линк към този отговор
Сподели в други сайтове
Всъщност, оказа се, че греша и че системата всъщност не работи....

Пропускът беше трудно видим вчера, но едва сега разбрах: тъй като използвам $_SESSION , то промените по системата (включена или изключена) се запомнят само за текущата сесия и САМО на моя компютър. Което ще рече, че само ако преди това съм включил системата (и съм съхранил в браузъра една стойност за $_SESSION['newsystem'] ), секцията всъщност ще се покаже и на индексната страница (където проверявам дали $_SESSION['newsystem'] има стойност и каква е тя (active / inactive).

Та, хайде пак отначало...

Ами тогава във файл или база данни.

Линк към този отговор
Сподели в други сайтове
Ами тогава във файл или база данни.

База данни. Ама каква мъка беше докато го накарам да работи (час и половина не мога да уцеля правилно активирането и деактивирането).

Имам чувството обаче, че се събират бая различни процеси при натискането на тоя бутон (activate/deactivate) -- логнат ли си или не, ако да -- админ ли си или не, ако да -- покажи формата. Същевременно, за да извадя менюто и съдържанието на самия сайт ползвам неща писани от мен (предното е от логин състемата), които си правят отделна mysql връзка. Понякога виждам как като натисна бутона и браузъра "мисли" 20-30 секунди преди да се случи нещо.

Има ли как да проверя до каква степен натоварвам сървъра и съответно как да намаля това натоварване?

Иначе ето формата (може да е полезна на някого):

<?php

if($submit)

{	

	$newsystem = $_POST['newsystem'];

	$newscontrol = mysql_query("UPDATE bb_contents SET subset='$newsystem' WHERE section_name = 'News'",$connect);

	echo "<form name='newsystem' method='post' action='".$PHP_SELF."'>";

	echo "<label for='newsystem'>news system is ".$newsystem."</label>";


	if($newsystem == 'active')

	{				

		echo "<input type='checkbox' name='newsystem' value='inactive'>";

		echo "<input type='submit' name='submit' value='deactivate'></form>";

	}

	elseif($newsystem == 'inactive')

	{

		echo "<input type='checkbox' name='newsystem' value='active'>";

		echo "<input type='submit' name='submit' value='activate'></form>";

	}

}

else

{

	$newscontrol = mysql_query("SELECT subset FROM bb_contents WHERE section_name = 'News'",$connect);

	while ($nrow = mysql_fetch_array($newscontrol))

	{

		echo "<form name='newsystem' method='post' action='".$PHP_SELF."'>";

		echo "<label for='newsystem'>news system is ".$nrow['subset']."</label>";


		if($nrow['subset'] == 'active')

		{				

			echo "<input type='checkbox' name='newsystem' value='inactive'>";

			echo "<input type='submit' name='submit' value='deactivate'></form>";

		}

		else

		{

			echo "<input type='checkbox' name='newsystem' value='active'>";

			echo "<input type='submit' name='submit' value='activate'></form>";

		}


	}

}

?>

Линк към този отговор
Сподели в други сайтове

Прочети пак моето мнение и ми кажи дали не е по-лесно така? :baby: А ако аз не съм обяснил като хората, кажи... ще обясня по-подробно :whist:

Линк към този отговор
Сподели в други сайтове
Прочети пак моето мнение и ми кажи дали не е по-лесно така? ;) А ако аз не съм обяснил като хората, кажи... ще обясня по-подробно :)

:) Аз още тогава написах, че не съм го разбрал както трябва. Ще ти бъда благодарен ако подробно развиеш идеята си, сравнявайки я с това, което успях да сътворя като отбелязваш защо едното, а не другото. Сега се уча ;)

Важният момент е да може друг администратор (освен мен, някой който нищо и не иска да знае за кода) да си активира и деактивира тая система - иначе аз в самото начало си вкарах един ред в config.php -- DEFINE ("newsystem", active) и можех да си го сменям оттам.

Линк към този отговор
Сподели в други сайтове

Друг администратор, а? ... Е в такъв случай ще е най-практично с бази от данни. Но иначе идеята ми беше следната:

Всичките неща, които съм правил на php, си имат една папка /includes/ в която държа основните неща на сайта. Неща като charset, DOCTYPE декларациите, отварящите и затварящи тагове на страниците, скриптовете и т.н. След това във всяка нова страница, която създавам добавям

include 'include/f_main.php';
Предполагам знаеш как действа това нещо такаче няма да задълбавам :baby: В твоя случай виждам 2 варианта. Единия е ако системата е неактивна да се изкарва някакво съобщение и цялата страница да не се зареди. За да стане това във въпросния include файл слагаме кода
if ($isActiveSystem == 0) {die("Error Message...");}
Някъде преди този ред трябва да има декларация на променливата $isActiveSystem, била тя в друг include файл или просто един ред по-нагоре да пише $isActiveSystem = 0;. В този случай се спира цялата страница. Но ти май искаш да се спира само някои компонент... тогава пак имаме същата променлива и include файлове, но тогава най-вероятно ще се наложи да се декларират състоянията на системата във всеки отделен файл, в който е нужно. Примерно:
<?php

//index.php

include 'includes/f_main.php';


//...някакъв код...


if ($isActiveSystem == 1) {

	  //Кодът на системата която искаш да спреш/пуснеш

}

else if ($isActiveSystem == 0) {

	  //Друг код който да се изписва при неактивна система или нищо

}


//продължава зареждането на страницата...


//...някакъв код...



?>

И подобно нещо правиш с всеки файл, в който се ползва тази система.

Ако използваш този вариант, но все пак искаш и други администратори да могат да включват/изключват системата без да се налага всеки път да се качват новите файлове, можеш да ползваш някои от filesystem фунцкиите на php, но сигурно ще ти отнеме повече време и усилия от колкото с базите от данни ;)

Линк към този отговор
Сподели в други сайтове

Да, разбрах. Аз първоначално именно така го бях направил - във "constants.php" имах

DEFINE("newsystem", inactive)
а на индексната страница:
include/constants.php

..........


if((newsystem == active) && ($p == 'Home')) {

include("news.php");

}

........

Но идеята беше да става номера без да се качва наново constants.php. Сега с БД-то си работи :) .... сега съм се захванал да мъча едни Spry Tabbed Panels дето не мога да им подам правилно данните от ДБ. Май без XML няма да стане... Но, затова може би в друга тема :)

Линк към този отговор
Сподели в други сайтове

Добавете отговор

Можете да публикувате отговор сега и да се регистрирате по-късно. Ако имате регистрация, влезте в профила си за да публикувате от него.

Гост
Напишете отговор в тази тема...

×   Вмъкнахте текст, който съдържа форматиране.   Премахни форматирането на текста

  Разрешени са само 75 емотикони.

×   Съдържанието от линка беше вградено автоматично.   Премахни съдържанието и покажи само линк

×   Съдържанието, което сте написали преди беше възстановено..   Изтрий всичко

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Добави ново...

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите Условия за ползване