Több elem feltöltése sql adatbázisba.

Több elem feltöltése sql adatbázisba.
2018-07-17T09:57:16+02:00
2018-07-17T11:09:09+02:00
2022-10-15T21:36:21+02:00
Browni95
Sziasztok!

Olyan problémám lenne, hogy szimpla sort feltudok tölteni. Viszont amire szükségem van, hogy kilistázott adatokból checkboxxal kiválasztott elemeket feltöltsek egy másik táblába, amit megpótolok pár input mezővel is.

Sajnos mindig csak az utolsó elemet tölti fel, a checkboxxal meg egyáltalán nem boldogulok, hogy miként "szelektál".

Illetve ami még kérdésem, hogy a lentebbi kilistázásba más táblából, hogy tudok bele rakni adatot?

echo "<td class="border text-center"> <select class="form-control form-control-sm\ name="kats"> <option>Kategória</option>
Ezt a sort kellene úgy megoldanom, hogy más táblából jöjjenek a már ott letárolt kategória nevek.
Elnézést a sok kérdésért, megpróbáltam összegyűjteni, hogy milyen problémákba ütköztem és ezekre megoldást találni.

<?php $servername = "localhost"; $username = "root"; $password = "root"; $dbname = "mete"; $conn = new mysqli($servername, $username, $password,$dbname); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } echo "Connected successfully"; ?> <html> <head> <meta charset="utf-8"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css"> <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> </head> <body> <?php ?> <form method="POST" action=""> <table class="form-group" id="main"> <tr> <input type="submit" id="submit" value="Métely" name="up"> <td class="border text-center"> Ár </td> <td class="border text-center"> Gycikkszam </td> <td class="border text-center"> Ean </td> <td class="border text-center"> Cikkcsoportkod </td> <td class="border text-center"> leiras </td> <td class="border text-center"> kepek </td> <td class="border text-center"> cikkszám </td> <td class="border text-center"> gyarto </td> <td class="border text-center"> cikknev </td> <td class="border text-center"> kategoria </td> <td class="border text-center"> garancia </td> <td class="border text-center"> tömeg </td> <td class="border text-center"> X </td> <td class="border text-center"> Y </td> <td class="border text-center"> Z </td> <td class="border text-center"> statusz </td> <td class="border text-center"> Megjegy </td> <?php include "kapcsolat.php"; include "feltolt.php"; $sql = "SELECT * FROM asd"; $result = $conn->query($sql); if ($result->num_rows > 0) { while($r = $result->fetch_assoc()) { { echo "<div class="container-fluid clearfix form-group">"; echo "<tr class="border text-center">"; echo "<td class="border" name="ar">".$r['ar']."</td>"; echo "<td class="border" name="mgyarto">".$r['gycikkszam']."</td>"; echo "<td class="border" name="mgyarto">".$r['ean']."</td>"; echo "<td class="border" name="mgyarto">".$r['cikkcsoportkod']."</td>"; echo "<td class="border" name="mgyarto">".$r['leiras']."</td>"; echo "<td class="border" name="mgyarto">".$r['kepek']."</td>"; echo "<td class="border"><textarea id="cikkszam" name="cikkszam">".$r['cikkszam']."</textarea></td>"; echo "<td class="border text-center"> <select name="gyart" class="form-control form-control-sm"> <option value="Márka">Márka</option> </select></td>"; echo "<td class="border"><textarea name="cikknev">".$r['cikknev']."</textarea></td>"; echo "<td class="border text-center"> <select name="kateg" class="form-control form-control-sm"> <option value="Kategória">Kategória</option> </select></td>"; echo "<td class="border"><textarea name="garancia">".$r['garancia']."</textarea></td>"; echo "<td class="border text-center"><input type="text" name="tomeg" placeholder="Tömeg">"; echo "<td class="border text-center"><input type="text" name="x" placeholder="X-méret"></td>"; echo "<td class="border text-center"><input type="text" name="y" placeholder="Y-méret"></td>"; echo "<td class="border text-center"><input type="text" name="z" placeholder="Z-méret"></td>"; echo "<td class="border text-center" class="border text-center p-2"> <select class="form-control form-control-sm" name="stat"> <option value="1">Feltöltés</option> <option value="2">Kihagy</option> <option value="3">Későbbre halasztás</option> <option value="4">Töröl</option> </select> </td>"; echo "<td class="border text-center"><input type="text" placeholder="Megjegyzés" name="megjegy" ></td>"; echo "</tr>"; echo "</div>"; }} } else { echo "0 results"; } $result=mysqli_query($conn,"SELECT * FROM asd"); while($row=mysqli_fetch_array($result)){ $ids = $row['id']; $as = $row['ar']; $bs = $row['gycikkszam']; $cs = $row['ean']; $ds = $row['cikkcsoportkod']; $es = $row['leiras']; $fs = $row['kepek']; if(isset($_POST['up'])) { $sql = "INSERT INTO feltolt(ar,gycikkszam,ean,cikkcsoportkod,leiras,kep) VALUES ('{$as}','{$bs}','{$cs}','{$ds}','{$es}','{$fs}')"; $gs =$_POST["cikkszam"]; $hs =$_POST["cikknev"]; $is =$_POST["garancia"]; $js =$_POST["stat"]; $ks =$_POST["gyart"]; $ls =$_POST["kateg"]; $ms =$_POST["tomeg"]; $nes =$_POST["x"]; $nos =$_POST["y"]; $nas =$_POST["z"]; $nis =$_POST["megjegy"]; $uj=new feltolt('{$gs}','{$hs}','{$is}','{$js}','{$ks}','{$ls}','{$ms}','{$nes}','{$nos}','{$nas}','{$nis}'); $uj->beszur(); if ($conn->query($sql) === TRUE) { } else { echo "Error: <br>" ; } }} ?> </tr> </table> </form> </body> </html>
Mutasd a teljes hozzászólást!

  • Szia!
    Előbb egy tanács, mivel minden program négy fontos dolgot csinálhat meg, bevitel, műveletvégzés, tárolás, megjelenítés, ezért ezeket érdemes elszeparálni. 
    A megjelenítést érdemes tovább bontani, az adatok előkészítésére, és a tényleges megjelenítésre. Bár az adatok előkészítése néha inkább a műveletvégzés körébe értendő.
    Nálad van egy php és egy html blokk. Javaslom, hogy a php blokkban végezz el mindent, amit a megjelenítésen kívül csinál a programod.
    A html blokkkban már csak annyi php utasítás legyen, ami a megjelenítéshez kell, vagyis ott már csak if meg foreach meg print/echo legyen.
    A checkbox-os kérdést egyelőre hagyjuk, de a kategória listázást én az alábbi módon csinálnám:
    1. az include-okat feltenném a php blokk legelejére.
    2. az adatbázis csatlakozás után, de még a php blokkban:

    $kategoriakResult = $conn->query("select id, kategoria from kategoriak order by kategoria"); $katOptions = ""; while($r = $kategoriakResult->fetch_assoc()) { $katOptions .= "<option value='".$r['id']."'>".$r['kategoria']."</option>"; }
    Nyilván a Te táblád alapján át kell írni a scriptet.
    3.  a html blokkban

    echo ' <td class="border text-center"> <select name="kateg" class="form-control form-control-sm"> '.$katOptions.' </select> </td>';
    Itt figyelj, hogy ' vagy " szeparátor van, meg tudja zavarni az embert.

    Lenne még egy javaslatom, áttekinthetőbbé teszi ezt a fajta kódot, ha a html-t nem a php-val írod ki, hanem simán.

    ?> <td class="border text-center"> <select name="kateg" class="form-control form-control-sm"> <?php print $katOptions;?> </select> </td> <?php
    Így kapásból látod a html hibákat is.
    Mutasd a teljes hozzászólást!
  • Mindjárt megnézem az ötleteidet, viszont most azért van minden besűrítve egy file-ba, mert "kicsibe" szoktam próbálkozni és ha ott megy, akkor beépítem a teljes kódba. Ott már külön vannak szeparálva a dolgok.

    A htmles dolgot nem igazán értem. És a checkbox sajnos nagyon égető lenne a feltöltéssel együtt :/
    Mutasd a teljes hozzászólást!
  • A checkbox sem ördögtől való. Ha ugyanazzal a névvel felteszel többet a formodra, akkor tömbként jelenik meg a requestben. Annyi még a trükk, hogy meg kell adni a value-nak egyedi értékeket.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd