Zum Inhalt springen

PHP Mysql Switch Problem


Crowz

Empfohlene Beiträge

Guten Morgen allerseits,


<?php
$klein = 'klein';
$kleinpreis = '3';
$caseklein = "INSERT INTO bestellung (pizzagroesse, preis) VALUES ('$klein', '$kleinpreis')";
$casekleinabfrage = mysql_query($caseklein);


switch ($_POST["Größe"]) {
case "3":
echo "Ihre Pizza wird vorraussichtlich 3 Euro kosten!";
$casekleinabfrage;
break;
case "4":
echo "Ihre Pizza wird vorraussichtlich 4 Euro kosten!";
break;
case "5":
echo "Ihre Pizza wird vorraussichtlich 5 Euro kosten!";
break;
}
?>
[/PHP]

Warum wird hier mein Eintrag in die Tabelle "bestellung" nicht ausgeführt?

Kann ich nicht mehr als einen Befehl für ein Case definieren?

Gruß Crowz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Crowz,

zum einen fehlt mir die Verbindung zu Datenbank (ggf hast Du die auch nur nicht gepostet)...

Ich würde mal vermuten, Du willst $casekleinabfrage erst in dem Switch (bei gegebenem Case) ausführen - aber dass machst Du nicht. Du führst den Befehl gleich am Anfang aus, nicht im Switch - was Du da mit dem Result-Wert willst - keine Ahnung... Sollte eigentlich ne Fehlermeldung produzieren...

ansonsten mach mal ein

echo $casekleinabfrage;

und paste das dann mal in ein direktes SQL-Eingabefeld (Sei es im mysql-client selbst, oder bei phpmyadmin, ...) - dann siehst Du, ob die Query direkt einen Fehler aufwirft...

Was meinst Du mit mehr Befehlen im Case?

Du kannst beliebig viele Befehle zwischen dem case(...): und dem nächsten schreiben... break ist ja auch "nur ein Befehl".

tsg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Verbindung habe ich mit einem Include.

Diese Zeilen


$klein = 'klein';
$kleinpreis = '3';
$caseklein = "INSERT INTO bestellung (pizzagroesse, preis) VALUES ('$klein', '$kleinpreis')";
$casekleinabfrage = mysql_query($caseklein);
[/PHP]

sind ja nur definitionen der Variablen und haben ja erstmal keine Wirkung. Sie werden ja ncoh nicht ausgeführt.

Jetzt kommt die switch abfrage.

[PHP]
switch ($_POST["Größe"]) {
case "3":
echo "Ihre Pizza wird vorraussichtlich 3 Euro kosten!";
$casekleinabfrage;
break;
case "4":
echo "Ihre Pizza wird vorraussichtlich 4 Euro kosten!";
break;
case "5":
echo "Ihre Pizza wird vorraussichtlich 5 Euro kosten!";
break;
}

Diese Switch abfrage besagt das es verschiedene möglichkeiten gibt eine Lösung zu erzeugen wenn ich das so sagen darf. Das heißt wenn der wert in der oberen selectbox klein ist tritt case 3 in kraft. Wenn case 3 in kraft tritt werden die Befehle

  echo "Ihre Pizza wird vorraussichtlich 3 Euro kosten!"; 

und jetzt noch zusätzlich

 $casekleinpreis 

ausgeführt.

 $casekleinpreis

wurde oben definiert....

Nun wird allerdings kein Eintrag in meine MYSQL Datenbank gemacht was aber eigentlich nicht sein kann. Wenn ich nämlich den Befehl bzw. die Variable

$casekleinpreis

außerhalb der Switch abfrage ausführe funktioniert alles einwandfrei?!

Warum nicht in der Abfrage?

Link zu diesem Kommentar
Auf anderen Seiten teilen

[...] funktioniert eben nur nicht^^.

Das ist keine Aussage. Geht nicht reicht hier nicht aus.

Je nach Installation des Servers tauchen Fehlermeldung nur im Log auf (was auch so sein sollte). Du kannst entsprechende Warnings / Errors über die php.ini aktivieren bzw innerhalb Deines Scripts über "ini_set" manuell setzen (sofern das durch den Administrator erlaubt wurde).

Analog gilt das auch für Deinen mySQL Server, dieser kann jedes Statement, das er erhält auch loggen, so dass Du auch einmal manuell prüfen kannst

Du solltest weiterhin solche Konstrukte nicht verwenden:


$caseklein = "INSERT INTO bestellung (pizzagroesse, preis) VALUES ('$klein', '$kleinpreis')";

da hier einmal die Möglichkeit von SQL-Injections besteht und ggf durch die Einstellungen in der php.ini generell verboten wird

Bearbeitet von flashpixx
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...