Autor | Zpráva | ||
---|---|---|---|
pechl Profil * |
#1 · Zasláno: 28. 12. 2010, 11:25:07
Prosím o radu, ve fóru jsem ji nenašel:
Při výpisu z MySQL se mi vypisuje v PHP (viz niže) násobný počet záznamů podle nastavení ORDER BY. Příklad: mám v DB tři záznamy, když dám výpis podle data, ten nejnovější se vypíše 3x, předchozí 2x a úvodní jednou. Po přidání čtvrtého záznamu se vše o jeden záznam posouvá (4x, 3x, 2x, 1x). Databáze je v pořádku, když dám stejný dotaz v phpMyAdminu, vše funguje správně. Co mám na skriptu špatně, resp. co mi tam chybí? Děkuji Petr <?php require_once('db.inc'); do { // Připojení k databázi. if (!OtevriDB()) break; $dnes = Date ("YmdHis"); $vysledek=mysql_query("SELECT *, UNIX_TIMESTAMP(datum) as datumcas FROM lide WHERE datum <= $dnes ORDER BY obor ASC ") or die("chyba"); while($zaznam=mysql_Fetch_array($vysledek, MYSQL_BOTH)) { $datum = strftime("%d.%m.%Y", $zaznam["datumcas"]); $data .= $datum."\n"; $data .= $zaznam["obor"]."\n"; $data .= $zaznam["jmeno"]."\n"; $data .= $zaznam["prijmeni"]."\n"; $data .= $zaznam["misto"]."<br />\n"; echo $data; } mysql_free_result($vysledek); mysql_close(); } while (false); ?> |
||
ninja Profil |
#2 · Zasláno: 28. 12. 2010, 11:29:36
while($zaznam=mysql_Fetch_array($vysledek, MYSQL_BOTH)) { $data = ''; $datum = strftime("%d.%m.%Y", $zaznam["datumcas"]); $data .= $datum."\n"; $data .= $zaznam["obor"]."\n"; $data .= $zaznam["jmeno"]."\n"; $data .= $zaznam["prijmeni"]."\n"; $data .= $zaznam["misto"]."<br />\n"; echo $data; } |
||
pechl Profil * |
#3 · Zasláno: 28. 12. 2010, 11:46:59
ninja:
Děkuji, to je ono. Jenom mi není jasné, proč ten prázdný zápis? Ještě jsem se s tím nesetkal. |
||
AM_ Profil |
#4 · Zasláno: 28. 12. 2010, 11:50:45
podívej se co ten skript dělá: přidá do $data řádek a vypíše $data. přidá do $data řádek (teď jsou tam dva) a vypíše $data. a tak dále. proměnnou "data" musíš buď tedy po každém průchodu vymazat, nebo vypsat až na konci celého cyklu.
Mimochodem, nebylo by to jednodušší takhle? while($zaznam=mysql_Fetch_array($vysledek, MYSQL_BOTH)) { $datum = strftime("%d.%m.%Y", $zaznam["datumcas"]); echo $datum."\n"; echo $zaznam["obor"]."\n"; a na pomocnou proměnnou $data se vykašlat, podle mě tam na nic není. |
||
pechl Profil * |
#5 · Zasláno: 28. 12. 2010, 12:15:38
AM:
Díky za vysvětlení. Jednodušeji by to šlo, taky mi to mohlo dojít. Poučení pro příště. :-) |
||
Časová prodleva: 13 let
|
0