Heps!
Mulla on tavallinen formi, johon haetaan tietokannasta dataa. formi sisältää yhden checkboxin. Ajatuksena on, että submitin jälkeen katsotaan mitkä rivit on valittuna ja sitten haetaan sen perusteella dataa. jostain syystä tuo ei lähden nyt pelaamaan.
<input type="checkbox" name="valittu[]" value="<?php echo ($row["id"]); ?>"><br/>
<?php if (empty($_POST["valittu"])) { echo "Mitään ei ole valittu!"; } else { $id = $_POST["valittu"]; // tarkastetaan mitä arrayssa // print_r ($id); $qr = $yhteys->prepare("SELECT * FROM ottelut where id = ?"); $qr->execute(array($id)); while ($rivi = $qr->fetch()) { echo "<tr>"; echo "<td>" . htmlspecialchars($rivi["HomeTeam"]) . "</td>"; echo "<td>" . htmlspecialchars($rivi["AwayTeam"]) . "</td>"; echo "</tr>"; } }
arrayssa on oikeat id:eet. jos laitan suoraan tuohon kyselyyn id:numerot niin toimii kyllä. onko mulla aivan väärä lähestyminen tähän ongelmaan?
PDO ei pysty liittämään yhden kysymysmerkin paikalle kuin yhden arvon. (Eihän ole edes olemassa MySQL-ehtoa, joka olisi muotoa ”id = (taulukko)”.) Voit tehdä kyselyn näin:
$id_arr = [123, 456, 789]; $tmp = substr(str_repeat("?,", count($id_arr)), 0, -1); // "?,?,?" $q = $pdo->prepare("SELECT * FROM x WHERE id IN ( {$tmp} )"); $q->execute($id_arr);
ok, pitää kokeilla tuota, mutta kuvittelin tuohon olevan jokin maanläheisempi tapa.
kokeilin tehdä myös siten, että tuon checkboxin value="1" jos valittu, josko ne rivit sitten sais jotenkin toiseen tauluun liimattua insertillä. tarkotuksena on loppujen lopuksi siis tallentaa nuo valitut rivit toiseen tauluun. tuo esimerkki minkä kirjotin oli vähän pelkistetty.
HTML-koodilla ei ole mitään merkitystä sen suhteen, mitä PDO:lla saa tai ei saa tehtyä. Jos halutaan hakea monella arvolla samalla kertaa, tarvitaan monta kysymysmerkkiä. Jos halutaan lisätä monta riviä samalla kertaa, tarvitaan moniosainen INSERT-lause riittävillä kysymysmerkeillä. Molemmissa tapauksissa voi tietenkin käyttää myös yksittäistä kyselyä, jota ajetaan PHP:n puolelta silmukassa. Tiedon lisäämisessä silmukan käyttö voi olla helpompaa, hakemisessa usein vaikeampaa.
Kiitos, tämähän toimi :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.