| Autor | Zpráva | ||
|---|---|---|---|
| luma64 Profil |
#1 · Zasláno: 31. 8. 2022, 13:11:12
Pozdravujem ! Mám selekt nad tabuľkou import, z nej si načítam pre id z riadka hodnotu dodavico. Načítaným dodavico prechádzam tabulku dodavatel. Ak taký dodávateľ s dodavico neexistuje chcem ho vypísať. Ale pri každom riadku z tabuľky import sa dodavico z tabuľky dodavatel zobrazí ako existujúci, čo v mojom prípade nie je pravda. Kde pls robím chybu v cykle ? Ďakujem !
$stmt2 = $pdo->prepare("SELECT id, dodavico FROM import order by id");
$stmt2->execute();
if ($stmt2)
{
echo "<table class = 'import'>";
foreach ($stmt2 as $row2)
{
$dodavico = '';
$id = $row2['id'];
$dodavico = $row2['dodavico'];
$stmtdod = $pdo->prepare("SELECT id as id_dodavico FROM dodavatel where dodavico = :dodavico and platny= 'A' and objmodul = '2' Limit 1");
$stmtdod->bindValue(':dodavico', $dodavico);
$stmtdod->execute();
if ($stmtdod)
{
foreach ($stmtdod as $rowdod)
{
$id_dodavico = $rowdod['id_dodavico'];
}
if( $id_dodavico == null || !is_numeric( $id_dodavico ) || $id_dodavico == '' )
{
echo "<td style='width:2%'>No exist: id: $id // dodavico: $id_dodavico</td>";
}
else
{
echo "<td style='width:2%'>Exist: id: $id // dodavico: $id_dodavico</td>";
}
}
}
} |
||
| Keeehi Profil |
Rychlá oprava je nastavit
$id_dodavico = null; před tím foreachem.
Lepší by bylo se na ten foreach vykašlat (cyklus stejně nepotřebuješ když je maximálně jeden záznam) a tu podmínku předělat na to, aby se rozhodovala podle počtu záznamů. Úplně nejlepší by bylo použít jen jeden dotaz a tu informaci o existenci/neexistenci záznamu v druhé tabulce si tam přes left join přidat. Výrazně to pomůže databázi jelikož jí pošleš sice složitější ale jen jeden dotaz oproti současnému stavu, kde je to 1 + N za každého dodavatele. |
||
|
Časová prodleva: 4 roky
|
|||
0