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: 2 roky
|
0