| Autor | Zpráva | ||
|---|---|---|---|
| gerix Profil |
#1 · Zasláno: 16. 4. 2011, 10:36:04
Zdravím, chtěl bych poprosit o radu ohledně zjištění existence session v array.
Používám jako základ tento script. Jde mi o to, že na první straně vyplním textove_pole1, textove_pole2. Na druhé straně formuláře chci udělat kontrolu jestli existují nebo ne a v závisloti na to vypsat formulář. Zkoušel jsem něco sesmolit, ale pořád mi to hází chybu: Fatal error: Can't use function return value in write context in Co dělám špatně? Díky za odpovědi.
if (isset($_SESSION($registrace["textove_pole1"])) || isset($_SESSION($registrace["textove_pole2"]))) {
echo "existuje minimalne jedna z techto hodnot - vypisu formular";
}
else {
echo "neexistuje ani jedna promenna";
}
|
||
| Alphard Profil |
#2 · Zasláno: 16. 4. 2011, 10:42:38
$_SESSION()?
|
||
| gerix Profil |
#3 · Zasláno: 16. 4. 2011, 10:47:53
Zkoušel jsem to i takhle, sice to nehodi chybu, ale i když mám vyplněny hodnoty "textove_pole1","textove_pole2" stále to zobrazuje chybu "neexistuje ani jedna promenna".
if (isset($_SESSION[$registrace["textove_pole1"]]) || isset($_SESSION[$registrace["textove_pole2"]])) {
echo "existuje minimalne jedna z techto hodnot - vypisu formular";
}
else {
echo "neexistuje ani jedna promenna";
}
|
||
| Alphard Profil |
#4 · Zasláno: 16. 4. 2011, 10:52:09
Jakub Vrána to tam má jinak, my nevíme, kde berete
$registrace.
|
||
| gerix Profil |
#5 · Zasláno: 16. 4. 2011, 10:57:39 · Upravil/a: gerix
Takhle to myslím, co dělám špatně při testování jestli hodnoty existují?
<?php
session_start();
$posledni_stranka = 1;
if (!$_POST) {
$stranka = 0;
$registrace = array();
} else {
$stranka = intval($_POST["stranka"]);
$form_id = (isset($_POST["form_id"]) ? intval($_POST["form_id"]) : count($_SESSION["registrace"]));
$registrace = &$_SESSION["registrace"][$form_id];
$chyba = "";
// uložení vyplněných hodnot
foreach ($_POST as $key => $val) {
if ($key != "form_id" && $key != "zpet" && $key != "stranka") {
$registrace[$key] = $val;
}
}
if ($_POST["zpet"]) {
$stranka--;
} else {
// kontrola vyplněných hodnot
switch ($stranka) {
case 1:
if (!check_email($_POST["email"])) {
$chyba .= "Vyplňte prosím e-mail.\n";
}
if (!$chyba && !mysql_query("INSERT INTO uzivatele (jmeno, email) VALUES ('" . mysql_real_escape_string($registrace["jmeno"]) . "', '" . mysql_real_escape_string($registrace["email"]) . "')")) {
$chyba = "Data se nepodařilo uložit.";
}
if (!$chyba) {
header("Location: ok.php");
exit;
}
break;
}
if (!$chyba) {
$stranka++;
}
}
}
// vypsání formuláře
echo "<form action='' method='post'>\n";
if ($_POST) {
echo "<input type='hidden' name='form_id' value='$form_id' />\n";
echo "<input type='hidden' name='stranka' value='$stranka' />\n";
if ($chyba) {
echo "<p>$chyba</p>\n";
}
}
switch ($stranka) {
case 0:
echo 'pole1: <input name="textove_pole1" value="' . htmlspecialchars($registrace["textove_pole1"]) . '" />';
echo 'pole2: <input name="textove_pole2" value="' . htmlspecialchars($registrace["textove_pole2"]) . '" />';
break;
case 1:
if (isset($_SESSION[$registrace["textove_pole1"]]) || isset($_SESSION[$registrace["textove_pole2"]])) {
echo "existuje minimalne jedna z techto hodnot - vypisu formular";
}
else {
echo "neexistuje ani jedna promenna";
}
break;
}
echo "\n<input type='submit' value='" . ($stranka < $posledni_stranka ? "Další" : "Dokončit") . "' />\n";
if ($stranka) {
echo "\n<input type='submit' name='zpet' value='Zpět' />\n";
}
echo "Strana: " . ($stranka + 1) . "/" . ($posledni_stranka + 1) . "\n";
echo "</form>\n";
?>
|
||
| Alphard Profil |
#6 · Zasláno: 16. 4. 2011, 11:15:17
Zkuste tohle, je tam na začátku reference, moc se mi to nechce číst celé, se dál děje :-) Jestli to nepůjde, tak
print_r($_SESSION); a podívat se, jak to vypadá.
if (isset($registrace["textove_pole1"]) || isset($registrace["textove_pole2"])) |
||
| gerix Profil |
#7 · Zasláno: 16. 4. 2011, 11:21:36 · Upravil/a: gerix
Alphard:
> Zkuste tohle, je tam na začátku reference, moc se mi to nechce číst celé, se dál děje :-) Jestli to nepůjde, tak print_r($_SESSION); a podívat se, jak to vypadá. > if (isset($registrace["textove_pole1"]) || isset($registrace["textove_pole2"])) píše to, že existustují hodnoty a to v obou případech(vyplněno, nevyplněno). Vyplněno: Array ( [registrace] => Array ( [0] => Array ( [textove_pole1] => y [textove_pole2] => x ) ) ) Nevyplněno: Array ( [registrace] => Array ( [0] => Array ( [textove_pole1] => [textove_pole2] => ) ) ) |
||
| Alphard Profil |
#8 · Zasláno: 16. 4. 2011, 11:26:14
|
||
| gerix Profil |
#9 · Zasláno: 16. 4. 2011, 11:36:47
s funkcí empty() to už funguje. Jěště bych měl jednu otázku.
V případě, že nezadám žadnou hodnotu vypíše to, že neexistuje V případě, že zadám obě hodnoty vypíše to, že existuje a teď problém: V případě, že zadám jen jednu hodnotu vypíše to že neexistuje - jde tohle nějak ošetřit aby stačila jen jedna hodnota?
if (empty($registrace["textove_pole1"]) || empty($registrace["textove_pole2"])) {
echo "neexistuje ani jedna promenna";
}
else {
echo "existuje minimalne jedna z techto hodnot - vypisu formular";
}
|
||
| panther Profil |
#10 · Zasláno: 16. 4. 2011, 11:38:13 · Upravil/a: panther
gerix:
if (empty($registrace["textove_pole1"]) && empty($registrace["textove_pole2"])) {
echo "neexistuje ani jedna promenna";
} else {
echo "existuje minimalne jedna z techto hodnot - vypisu formular";
} |
||
| gerix Profil |
#11 · Zasláno: 16. 4. 2011, 11:41:03
Díky moc:) Teď vše funguje jak má.
|
||
|
Časová prodleva: 15 let
|
|||
0