Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Formista valitut rivit toiseen tauluun

mmikko [26.01.2015 21:02:51]

#

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?

Metabolix [26.01.2015 21:18:54]

#

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);

mmikko [27.01.2015 07:47:59]

#

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.

Metabolix [27.01.2015 10:26:32]

#

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.

mmikko [01.02.2015 13:40:04]

#

Kiitos, tämähän toimi :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta