Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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?

bekomme keine Fehlermeldung, ist ja eig. auch nichts falsch, funktioniert eben nur nicht^^.

[...] 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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.