PHP IF-Bedingung: Abfrage liefert Werte zurück.

mikelsdump

Ensign
Registriert
Aug. 2008
Beiträge
133
Hallo,

wenn meine Abfrage einen (oder mehrere) Werte zurückliefert, möchte ich, dass ein bestimmter Text ausgegeben wird. Ich habe das jetzt mal mit dem unten stehenden Code in diversen Variationen probiert, aber leider nie das gewünschte Ergebnis erhalten.

Hoffe ihr könnt mir helfen?

PHP:
$sql = "SELECT * FROM `iankanposstma` WHERE `Zeichnungsnummer` = '$Zeichnungsnummer' AND `ID` != '$IankanposstmaID'"; 
$Abgleich = mysql_query($sql) OR die(mysql_error());

if ($Abgleich!="") {
echo "xxxx";
}
 
mysql_num_rows() gibt die Anzahl der Datensätze zurück.
 
mit hilfe einer while-schleife kannst du mehrere treffer seperat behandeln

http://www.tuxradar.com/practicalphp/9/4/4

also

Code:
    $sql_query = "SELECT * FROM `iankanposstma` WHERE `Zeichnungsnummer` = '$Zeichnungsnummer' AND `ID` != '$IankanposstmaID'";
    $sql_result = mysql_query($sql_query) OR die(mysql_error());
     
    // solange Datensätze vorhanden sind (Zeilen)
    while($datensatz = mysql_fetch_assoc($sql_result))
    {
        // Wenn der aktuelle Datensatz folgendem Kriterium entspricht
        if($datensatz["attribut"] == "bla bla")
        {
            echo "bla bla";
        }
    }

vorher aber prüfen ob überhaupt dein treffer erfolgte!
 
Zuletzt bearbeitet von einem Moderator:
Sehr toll, mit mysql_num_rows hab ich das hinbekommen. :) Bei der Schleife gab's leider ein Problem, das dazu geführt hat, dass die Schleife einen Durchlauf zu viel hatte.

Jetzt stehe ich aber vor einem neuen Problem:

Ich habe ja die $IankanposstmaID. Ich will nun in der Tabelle "einzelschritt" suchen, ob für die jeweilige $IankanposstmaID (ist in einer Spalte angegeben) irgendein (!) Eintrag in der Spalte "Arbeitsschritt" mit dem Wert "9" besteht.

Sollte nur einer der überprüften Einträge bei Arbeitsschritt die 9 eingetragen haben, erfolgt keine Ausgabe, wenn keiner der Einträge die 9 hat, dann soll die Ausgabe erfolgen.

Könnt ihr hier noch helfen?

Ich dachte so würde es funktionieren, tut es aber leider nicht...

PHP:
//Suche in Tabelle iankanposstma nach Einträgen, wo Zeichnungsnummer=$Zeichnungsnummer, aber IankanposstmaID != IankanposstmaID. Lese IankanposstmaID aus.
//Wenn für die ausgelesene IankanposstmaID kein Eintrag mit dem Arbeitsschritt Endkontrolle besteht, dann Alarm ausgeben.

$sql = "SELECT * FROM `iankanposstma` WHERE `Zeichnungsnummer` = '$Zeichnungsnummer' AND `ID` != '$IankanposstmaID'"; 
 $Abgleich = mysql_query($sql) OR die(mysql_error());
 $Abgleich2=mysql_num_rows($Abgleich);

//Wenn die Rückgabe der Suche NICHT leer ist, dann...
if ($Abgleich2!="") {

 $sql = "SELECT Arbeitsschritt FROM `einzelschritt` WHERE `ID` = '$IankanposstmaID'"; 
 $sql_result = mysql_query($sql) OR die(mysql_error());
 
 //Wenn bei einem Eintrag mit der ID der Arbeitsschritt ungleich 9 ist, dann...
 if ($sql_result!="9")
  {
  echo "<div class=\"Alert\">Achtung:<br>Es existieren weitere offene Bestellungen für diese Zeichnungsnummer!<br>"; 

  while($result = mysql_fetch_array($Abgleich)) {
  $AbgleichID=$result["ID"];
  
  //Auswählen der IAN, KAN & POS wo ID=$AbgleichID
  $sql = "SELECT IAN FROM `iankanposstma` WHERE `ID`='$AbgleichID'"; 
  $Abgleich2 = mysql_query($sql) OR die(mysql_error());
  list ($AbgleichIAN) = mysql_fetch_row($Abgleich2);
  
  $sql = "SELECT KAN FROM `iankanposstma` WHERE `ID`='$AbgleichID'"; 
  $Abgleich2 = mysql_query($sql) OR die(mysql_error());
  list ($AbgleichKAN) = mysql_fetch_row($Abgleich2);
  
  $sql = "SELECT POS FROM `iankanposstma` WHERE `ID`='$AbgleichID'"; 
  $Abgleich2 = mysql_query($sql) OR die(mysql_error());
  list ($AbgleichPOS) = mysql_fetch_row($Abgleich2);
  
  echo "$AbgleichIAN-$AbgleichKAN-$AbgleichPOS<br>";
  }
 }
 
 echo "</div>";
 
}
 
Zuletzt bearbeitet:
Mach die while-Schleife vor der Ausgabe und sammel die Daten in einem Array. Geh die Daten durch, überprüf nach einer Neun und falls diese gefunden wurden, kannst du entsprechend dem Schalter $hasNeun reagieren.
Code:
$sql = 'SELECT ...';
$sql = mysql_query( $sql );
$daten = array();

while( ($row = mysql_fetch_array( $sql )) !== false )
  $daten[] = $row;

$hatNeun = false;
foreach( $daten as $datensatz )
  if( $datensatz['spalte'] == 9 )
  {
    $hatNeun = true;
    break;
  }

if( !$hatNeun )
  foreach( $daten as $datensatz )
  {
    // daten ausgeben
  }
 

Ähnliche Themen

C
Antworten
3
Aufrufe
1.372
Cave Johnson
C
Zurück
Oben