Problem mit <Select> Abfrage aus DB: Nur ein Wert wird angezeigt

toni

Grünschnabel
Hallo, ich habe folgendes Problem:

Der Benutzer gibt Plz und Strassenname im Formular ein.
Weil Strassennamen unterschiedlich geschrieben werden können, werden
aus der db alle Strassennamen der Plz mit den ersten vier Buchstaben der Strasse in einem <select> feld im Formular ausgegeben, damit der User die Strasse dann bestätigen kann. Die DB (mysql)abfrage klappt auch, nur wird leider nur EIN Strassenname angezeigt - auch wenn mehrere vorhanden sind.
Ich habe mit while schleife, foreach usw probiert kriegs aber nicht hin....

abfrage db:
PHP:
 //vergleich SSTR mit variabel strasse
$stra = substr($_REQUEST["strasse"],0,4);
  
$sql1 = "SELECT ".
    "SSTR ". 
  "FROM ". 
    "verfuegbarkeit ". 
  "WHERE ". 
         "(SSTR LIKE '$stra%' AND SPLZ = '".$_REQUEST["plz"]."')  ORDER BY 'SSTR' ASC";  
$erg = mysql_query ($sql1);

//wenn plz nicht verfuegbar
if (!$row2 = mysql_fetch_array($erg2))
  { 
  include ('ablehnung.php');
  }
  
  //wenn es eine oder mehrere aehnliche strassen mit der angeg. plz gibt
  elseif (($row = mysql_fetch_array($erg)) && ($row3 = mysql_fetch_object($erg3)) && (mysql_num_rows($erg) > 0 ))
  
 {
   include('strasse.php');   
  }



script zur ausgabe (strasse.php)
PHP:
<?php 
echo '<select name="strasse[]" size="1" >';
         echo '<option selected>-bitte Strasse bestätigen-</option>';
         echo '<option value="'.$row['SSTR'].'">'.$row['SSTR'].'</option>';
         echo '</select><br/>';
?>


wie gesagt, die schleifen habe ich alle wieder weggenommen, weil das chaos nur groesser wurde....

Danke
 
Moin,

am besten du prüfst ob ein Datensatz vorhanden ist mit mysql_num_rows() anstatt einen DS aus der Ergebnismenge zu holen. Das ist nämlich der Punkt, an dem dir ein Datensatz verloren geht. Das kann man z.B. so machen:

PHP:
$result = mysql_query($sql);
if( mysql_num_rows($result) ) {
    while($data = mysql_fetch_array($result)) {
         // irgendwas mit den Daten im DS anstellen
    }
}
else {
   // Kein Datensatz hat den Query gematched
}
 
ja, Danke

das hat mich weitergebracht. Die Auswahl mit <select> klappt jetzt wunderbar.

PHP:
$vers = substr($versorger,0,5);
  
$sql1 = "SELECT ".
    "Lieferant ". 
  "FROM ". 
    "anbieter ". 
  "WHERE ". 
         "(Lieferant LIKE '$vers%')  ORDER BY 'Lieferant' ASC";  
$erg = mysql_query ($sql1);


             if( mysql_num_rows($erg) ) {
              
             	echo '<select name="Lieferant[]" size="1" >';			  
                echo '<option selected>-bitte Versorger bestätigen-</option>';

	while($row = mysql_fetch_array($erg)) 
              {
               echo '<option value="'.$row['Lieferant'].'">'.$row['Lieferant'].'</option>';
	}
               echo '</select><br/>';
             
              }
           //else {
           //   echo ' Wir haben keinen Anbieter gefunden!';
           // }  
 
 	}

Aber jetzt habe ich das Problem, dass ich nicht auf meine $row['Lieferant'] zugreifen kann!
Ich will sie mit
PHP:
session_register("Lieferant");
$Lieferant = $_POST['Lieferant'];

an das nächste Formular weitergeben, kriege aber dort keine Anzeige von $Lieferant oder aber das ergebnis "array"....
Was mache ich falsch?
 
Zurück