

proměnné v php
Potřeboval bych takovou obskurní věc a nevím, jestli to jde - vložit proměnnou do proměnné... Asi bude lepší, když budu konkrétnější... Jde o tohle:
if ($data['time_0'] == "") {$mo0 = "nevysílá";} else {$mo0 = $data['time_0'];}
if ($data['time_15'] == "") {$mo15 = "nevysílá";} else {$mo15 = $data['time_15'];}
if ($data['time_30'] == "") {$mo30 = "nevysílá";} else {$mo30 = $data['time_30'];}
if ($data['time_45'] == "") {$mo45 = "nevysílá";} else {$mo45 = $data['time_45'];}
if ($data['time_100'] == "") {$mo100 = "nevysílá";} else {$mo100 = $data['time_100'];}
if ($data['time_115'] == "") {$mo115 = "nevysílá";} else {$mo115 = $data['time_115'];}
a tak dále... čísla 0,15,30,45,100,115... a tak dále reprezentují čas po čtvrthodinách (tedy 0:00,0:15,0:30,0:45,1:00,1:15 a tak dále... Musím do kódu vložit 24x4 řádky, nebo se to dá nějak obejít - například takhle:
$i = 0;
$j = 0;
$k = 0;
while ($k < 2400)
{
if ($data['time_($k)'] == "") {$mo($k) = "nevysílá";} else {$mo($k) = $data['time_($k)'];}
if ($i = 45) {$i = 0; $j = $j + 100} else {$i = $i + 15;}
$k = $i + $j;
}
Tedy lépe řečeno, takhle to nejde, ale s nějakou jinou syntaxí??? A nebo úplně jinak? Jestliže $data['time_COKOLIV'] == "", pak $moSTEJNÉ_COKOLIV = ... atd?
Díky za pomoc.
Zhlavy si nie som isty ale myslim ze sa to v php da (cokolvek z premennej dosadit aby to php interpretoval), ale schvalne nehladam ako presne, ptz to co robis mi pride ako katastrofa, lepsie komplet to prerobit a urobit to normalne (nepouzivat 24 roznych premennych namiesto jedneho normalneho pola).
Také nejsem žádný programátor - jak asi vidíš... Doporuč jednodušší postup, budu šťastný...
Nie je mi z toho co pises jasne ze co tym skriptom chces dosiahnut. Odkial mas tie $data[...]? Preco to moneco neurobis ako pole mo[0] az mo[23] ked uz tam chces mat tak divnu kopu premennych?
Potřebuji tabulku pro jeden den, pro čas po 15 minutách a v každém poli jiný údaj...
Takže chceš mít něco takového?
Pokud ano, tak bych si udělal pole o 96 prvcích (hodnoty x1, x2...) a v cyklu bych pak hledal opovídající hodnotu, ke každému času.
Dá sa to, stačí premenné vymeniť za session:
Edit:
Alebo jednoduchšie je vytvoriť pole:
Ostatné už vieš aj sám. Cyklus atď...
Edit 2:
Tvoj zápis je vlastne správny, len vymeň () za [] v druhom zápise pri názvoch premennej.
Edit 3:
Pole v PHP nemusí ísť od 0 do s krokom 1, kľudne môžeš použiť pole:
tak so session by som to nerobil urcite.
Ano to co pises v "Edit:" je priblizne to co chcel. Pole nemusi byt po 1 ale ak je po 15 tak je to neefektivne. Co urobi server ak nan pride milion poziadaviek naraz, ked to bude urobene nezmyselne neefektivne? Cele to pole a testovanie co tam robi mi pride nezmyselne, preto mu odporucam vsetko zmazat a najprv rozmyslat ze co chce robit a ako to bude robit (datove struktury), a az bude mat rozmysleny nejaky rozumny algoritmus a datove struktury, az potom programovat.
Rád bych si to rozmyslel, ale fakt jsem (navzdory věku) začátečník, sorry...
Potřebuji, aby výsledek na stránce byla tabulka se dnem rozděleným po čtvrthodinách od 00:00 do 23:45 a každé políčko v tabulce mělo jiný obsah, který určím a budu ho moci pomocí php co nejjednoduššeji aktualizovat... Skutečně nejsem žádný profesionální (a vlastně ani neprofesionální
) programátor, takže jsem se vydal kombinací logiky a toho mála co o php vím. Výsledkem je to, co jsem uvedl v tomhle dotazu, tedy věc, která (kupodivu) skutečně funguje, jen je zbytečně složitá a zhatěžující server... Budu vděčný za každou radu, jak to zjednodušit (jen prosím o výrazně polopatické vysvětlení, abych tu radu dokázal aplikovat).
Díky.
A odkial beries tie hodnoty co su v poli?
v podtstate staci ti jedno pole $mojepole[0] az $mojepole[95] kde budes mat nejake hodnoty. Testovat si to mozes potom pri vytvarani (html) tabulky, nepotrebujes zas dalsie pole, naco.
Ty hodnoty tam doplňuji manuálně prostřednictvím formuláře, který jsem si vyrobil...
Ale preco vytvaras take divne pole. Indexy pouzivaj ciselne nech sa s tym da normlane robit. Staci ti jedno pole napr. $mojepole, vytvaranie tabulky v HTML bude vyzerat potom zhruba takto
for ($i=0; $i<96; $i++)
{
echo nejake_html_bunky_tabulky
if ($mojepole[$i] == "")
echo "nevysílá";
else
echo $mojepole[$i];
echo nejake_html_uzavretie_bunky_tabulky
}
nepotrebujes dalsie pole $mo
P.S. ak su tie neciselne indexy z nejakeho dovodu (formular) nutne, tak namiesto $mojepole[$i] pis $data["time_$i"] a cyklus bude: for ($i=0; $i<2400; $i+=15)
Vytvářím to proto, že to jinak neumím...
ale fakt se snažím... díky za pomoc, jen trochu pomaleji, prosím... Nejprve k databázové tabulce - jak bych tedy měl pojmenovat ta pole? Momentálně to mám mo_0, mo_15, mo_30, mo_45, mo_100... a tak dále, tzn. 96 polí... mám to tak nechat, nebo co s tím?
pane boze, naco? ziadne mo_neco nepotrebujes. Citaj co pisem.
P.S. inac nemozes menit aj priamo to pole $data, napr.
if($data["time_$i"] == "") $data["time_$i"] = "nevysílá"
? Naco vytvarat 96 novych zbytocnych premennych?
Já ti (tomu) fakt nerozumím... jsi na ICQ? Netušil jsem, že se dá jednomu poli přiřadit víc hodnot...
Cez ICQ to za teba programovat nebudem. Mam svoju robotu. Tak to urob ako chces, mam pocit ale ze ti chybaju zaklady. Skus zacat na default.asp
To že chybějí základy je jisté, to nepopírám... Ale díky aspoň za odkaz...
Tak msx. ti uz napisal (v jeho prispevku po riadku "Edit:") ze ako urobit presne to na co si sa pytal, tak ked inac nevies tak to urob tak.
Samozrejme ze hodnotu premennej (prvku pola) mozes menit, od toho sa to predsa vola "premenna".
Zjednodušil jsem to podle návodu... a objevil se problém... Zobrazení té tabulky je v pořádku, ale nejdou do ní vkládat data prostřednictvím formuláře (manuálně přes mysqldumper ano). Syntaxi pro vkládání mám:
a hlásí mi to chybu:
V čem by mohl být problém?
Problém je v syntaxi SQL dopytu. Vyzerá to tak, že v premennej $time máš hodnotu '32' (aj s tými úvodzovkami).
Keď nevieš, čo je zle v SQL príkaze, tak najlepšie je, vypísať si ho pri ladení skriptu. Čiže v prípade chyby si vypíš obsah premennej $update a skontroluj si, čo tam vlastne máš.
Edit: Ako sa volá tabuľka a stĺpec v databáze, ktorého hodnotu chceš meniť? Pretože ten SQL príkaz nedáva zmysel.
Ad uvozovky - zdá se mi, že to mám správně, nikde by se žádné uvozovky neměly objevovat... Sloupec v databázi se jmenuje "32" - bez uvozovek
a hodnotu, která jeho název určuje, tedy proměnnou $time získávám ze vzorce $time = ($hours * 4) + $minutes + $i; Proměnné $hours a $minutes se zadávají do formuláře, hodiny mají hodnoty 0-23, minuty 0-3 (což reprezentuje 0,15,30 a 45 minut). Proměnná $i je tam proto, že někdy potřebuji vložit stejnou hodnotu $program do několika za sebou následujících polí... V principu jde o to, že potřebuji do tabulky vložit název televizního pořadu, který může trvat 15, nebo třeba 30,45 atd. minut...
EDIT:
Teď jsem zjistil, že to nahlášení chyby skutečně obsahuje uvozovky - to je pozůstatek toho, když jsem experimentoval a testoval jsem, jestli tam právě uvozovky být nemají... Nemají, protože i když jsem je dal pryč, chyba se vypíše stejná (jen ten výpis samozřejmě neobsahuje uvozovky kolem čísla 32)
Pre názvy tabuliek existujú nejaké obmedzenia. Keď chceš, aby názov tabuľky pozostával iba z čísel, musíš ho zapísať ako `32` prípadne "32" (ak je zapnuté ANSI_QUOTES).
Aha, díky za vysvětlení... upřímně řečeno, já jsem si myslel,k že to může být něco takového... proto se taky ta pole původně jmenovala "time_0" atd... viz začátek tohohle vlákna... jenže to mi pak zase nefungovala syntaxe $data["time_$i"] - tu proměnnou $i to prostě nebralo...
Už jsem to několikrát psal a rád to zopakuji - losi, jsi génius...
Ty obrácené apostrofy zafungovaly...