If abfrage einfügen
Hallo Gemeinschaft,
wie bekomme ich es hin, dass nur datensätze in das array geladen werden, dessen Anzahl grösser 0 ist
wie bekomme ich es hin, dass nur datensätze in das array geladen werden, dessen Anzahl grösser 0 ist
if (isset($_POST['Bestellen'])){
$articles = $_POST['article'];
foreach($articles as $article){
// echo "Artikel:" . $article['Name'] . "<br>";
//echo "Anzahl:" . $article['Anzahl'] . "<br>" ;
//echo '<p>=========</p>';
$orders_id = '222';
$art = $article['Name'];
$anz = $article['Anzahl'];
$sql = "INSERT INTO orders_products (orders_id, products_id, products_quantity) values ('$orders_id', '$art', '$anz')";
$mysqli->query($sql);
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 451696
Url: https://administrator.de/forum/if-abfrage-einfuegen-451696.html
Ausgedruckt am: 02.04.2025 um 00:04 Uhr
8 Kommentare
Neuester Kommentar
Hallo jensgebken,
Ich hab' mich unlängst begonnen mit PHP auseinander zu setzen und habe mir (auch bei $POST) genau die selbe Frage gestellt.
Die magische Antwort für mich war die Funktion EMPTY:
empty — Prüft, ob eine Variable einen Wert enthält
https://www.php.net/manual/de/function.empty.php
In deinem speziellen Fall würde ich dann schreiben (kein Anspruch auf Funktionalität
):
Damit sollte $art und $anz nur geschrieben werden wenn "Anzahl" zwar existiert (isset) allerdings keinen Wert enthält.
lG
Areanod
Ich hab' mich unlängst begonnen mit PHP auseinander zu setzen und habe mir (auch bei $POST) genau die selbe Frage gestellt.
Die magische Antwort für mich war die Funktion EMPTY:
empty — Prüft, ob eine Variable einen Wert enthält
https://www.php.net/manual/de/function.empty.php
In deinem speziellen Fall würde ich dann schreiben (kein Anspruch auf Funktionalität
if (isset($_POST['Bestellen'])){
$articles = $_POST['article'];
foreach($articles as $article){
// echo "Artikel:" . $article['Name'] . "<br>";
//echo "Anzahl:" . $article['Anzahl'] . "<br>" ;
//echo '<p>=========</p>';
if(!(empty($article['Anzahl'])){
$orders_id = '222';
$art = $article['Name'];
$anz = $article['Anzahl'];
}
$sql = "INSERT INTO orders_products (orders_id, products_id, products_quantity) values ('$orders_id', '$art', '$anz')";
$mysqli->query($sql);
}
Damit sollte $art und $anz nur geschrieben werden wenn "Anzahl" zwar existiert (isset) allerdings keinen Wert enthält.
lG
Areanod
Moin,
Bitte beschäftigt euch unbedingt mit sicherer PHP/SQL Programmierung. Ihr züchtet euch 1a Spam/Virenschleudern wenn ihr solchen Code verwendet, der für SQL Injektions und/oder XSS anfällig ist.
lg,
Slainte
/EDIT: Typos.
$articles = $_POST['article'];
foreach($articles as $article){
...
$art = $article['Name'];
$anz = $article['Anzahl'];
...
$sql = "INSERT INTO orders_products (orders_id, products_id, products_quantity) values ('$orders_id', '$art', '$anz')";
$mysqli->query($sql);
Bitte beschäftigt euch unbedingt mit sicherer PHP/SQL Programmierung. Ihr züchtet euch 1a Spam/Virenschleudern wenn ihr solchen Code verwendet, der für SQL Injektions und/oder XSS anfällig ist.
lg,
Slainte
/EDIT: Typos.
Ok - dir ist sicher bewusst das du da ne wunderbare art für SQL-Injections grad geschaffen hast?
Unabhängig davon - was meinst du mit "dessen anzahl grösser 0 ist"? Meinst du bei Anzahl? dann wräe ja z.B.
if ($anz>=0) .... dein Freund. Wobei ich noch gleich einige andere Dinge mit prüfen lassen würde:
-> Artikel Name -> Länge > 0 (oder direkt mit ner ID / GUID arbeiten, je nachdem wo die Daten herkommen...
-> $order_id: ich vermute das soll dein Primary Key sein? Dann würde ich den auf auto-increment setzen (oder ne GUID verwenden)
-> Anzahl: Grösser 0 und mit nem Preg-Match prüfen das es nur Zahlen, komma und/oder nen punkt enthält, ggf. 1000er Trennzeichen entfernen.
Unabhängig davon - was meinst du mit "dessen anzahl grösser 0 ist"? Meinst du bei Anzahl? dann wräe ja z.B.
if ($anz>=0) .... dein Freund. Wobei ich noch gleich einige andere Dinge mit prüfen lassen würde:
-> Artikel Name -> Länge > 0 (oder direkt mit ner ID / GUID arbeiten, je nachdem wo die Daten herkommen...
-> $order_id: ich vermute das soll dein Primary Key sein? Dann würde ich den auf auto-increment setzen (oder ne GUID verwenden)
-> Anzahl: Grösser 0 und mit nem Preg-Match prüfen das es nur Zahlen, komma und/oder nen punkt enthält, ggf. 1000er Trennzeichen entfernen.
Ganz einfach:
Variablen nicht einfach blind ins SQL-Statement einfügen sondern im Vorfeld validieren.
baue dir Funktionen oder ähnliches, um deine gefüllten Variablen erstmal auf falsche Zeichen zu prüfen.
https://www.google.com/searchq=SQL+Injection+PHP
Hier findest nu ne ganze Menge zu dem Thema...
Und hier noch etwas zum Schmunzeln:
Quelle: https://xkcd.com/327/
Gruß
em-pie