Autor Zpráva
Dave-
Profil *
Ahoj, mám potíže s následujícím skiptem :


$count=substr_count($row['numb'], "&");

$ex=explode("&", $row['numb']);
for ($i=0; $i<=$count; $i++)
{

$sql="SELECT * FROM user WHERE id='{$ex[$i]}'";
$result=mysql_query($sql);
while ($radek=mysql_fetch_array($result))
{
echo $radek['jmeno'].'-';

}
}


V $row['numb'] jsou uložená čísla rozdělená &. Ty pomocí explode rozdělím a tahám z db info o uživatelích, jejichž id se nachází v $ex[$i]. Toto funguje bez potíží. Problém nastává při změně sql dotazu na WHERE id!='{$ex[$i]}'";

Toto vypíše uživatele jejichž info není v $ex[$i], bohužel ne pouze jednou, ale tolikrát, kolik je $count.

Příklad: v $ex[$i] je id uživatelů Pepa a Honza. Při použití prvního se vypíše Pepa - Honza.
V db jsou ještě uživatelé Václav a Jirka, ty chci vypsat v druhém sql dotazu, dopadne to ale takto: Václav-Jirka-Václav-Jirka.

Já však potřebuju vypsat info pouze jednou. Díky
bukaj
Profil
Dave-
Zbytečné plýtvání dotazy na databázi. Vygeneruj pouze jeden dotaz:

$ex=explode("&", $row['numb']);
$rovnase = FALSE; //pokud se mají vybrat uživatelé odpovídající id TRUE jinak FALSE

foreach($exas $klic => $hodnota)
$ex[$klic] = 'id ' . ($rovnase ? '=' : '!=') . ' ' . (is_null($hodnota) ? '0' : $hodnota);

$sql = 'SELECT * FROM user WHERE ' . ($rovnase ? implode(' OR ', $idcka) : implode(' AND ', $idcka));
...
Dave-
Profil *
Diky, ale ja bych potreboval vybrat pouze ty zaznamy, kde idcko neni v db. Tohle vybira, pokud jsem ten kod dobre pochopil, vsechno. Kazdopadne je to pro me dost komplikovany, mohl bys mi to prosim zmenit jen pro ty urcite zaznamy?
Kajman_
Profil *
Zkuste & nahradit za čárku a použít
where id in (1,2,3)
where id not in (1,2,3)
Dave-
Profil *
Kajman_
Dík

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