Nejste přihlášeni
Stránky 1
Téma uzavřeno
Chtěl bych se zeptat, nejde mi vyhledávání v db tabulce mySQL, nikdy nenajde záznam,
přitom na mém ComplexWebServeru funguje vyhledávání jak má.
Měl by pro mě někdo radu? Jsem začátečník. web rastr.hys.cz
Offline
1, nejde vidět reklama endory na vašem webu, tedy, nejde přečíst, když už jí najdu
2, málo informací o problému co takhle napsat sql dotaz, název databáze a kousek scriptu?
Offline
část PHP (bez připojení)je to na "hledej_form":
mysql_query("SET NAMES 'cp1250'") or die('Could not set names');
# vyhledání záznamů splňujících vyhledávací kritéria
$query = mysql_query(sprintf("SELECT id, name, telephone FROM details WHERE id='".$hled_id."'"));
if (mysql_num_rows($query) == 0) {
printf("Žádné záznamy nesplňují vyhledávací kritéria!");
}
else {
while (list($id, $name, $telephone) = mysql_fetch_row($query))
printf("%s %s (<B>%s</B>)<BR>\n", $id, $name, $telephone);
}
printf("<A HREF=\"hledej_form.html\">Hledej znovu</A>");
# ukončení práce s databází
mysql_close();
?>
ještě form:
<FORM ACTION="hledej.php" METHOD="post">
Hledané ID : <INPUT TYPE="text" NAME="hled_id"><BR>
<INPUT TYPE="submit" VALUE="Odeslat">
</FORM>
hledané id je 110110 nebo 111222
kód je zkopírovaný a upravený, vím, že funguje.
Offline
Ako na to pozerám tak mi nieje jasné prečo v dotaze mysql_query máte sprintf ktorý i tak nieje podľa inštrukcií danej funkcie nieje napísaný správne. Podľa mňa úplne zbytočné v dotaze na databázu. Ďalej funkcia
while
nemá označený začiatok ani koniec príslušnými zátvorkami { } a keďže daný príkaz printf ktorý by to mal pravdepodobne vypísať je až v ďalšom riadku tak sa nezahŕňa do opakovačky while. A ďalej keď hľadáte podľa ID (auto_increment) tak výsledok bude iba jeden, potom nieje zapotreby použiť opakovačku while.
Offline
kopíroval jsem z původního. Kód mám bez sprintf, ale nenajde to na Endoře stejně žádný záznam,
while nevím, to jsem tam nechal, printf vypisuje, fakt je, že musí zobrazit jeden záznam. id je název sloupce jedinečná hodnota. Mohl by být problém v jiném PHP u mě a na Endoře? Berte tento dotaz od začátečníka s rezervou. Mohli by jste mi navrhout úpravu php konkretně vynechat while ? Díky za pomoc.
Offline
Skús takto:
$result = @mysql_query("SELECT id, name, telephone FROM details WHERE id='".$hled_id."' ");
if (@mysql_num_rows($result) == 1) {
list($id, $name, $telephone) = mysql_fetch_row($result);
printf("%s %s (<B>%s</B>)<BR>\n", $id, $name, $telephone);
} else {
printf("Záznam nenalezen!");
}
možno to robí vynechaný znak @ pred dotazom na databázu
Prípadne na začiatok doplň:
$hled_id = $_GET['hled_id'];
prípadne:
$hled_id = $_POST['hled_id'];
ak to posielaš cez POST
Offline
$hled_id = $_POST['hled_id']; to bylo ono díky,díky,díky - chodí jak má !!!
Offline
Stránky 1
Téma uzavřeno