jensgebken
Goto Top

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


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

	}

Content-Key: 451696

Url: https://administrator.de/contentid/451696

Printed on: April 19, 2024 at 20:04 o'clock

Member: Thomas2
Thomas2 May 15, 2019 at 07:05:54 (UTC)
Goto Top
Hallo,

Pseudocode:
if (count($deinArray > 0) { mach dein Code }

Gruß,
Thomas
Member: areanod
areanod May 15, 2019 at 07:18:56 (UTC)
Goto Top
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 face-smile):

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
Member: SlainteMhath
SlainteMhath May 15, 2019 updated at 07:34:31 (UTC)
Goto Top
Moin,

$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.
Member: maretz
maretz May 15, 2019 at 08:34:01 (UTC)
Goto Top
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.
Member: jensgebken
jensgebken May 15, 2019 at 09:02:16 (UTC)
Goto Top
wie würdest du es denn coden, damit es sicherer ist
Member: maretz
maretz May 15, 2019 at 09:04:14 (UTC)
Goto Top
schau mal nach z.B. real_escape_string in der php-doku
Member: em-pie
em-pie May 15, 2019 at 09:44:56 (UTC)
Goto Top
Zitat von @jensgebken:

wie würdest du es denn coden, damit es sicherer ist


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:
exploits_of_a_mom
Quelle: https://xkcd.com/327/

Gruß
em-pie
Mitglied: 139708
139708 May 15, 2019 at 10:06:27 (UTC)
Goto Top