Autor Zpráva
Miraňák
Profil *
zdravím,
vyskytl se mi Warning: Invalid argument supplied for foreach() in

při tomhle kodu

if ($_SESSION[produkty]) 
{ 
foreach ($_SESSION[produkty] as $vypis) 
{ 
echo $vypis;
} 
} 


nevíte jak by to mělo být správně.. pokud mám v tom session několik hodnot najednou .. poradte prosím :P
Kalby
Profil
no tak asi session produkty neni pole ale jenom jedna hodnota, zkus si ji vypsat pomoci print_r
Miraňák
Profil *
http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=74 850
právě taji mi jeden poradil toto ale když to vypíšu zobrazi se jen jedno array ale když udělám toto

$_SESSION['neco'] = array (1, 2, 3, 17);

foreach ($_SESSION['neco'] as $v) {
   print "Současná hodnota: $v.\n";
}


tak to normálně funguje
Jan Tvrdík
Profil
if ($_SESSION["produkty"]) 
{ 
foreach ($_SESSION[produkty] as $vypis) 
{ 
echo $vypis;
} 
} 
Ssob
Profil
Jan Tvrdík
Uvozovky nejsou nutne, spis dobry zvyk.

Miraňák
Zkus:
if (is_array($_SESSION['produkty']))
{ 
    foreach ($_SESSION['produkty'] as $vypis) 
   {
      echo $vypis;
   }
}
else
   print 'Produkty nejsou pole';
souki
Profil
Ssob
uvozovky jsou nutné. Jinak se dosazuje konstanta
Ssob
Profil
souki
Mas pravdu. V pripade, ze konstanta neni definovana prevede se na string a vyhodi varovani (takze v jeho pripade by to mohlo fungovat). Rekl bych, ze to je nejake blbu-vzdorna vymozenost php.

Hezky to ilustruje pripklad:
print KONSTANTA; // napise KONSTANTA
define("KONSTANTA", "XXX");
print KONSTANTA; // napise XXX
krteczek
Profil
Já bych to napsal nějak takhle:
function getProdukty($var)
{
	$txt = '';
	if(!empty($var))
	{
		if (is_array($var))
		{ 
			foreach ($var as $vypis) 
			{
				$txt .= '<br>' . $vypis;
			}
			return $txt;
		}
		else
		{
   			trigger_error('Produkty nejsou pole', E_USER_ERROR);
   		}
	}
}
if(!empty($_SESSION["produkty"])) 
{ 
	echo getProdukty($_SESSION["produkty"]);
} 

jen inkludnu někde funkci a mám ji dostupnou v celé aplikaci. změny provedu na jednom místě
mikin.cz
Profil *
Dobré vysvětlení výskytu chyby "Warning: Invalid argument supplied for foreach() in ..." naleznete zde.
residentcz
Profil
Ahojte nevíte někdo proč mi to píše tento error ?

Warning: Invalid argument supplied for foreach()

    $jevdatabazi = 0;  
    foreach ($_SESSION["kosik_pocet"] as $kod_s => $pocetKs_s) {
      $vysledek = mysql_query("SELECT * FROM sesion_kosik WHERE (email='$email' AND kosik_kod='$kod_s') ");
      while ($zaznam=MySQL_Fetch_Array($vysledek))
      { 
           $jevdatabazi = 1;  
      }
      if ($jevdatabazi==0) { 
        mysql_query("INSERT INTO sesion_kosik(kosik_kod, kosik_pocet, email) VALUES('$kod_s', '$pocetKs_s', '$email')");
      }
      else{
        mysql_query("UPDATE sesion_kosik SET kosik_pocet='$pocetKs_s' WHERE (email='$email' AND kosik_kod='$kod_s')");  
      }
    } 
Alphard
Profil
Protože nad proměnnou $_SESSION["kosik_pocet"] nelze iterovat. Když si vypíšete print_r($_SESSION["kosik_pocet"]);, zjistíte, co skutečně obsahuje.
residentcz
Profil
jasně už to funguje :) díky

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: