Autor Zpráva
pechl
Profil *
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
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 *
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
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 *
AM:
Díky za vysvětlení.
Jednodušeji by to šlo, taky mi to mohlo dojít. Poučení pro příště. :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: