Autor Zpráva
web2000
Profil *
Ahoj mám takový to propblém.

Přes formulář ověřuji zda textový řetězec (adresa) je již vložena v databázi, tudíž formulářovému políčku přiřadím name adresa, tuto proměnou se po té snažím porovnávat ve výběrovém dotazu.

Ale nevím jak dále vypsat hlášku: Adresa je již vložena a hlášku: Adresa vložena není.

Našla by se tu dobrá duše a pomohla mi dopsat zbytek kódu, díky.

url1 je údaj z databáze, který porovnávám. Teda snažím se o to:)

if ($ok) {
$sql = "SELECT * FROM zaznam WHERE url1 LIKE '$adresa'";
$vystup = mysql_query ($sql);

}
djlj
Profil
Nastav si na sloupec s adresou UNIQUE, na SELECT se vykašli a jen odchytávej chybu v mysql_error(). Pokud je chyba 1062, již je url vložena; pokud nevrací žádnou chybu, url byla právě vložena.
WertriK
Profil
if ($ok) {
$sql = "SELECT * FROM zaznam WHERE url1 LIKE '".$adresa."'";
$vystup = mysql_query ($sql);
$pocet = mysql_num_rows($vystup);

if ($pocet > 0) {
echo "Adresa je již vložena.";
} else {
echo "Adresa vložena není.";
}

}
bukaj
Profil
možná bych to trochu upravil:

//předpokládám, že pokud $ok == TRUE, tak je $adresa v platném formátu a oescapována
if($ok){
$overeni = mysql_query("SELECT COUNT(*) as `pocet` FROM `zaznam` WHERE `url1`='$adresa'");
if($overeni["pocet"] > 0){
echo "Adresa je již vložená.";
}else{
echo "Adresa vložená není.";
}
}
djlj
Profil
WertriK
Když už to řešit takto, tak COUNT(*)!
WertriK
Profil
djlj
Nevím co přesně myslíš, mužeš to trošku přiblížit ?
Jaký je problém v mysql_num_rows ?
Alphard
Profil
Jaký je problém v mysql_num_rows ?
databáze vrátí všechny záznamy, to je zbytečné a neefektivní, count vrátí jediné číslo
nightfish
Profil
aký je problém v mysql_num_rows ?
problém je v tom, že mezi mysql serverem a php aplikací se musí přenášet data všech vybraných řádků, což může být náročné na zdroje
a tudíž je lepší použít jenom count(*), které místo všech řádků vrátí jenom 1

EDIT: hmm, 3 sekundy

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:

0