Zdravím a prosím o radu.
Chci vytvořit vícerozměrné pole, jehož prvky chci později vypsat a nevím si s tím rady.
Chtěl bych aby pole vypadalo nějak takto:
pole(měsíc=>info, info2, info3 ..., únor=> .....)
Takto se snažím do pole načíst proměnné a hned ho vyvolat (pozn. měsíc se mění (pozn.: po doběhnutí while se měsíc změní na následující):
$podminka2=0;
while ($podminka2<18)
{
$pole[$mesic][$podminka2]="$podminka2";
echo"$pole_vydaje_ostatni_popis[$mesic][$podminka2]";
$podminka2++;
}
Děkuji Vám
$pole=array('leden' => array('info','info2','info3'), 'únor' => array('info','info2','info3'));
viz http://cz2.php.net/manual/en/language.types.array.php
Dekuju za radu, poté se mi podařilo vícerozměrné pole vytvořit a vypsat údaje, které potřebuji. Vypíše to ale jenom ve WHILE, jakmile dám pole jinam, údaje zapomene:
while ($vypis=mysql_fetch_array($mysql_prijem_go))
{
$pole=array($podminka => array("".$vypis['vydaje_ostatni_popis1'].", ".$vypis['vydaje_ostatni_popis2'].""));
echo $pole[0][0]; echo"<br>";
};
$podminka++;
}
Děkuji
<HTML>Variable scoping? To je někde hned na začátku popisu jazyka PHP, aspoň podle manuálu. A stále mi uniká smysl toho snažení.</HTML>
morca: Problém je spíš to, že výsledkem tvého while (uvedeného) je pouze pole s jedním prvkem (který je obsahuje jeden prvek - string) -- v cyklu while totoiž nezvyšuješ $podminka - až někde za ním.
Ten text, který máš v parametru array, totiž nevytvoří 2 prvky, ale jenom jeden. Mimochodem máš tam nějak moc závorek.
Upravil bych to takto:
while ($vypis=mysql_fetch_array($mysql_prijem_go))
{
$pole=array($podminka => array($vypis['vydaje_ostatni_popis1'], $vypis['vydaje_ostatni_popis2']));
$podminka++;
}
print_r($pole);
Druhou možností zapomínání dat/proměnných je jejich deklarace ve funkcích - pokud proměnnou vytvoříš v jedné funkci, tak v ostatních (ani ve zbytku skriptu) se k ní nedostaneš (pokud ji nějakým způsobem nepředáš -- global, nebo jako parametr apod..). Více jak píše Nípal .. variable scope.
omlouvám se, nepřiložil jsem celý kod, napravuji. V odpovědi Nípalov, má představa je taková, že chci uložit náklady za každý měsíc k danému měsíci do pole a tyto náklady později vyvolávat.
Pole jak jsem ho napsal obsahuje správně všech 12 měsíců a správně náklady k danému měsíci. To ale pouze ve while (viz. níže). Jakmile je přesunu tam kam chci, data zapomenou.
if ($akce=="prijem_vydej")
{
$mesic_pole=array("leden","unor","brezen","duben","kveten","cerven","cervenec","srpen","zari","rijen","listopad","prosinec");
// příjem výdej - načtení příjmů a výdejů do proměnných
$podminka=0;
while ($podminka<12)
{$mesic=$mesic_pole[$podminka];
$link=mysql_connect($host, $user, $pw) or die; ("NESLO PROVÉST");
$db=mysql_select_db($databaze,$link) or die ("NESLO PROVÉST");
$mysql_prijem="SELECT*FROM stavy WHERE rok_mesic='$rok-$mesic'";
$mysql_prijem_go=mysql_query($mysql_prijem,$link);
while ($vypis=mysql_fetch_array($mysql_prijem_go))
{
$pole=array($podminka => array("".$vypis['vydaje_ostatni_popis1'].", ".$vypis['vydaje_ostatni_popis2'].", ".$vypis['vydaje_ostatni_popis3'].", ".$vypis['vydaje_ostatni_popis4'].", ".$vypis['vydaje_ostatni_popis5'].", ".$vypis['vydaje_ostatni_popis6'].", ".$vypis['vydaje_ostatni_popis7'].", ".$vypis['vydaje_ostatni_popis8'].", ".$vypis['vydaje_ostatni_popis9'].", ".$vypis['vydaje_ostatni_popis10'].", ".$vypis['vydaje_ostatni_popis11'].", ".$vypis['vydaje_ostatni_popis12'].", ".$vypis['vydaje_ostatni_popis13'].", ".$vypis['vydaje_ostatni_popis14'].", ".$vypis['vydaje_ostatni_popis15'].", ".$vypis['vydaje_ostatni_popis16'].", ".$vypis['vydaje_ostatni_popis17'].", ".$vypis['vydaje_ostatni_popis18'].""));
echo $pole[0][0];echo"<br>";
};
$podminka++;
}
Moc děkuji za pomoc
k databazi se pripojujeme jednou, ne porad dokola
$pole zaprve existuje jenom ve while, zadruhe ho v kazde iteraci toho cyklu zahodis a vytvoris znovu
dal nechapu, proc to z databaze nevytahnes jednim dotazem
a vubec je to cely necitelny, zbytecne slozity a naprosto se z toho neda pochopit, co to ma delat
toto $vypis['vydaje_ostatni_popis1'].", .$vypis['vydaje_ostatni_popis2']. vypada, ze je spatne i tabulka v db
Máš to celé zmatené. Doporučil bych ti to udělat celé znova.
Vícekrát se připojuješ k db (stačí jednou), šlo by to provést na jeden sql dotaz a rozdělit podle měsíců až v php.
V druhém cyklu while nastavuješ pokaždé stejnou proměnnou - tedy ve výsledku v ní zůstane uložený pouze poslední průchod. Pro přidání prvku do pole použij zápis $arr[] nebo array_push($arr,'hodnota');