Hallo und guten morgen.
Ich versuche mal alles genauestens zu beschreiben (Das Script und was ich eigentlich vor habe).
Also was ich vorwegnehmen kann ist, das es sich um keinen Wahrenkorb handelt. Ich habe nur vor dem User
die möglichkeit zu geben nach Produkten im Örtlichem (z.b.) Aldi zu suchen. Der User kann X Artikel
eingeben, wobei es bis zu 100-200 Artikel werden können. Wer auch immer so viel kaufen möchte :-)
Ich habe heute nacht darüber nachgedacht vieleicht erstmal die Useranfrage + SSID
in einer DB zu speichern um diese dann mit einer Doppelabfrage (SQL) auszugeben. Obwohl
ich dabei auch eine zu lange URL bekomme. Wie ich das umgehen kann weiß ich überhaupt
nicht. Währe eine URL begrenzung (anhand der eingabemöglichkeiten) sinnvoll? Ich kann ja
nicht bestimmen wie lang die einzelne eingabe wird. Macht irgendwie keinen sinn. Hm.
OK jetzt mal zum Script, dem davor und dem danacht.
Ich habe ein Formular welches mit hilfe von Java eine Dynamische eingabe ermöglicht.
Der User gibt z.b. eine 3 im erstem Input und Milch im 2 Imput ein. Der erste Input
(menge1) ist für die anzahl der Artikel und das zweite Input (artikel1) für den Artikel
als solches gedacht. Also 3 mal Milch möchte mein User erfragen.
Die Inputs bekommen Dynamisch ihren Namen zugegeben (Also immer menge1 - menge2 usw)
Das alles klappt auch einwandfrei. Mittels
PHP-Code:
$kay1 = str_replace("menge","",$kay);
$kay2 = str_replace("artikel","",$kay);
bekomme ich jeweils die nummer seperat und kann $kay1 mit $kay2 vergleichen, stimmt es
überein gehören diese zusammen.
Brauche ich nicht unbedingt weil in der
PHP-Code:
foreach($_GET as $key => $value) {
Schleife beide (menge1 und artikel1) zur abfrage automatisch sortiert zur verfügung stehen.
Sehe ich doch richtig, weil ich ja drauf zugreifen kann, oder nicht .!?
Nun gut jetzt nehme ich mal das Script auseinander:
Hier fange ich die schleife an um alle in der URL übergebenen Variablen zu übernehmen.
$_GET weil es mit $_POST leider nicht geht (In der Schleife) Sie werden per POST in dem
Formular übergeben. $_RQUEST hatte ich auch versucht, geht auch nicht.
PHP-Code:
if($_SERVER['REQUEST_METHOD'] == 'GET') {
foreach($_GET as $key => $value) {
Hier schliesse ich einige Variablen aus weil diese mit dem eigentlichem Produkt welches
abgefragt werden soll (auch mehrere Produkte sollten möglich sein) nichts zu tun haben.
Wenn ich das nicht mache habe ich halt x 0 ausgaben weil diese ja auch in der SQL Abfrage
mit durchlaufen. Das ist nicht wirklich sinnvoll.
PHP-Code:
if($key != 'seiten' and $key!= 'marktplatz' and $key!= 'plz' and $key!= 'erstellen' and
$key!= '0' and $key!= '' and $key!= ' ' and $value!= '0' and $value!= '' and $value!= ' '){
ok gebe zu das macht so kein Sinn, aber das war ja auch nur ein Denkansatz bei dem noch etwas fehlt
und so ist dieser teil auch nicht mehr vorhanden. :-)
PHP-Code:
echo $key.' '.$value.'<br>';
$valuev = $value;
Was genau (Amica) meinst Du mit anfällig für SQL Injections!
Für jeden GET-Parameter wird dieses Select ausführen. Das habe ich beabsichtigt, weil ich ja x
Artikel einzeln abfrage. in '%$valuev%' steht ja auch immer etwas anderes.
Ich denke nicht das der Fehler hier liegt, sondern eher in der Schleife als solchs.
PHP-Code:
$abfrage_artikel = "SELECT id, Laden, PLZ, Artikel, Marke, Suchbegriffe, MIN(Preis) AS reisel
FROM System_Einkaufsliste WHERE Suchbegriffe LIKE '%$valuev%' ORDER BY Laden";
Ja hm, stimmt ist undefiniert. Warum ich das nun gerade so gemacht hatte kann ich nicht mit
bestimmtheit sagen! Ich glaube ich hatte dort etwas angedacht bzw wollte ich den wert auf nuLL setzen.
PHP-Code:
$ergebnis_artikel = mysql_query($abfrage_artikel);
while($row_artikel = mysql_fetch_object($ergebnis_artikel))
{
if($row_artikel->Artikel!=$value){
$ohnewort = str_replace('[a-z]','',$value);
}else{}
Das macht schon Sinn weil ich da noch Änderungen vorgesehen habe ($new_string) steht hier für die Anzahl
der Artikel und ($zusammen) rechnet mir den gesamptpreis aus.
Diese wird (Hier kommt eventuell noch eine Funktion hin) Dynamisch nochmal verändert wenn der Artikel
ein Angebot sein sollte und man zum Preis von einem 2 Bekommt.
PHP-Code:
$new_string = $ohnewort;
$zusammen = $ohnewort * $row_artikel->reisel;
Oh, das war so weil ich erst ab dieser Stelle Scripte habe, Steht auch nun am
Anfang. Sorry hatte nicht aufgepasst ;-)
PHP-Code:
# error_reporting
error_reporting();
So ich hoffe das hilft weiter :-)