Vynechaný záznam při order by ID
14 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Mám zásadní problém, při selectu kombinovaném se řazením podle ID se mi nevypisuje jeden záznam (u vzestupného řazení první položka databáze, u sestupného řazení poslední položka databáze). Když nechám vypsat položky databáze v PHP adminu, objeví se informace "Zobrazeny záznamy 0 - 53 (54 celkem, Dotaz zabral 0.0012 sekund)". Něco mi říká, že by problém mohl být v rozdílu mezi uvedenými čísly 53 a 54. Předpokládám, že mám nějak doprasená ID, jenom nevím jak. Nesetkali jste se s tím? Pro doplnění uvádím přesné znění selectu: select *, DATE_FORMAT(Datum,'%d.%m.%Y') as Datum from novinky order by ID a vlastnosti sloupce ID v databázi: Typ: int(11) Nulový: Ne Extra: auto_increment sloupec je zároveň primárním klíčem i indexem
-
Tak tenhle dotaz jsem nepochopil. Ty soudíš, že ti chybí jeden záznam ve výpisu na základě téhle hlášky, kontrétně že 53 není rovno 54?: Zobrazeny záznamy 0 - 53 (54 celkem) Já nevím, ale když vypíšu záznamy číslo 0 až 53, tak jich vypíšu 54, tedy všechny. Když vypíšu záznamy 0 až 2 tak taky nevypíšu jen dva, ale tři (0, 1, 2).
-
Jo, ale když pomocí echa: while ($zaznam=MySQL_Fetch_Array($vysledek)): ?> <?echo $zaznam["Datum"]?> <?echo $zaznam["Novinka"]?><br><br> <? endwhile; ?> nechám vypsat vyselektované záznamy, tak jeden chybí.
-
Ten SQL dotaz je primitivní, není důvod, proč by tam jeden záznam chyběl. Tak už psal Tom, akorát se to počítá od nuly. Jestliže máš ID auto_increment, těžko je doprasíš. Pro jistotu si zobraz: echo mysql_num_rows($vysledek); A uvidíš, kolik řádků ti dotaz vrátil.
-
Zobrazí se správně číslo 54, takže bude spíš problém v tom výpisu přes echo, ale připadá mi to tak jednoduché, že si nedovedu představit, v čem může být chyba. V každém případě mi to v prohlížeči vypisuje jenom 53 záznamů, přestože by mělo 54.
-
Html "žere" některé znaky, třeba mezery, nebo tagy a tudíš je v prohlížeči neuvidíš. Pak je třeba se podívat do zdrojového kódu stránku (ve Firefoxu Ctrl + U).
-
Zkus zverejnit kod od selectu po konec while...
-
Je to takhle: mysql_select_db(SQL_DBNAME); $vysledek=mysql_query("select *, DATE_FORMAT(Datum,'%d.%m.%Y') as Datum from novinky order by ID"); $zaznam=mysql_fetch_array($vysledek); echo mysql_num_rows($vysledek); while ($zaznam=MySQL_Fetch_Array($vysledek)): ?> <?echo $zaznam["Datum"]?> <?echo $zaznam["Novinka"]?><br><br> <? endwhile; ?>
-
tohle vypada rozumne, az na to neustale zacinani a ukoncovani php.. a neni nejaky radek prazdny? (null, null) ? to bys nic nevidel, zkus to treba takto: while ($zaznam = mysql_fetch_array($vysledek)) { echo "-".$zaznam['datum']." - ".$zaznam['novinka']; } treba to pak bude jasne.
-
Zase to vyhodilo o jeden záznam míň. Dokonce jsem zkusil udělat novou tabulku se stejnými sloupci, ale pro přehlednost pouze se třemi záznamy. Výsledkem je, že mi to vypisuje počet záznamů v databázi: 3, ale samotný výpis záznamů zobrazí pouze dva z nich.
-
Pokud stále používáš tento skript, tak je to jasné: mysql_select_db(SQL_DBNAME); $vysledek=mysql_query("select *, DATE_FORMAT(Datum,'%d.%m.%Y') as Datum from novinky order by ID"); $zaznam=mysql_fetch_array($vysledek); +++TADY TO VYTAHNES, ALE NEZOBRAZIS+++KLIDNE TENTO RADEK SMAZ+++ echo mysql_num_rows($vysledek); while ($zaznam=MySQL_Fetch_Array($vysledek)): ?> <?echo $zaznam["Datum"]?> <?echo $zaznam["Novinka"]?><br><br>+++TADY PRIDEJ NEJAKY STATICKY TEXT, AT VIDIS I PRAZDNE RADKY+++ <? endwhile; ?>
-
Díky moc, už to funguje (zbi boduje). Poděkování samozřejmě patří všem.
-
ajo,toho jsem si nevsiml... :-)
-
On to totiž v prvním případě neuvedl, to se potom špatně hledá chyba ;) Jo, ale když pomocí echa: while ($zaznam=MySQL_Fetch_Array($vysledek)): ?> <?echo $zaznam["Datum"]?> <?echo $zaznam["Novinka"]?><br><br> <? endwhile; ?> nechám vypsat vyselektované záznamy, tak jeden chybí.