PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Datenwert vergleichen (http://www.selfphp.de/forum/showthread.php?t=24865)

lebuek 16.02.2013 15:36:31

Datenwert vergleichen
 
Hallo,
wahrscheinlich eine dumpe Frage ... aber dennoch:
ich möchte einen mit sql ausgelesenen Tabellenwert überprüfen -
ob er > 0 ist.

Ich hatte mir vorgestellt:
mysql_select_db("colorit", $link);
$query="SELECT anzahl FROM color WHERE bezeichnung='color_gelb'";

$min=0;
if ($query > $min ) {
anweisung ....

}
else{
anweisung...
}


was aber nicht funktioniert.
Wie kann ich das lösen?

Vielen Dank für Eure Hilfe!

DokuLeseHemmung 16.02.2013 15:41:33

AW: Datenwert vergleichen
 
Die Hälfte Vergessen....
mysql_query()
mysql_fetch_assoc()

Auch kannst du den Vergleich schon im WHERE Teil des Query machen.

lebuek 16.02.2013 15:52:46

AW: Datenwert vergleichen
 
wenn ich die Bedingung in die sql Abfrage packe - habe ich nicht mehr
die Möglichkeit, einen Text anzuzeigen.
Es sollte so funktionieren:
Solange anzahl > 0 wird der bestand jeweils um 1 minimiert
Wenn anzahl == 0 soll ein Text ausgegeben werden:
'color_gelb' nicht mehr verfügbar.

Ich hoffe, ich habe das richtig formuliert.
Danke!

urvater 20.02.2013 12:32:19

AW: Datenwert vergleichen
 
Schau dir mal das Beispiel zu mysql_fetch_assoc() an. Die Stelle mit mysql_num_rows() sollte eigentlich genau das sein, was du hier anfragst. Hier mal der kleine Ausschnitt davon.
PHP-Code:

if (mysql_num_rows($result) == 0) {
    echo 
"Keine Zeilen gefunden, nichts auszugeben, also Ende";
    exit;


Das Verhalten deines Skripts müsstest du natürlich an deine Bedingungen anpassen.

meikel (†) 20.02.2013 13:19:13

AW: Datenwert vergleichen
 
Zitat:

Zitat von lebuek (Beitrag 144468)
wenn ich die Bedingung in die sql Abfrage packe - habe ich nicht mehr die Möglichkeit, einen Text anzuzeigen.

Und wieso nicht? echo oder print funktionieren doch.
Zitat:

Es sollte so funktionieren:
Solange anzahl > 0 wird der bestand jeweils um 1 minimiert
Wenn anzahl == 0 soll ein Text ausgegeben werden:
'color_gelb' nicht mehr verfügbar.
Falsche Reihenfolge. Du mußt erst fragen, ob anzahl > 0 ist und, falls nicht, den Text ausgeben.
Falls größer 0, dann das UPDATE.
Da das aber 2 Abfragen sind, die Zeit kosten, kann man das auch mit einer Abfrage erledigen und affected_rows auswerten:
Code:

UPDATE tabelle SET anzahl = anzahl -1 WHERE anzahl > 0
Ist anzahl größer 0, ist affected_rows = 1, sonst = 0.

Ungetestet (Tippfehler nicht ausgeschlossen):
PHP-Code:

$db = new mysqli($host$user$pass$dbname);
$res $db->query('UPDATE tabelle SET anzahl = anzahl -1 WHERE anzahl > 0');
if (
$res->affected_rows 0){
  echo 
"Ware wird geliefert";
}else{
  echo 
"Die gewünschte Farbe ist leider nicht mehr vorrätig.";


Hinweis:
da die mysql Extension auf der Abschußliste steht, solltest Du die mysqli Extension verwenden.

http://www.php.net/manual/en/class.mysqli.php
http://www.php.net/manual/en/mysqli.affected-rows.php


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:07:46 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.