Autor Zpráva
majster_sveta
Profil
takže - mám tento zdrojový kód

while ($zaznam=MySQL_Fetch_Array($vysledok))
{

?><div class="polozka">

<div class="popka"><div class="h1"><a href="polozka/<?php echo $zaznam["url"]; ?>"><?php
echo $zaznam["nazov"]."\n";?></a></div><div class="datum"><?php
echo "".date("j.n.Y", ($zaznam["datum"]))."\n";
?></div></div>

<?php
echo $zaznam["skratene"]."\n";?>
<div class="info"><?php

$kral=mysql_unbuffered_query("select nazov from kategorie where id='".$zaznam["kategoria"]."'");
$kralovna=MySQL_Fetch_Array($kral);

?> <a href="kategorie.php?kategoria=<?php echo $zaznam["kategoria"]; ?>"><?php echo $kralovna["nazov"]."\n";?></a><?php


?><span class="trvaly"><a href="polozka/<?php echo $zaznam["url"]; ?>">Trvalý odkaz</a></span>
</div>
</div>
<?php


}
vypíše sa jedna položka, a potom to napíše Warning: mysql_fetch_array(): 76 is not a valid MySQL result resource in C:\www\index.php on line 124 - ten riadok je ten úplne prvý v tomto kóde čo som sem dal

ak odstránim tučné riadky, všetko prebehne ako prebehnúť má, všetky položky sa z databáze vypíšu - mám nejaký matný dojem že robím chybu v tom že dávam databázový príkaz dovnútra while - preto som to dal do php
WertriK
Profil
Mno další select tam být může, dokonce tam může být i další while.

Chyba bude v tom, že v tom cyklu nějak zblbneš $vysledok, pokud říkáš že po odstraněni toho dalšího selectu vše funguje. Tak bych zkusil nahradit mysql_unbuffered_query obyčejným mysql_query což musí jít.
majster_sveta
Profil
ďakujem, po nahradení za obyčajné mysql_query ide všetko v poriadku - ešte raz ďakujem :-)
Kajman_
Profil *
Ale rozumnější je implementovat ten "nazev" přímo do předešlého dotazu.
majster_sveta
Profil
práveže ten predchádzajúci príkaz vyberá príspevky z databáze, kde je pri každom príspevku ID kategórie - a z toho id musím dostať názov je to toto
$vysledok=mysql_query("select * from prispevky order by datum desc");
a nechcel som robiť identifikáciu príspevkov priamo podľa názvu kategórie, lebo by sa muselo prenášať viac dát medzi databázou a php - a to by niekedy v ďalekej budúcnosti mohlo spomaliť aplikáciu (aj keď si tým nie som istý :-) )
djlj
Profil
majster_sveta
A jaký je problém udělat něco jako
SELECT prispevky.*,kategorie.nazov FROM prispevky INNER JOIN kategorie ON kategorie.id=prispevky.kategoria GROUP BY prispevky.id ORDER BY datum DESC
majster_sveta
Profil
však ale to sú už tak zložité príkazy, ktoré sa snáď naučím neskôr :-)
tiso
Profil
a nechcel som robiť identifikáciu príspevkov priamo podľa názvu kategórie, lebo by sa muselo prenášať viac dát medzi databázou a php

...hlavne že teraz je všetko v poriadku keď robíš 1+x dotazov na databázu (x je počet cyklov while)
...a to nerátam to stále escapovanie z/do PHP

Mal by si sa v budúcnosti zamerať na tieto veci a nie na to čo si písal, vôbec si neuvedomuješ kde strácaš čas...
majster_sveta
Profil
však ja prijmem každú radu - to prelínanie html a php je chybné v čom? a je horšie mať viac prikazov na databázu ako prenášať viac dát?

ja sa totiž zďaleka nepovažujem za nejakého skúseného php/mysql programátora, som obyčajný začiatočník a veľmi rád sa nechám poučiť od skúsenejších.
tiso
Profil
1. opustenie PHP - to má význam iba pre väčšie celky HTML kódu, vtedy sa vypíše HTML bez toho aby doň muselo PHP zasahovať... Pokiaľ na jednom riadku prejdeš z php do html a späť spolu 6x, tak je niekde chyba... Jedno echo a máš to skôr, dokonca prehladnejšie...
2. zložitejším dotazom vyriešiš posielanie rovnakého množstva dát ale na jeden dotaz (ak som to správne pochopil)... Dotazy do DB totiž tiež zaberajú nejaký čas, preto je snaha minimalizovať ich počet...
majster_sveta
Profil
dobre ďakujem, zariadim sa podľa toho
Toto téma je uzamčeno. Odpověď nelze zaslat.

0