Auswahl aus einer Liste

gibts irgendwo ne genauere Definition für "letzte Variable"

Wenn du meinst, dass du nur einen Datensatz bekommst, das dürfte ja wohl klar sein - du frägst ja schließlich nur nach einem!
Code:
where Firmen_ID = die_eine_gesuchte_ID

Wenn du alle Daten haben möchtest, musst du eben in einer Schleife ausführen
Code:
for($i=0; $i<count($firmenIDArray); $i++) {
// select ausführen
}
oder du erweiterst deine Select-Klausel um alle gesuchten IDs.
(Kannst du auch in einer Schleife automatisch machen lassen)
Das hat den Vorteil, dass nur eine Datenbankabfrage abgesetzt wird, beim anderen jeweils eine Abfrage pro FirmenID

Für letzteren Ansatz würde ich dir das SQL Statement in() empfehlen.
Du kannst es aber auch mit lauter OR machen.
 
meine Folgeseite

PHP:
   var_dump($_REQUEST) ;   



  include 'inc/wlw.php';


echo '<br><br />';
echo $_REQUEST['Firmen_ID'][0];
echo '<br />';
echo $_REQUEST['Firmen_ID'][1];
echo '<br /><br />';



foreach ($_REQUEST['Firmen_ID'] as $key => $value) 
  {
$$key = $value;
 
 
 echo '<table border=1>
			 <tr>
			 <td>'.$value.'</td>
			 </tr>
			 </table>';   



    
$res = mssql_query("select * from adressen
                    where Firmen_ID like '".$value."' ");
}  




    echo '<br /><br /><br /><table border=1>
            <tr>
            <td>Firmen-ID</td>
            <td>Firma</td>
            <td>Straße</td>
            <td>Land</td>
            <td>Postleitzahl</td>
            <td>Ort</td>
            </tr>';
                    
        while ($row=mssql_fetch_assoc($res)){

       echo '<tr>
              <td>'.$row['Firmen_ID'].'</td>
              
              </tr>';
             }  
       echo '</table>';


das Ergebniss sieht so aus
array(1) { ["Firmen_ID"]=> array(2) { [0]=> string(10) "0000148340" [1]=> string(10) "0000173315" } }

0000148340
0000173315

0000148340
0000173315



Firmen-ID Firma Straße Land Postleitzahl Ort
0000173315





kannst Du mir dafür mal ein Beispiel geben

oder du erweiterst deine Select-Klausel um alle gesuchten IDs.
(Kannst du auch in einer Schleife automatisch machen lassen)
Das hat den Vorteil, dass nur eine Datenbankabfrage abgesetzt wird, beim anderen jeweils eine Abfrage pro FirmenID

Für letzteren Ansatz würde ich dir das SQL Statement in() empfehlen.
Du kannst es aber auch mit lauter OR machen.
 
Zuletzt bearbeitet:
update

PHP:
foreach ($_REQUEST['Firmen_ID'] as $key => $value) 
  {
$$key = $value;
 
 
 echo '<table border=1>
			 <tr>
			 <td>'.$value.'</td>
			 </tr>
			 </table>';   



    
$res = mssql_query("select * from adressen
                    where Firmen_ID IN ('.implode( '".$value."') ' ) ");
}

ergibt den Fehler

0000148340

Warning: mssql_query() [function.mssql-query]: message: Zeile 2: Falsche Syntax in der Nähe von '0000148340'. (severity 15) in C:\Inetpub\php\wlw_produktsuche2.php on line 34

Warning: mssql_query() [function.mssql-query]: Query failed in C:\Inetpub\php\wlw_produktsuche2.php on line 34


0000173315

Warning: mssql_query() [function.mssql-query]: message: Zeile 2: Falsche Syntax in der Nähe von '0000173315'. (severity 15) in C:\Inetpub\php\wlw_produktsuche2.php on line 34

Warning: mssql_query() [function.mssql-query]: Query failed in C:\Inetpub\php\wlw_produktsuche2.php on line 34




Warning: mssql_fetch_assoc(): supplied argument is not a valid MS SQL-result resource in C:\Inetpub\php\wlw_produktsuche2.php on line 50
Firmen-ID Firma Straße Land Postleitzahl Ort
 
Zuletzt bearbeitet:
suchen soll manchem schon geholfen haben.

Such mal in der Mysql-Referenz nach in(), dann dürfte die Verwendung klar werden.
(letztlich where id in(1, 2, 3, 4))

zum or:
where id = 1 or id=2 or id=3 or id=4
 
ich weiss das ich heut sehr schwer von Begriff bin.

(bin aber zu meiner Verteidigung immer noch php neuling und kenne noch nicht die programm-codes)

der Code liefert eine Liste mit den ausgewählten Firmen_ID´s doch bei das Query liefert 0 Datensätze. (setze ich ein falsches zeichen bekomme ich X Fehlermeldungen (für jede Firmen_ID eine mit Nennung der Firmen_ID)

da ich nicht weiss ob ich 1 oder 500 oder mehr Firmen_ID ´s zum übernehmen hab. Sollte ich das or automatisch hochzählen lassen können (welche Möglichkeit gibt es die Anzahl von Arrays zu ermitteln um $i = 1; $i++ (bis Anzahl Arrays) hin zu bekommen

PHP:
foreach ($_REQUEST['Firmen_ID'] as $key => $value) 
  {
$$key = $value;
 
 
 echo '<br /><br /><table border=1>
			 <tr>
			 <td>'.$value.'</td>
			 </tr>
			 </table>';   



    
$res = mssql_query("select * from adressen
                    where Firmen_ID in ('.implode( ',', $value ) ') ");
}
 
was soll das implode da eigentlich?
$value ist doch schon eine ID

Wo wir schon bei einzelner ID sind.
Du hast nicht den von mir vorgeschlagenen 2ten Weg umgesetzt, sondern den ersten.

Wenn du jetzt einfach schreibst:
where xy = $value (natürlich in richtiger Syntax)

unnd das Ergebnis der Abfrage zur Ausgabe bringst, sollte es eigentlich klappen
 
ich bekomm die Kriese 1 von 4 Arrays werden ausgegeben.

was mach ich jetzt noch falsch?

wenn $value = die ID ist - und mir alle ID´s vorher auch angezeigt werden.
warum geht dann die Abfrage nicht in die Schleife und geht eine ID nach der anderen durch?

ich blicks echt nicht mehr.

echo $value = 4 Firmen_ID´s

where $value = 1 (die letzte Firmen_ID) '"AAAAAARRRRRRGGGGGGGHHHHHH"

PHP:
....

foreach ($_REQUEST['Firmen_ID'] as $key => $value) 
  {
$$key = $value;
 
 
 echo '<br /><br /><table border=1>
			 <tr>
			 <td>'.$value.'</td>
			 </tr>
			 </table>';   

    
$res = mssql_query("select * from adressen
                    where Firmen_ID = $value ");
}

  ....

gibt aus:

array(1) { ["Firmen_ID"]=> array(4) { [0]=> string(10) "0000318548" [1]=> string(10) "0000747141" [2]=> string(10) "0000148340" [3]=> string(10) "0000173315" } }

0000318548


0000747141


0000148340


0000173315



Firmen-ID Firma Straße Land Postleitzahl Ort
0000173315 Meodat Meßtechnik, Ortung und Datenverarbeitung GmbH Ehrenbergstr 11 D 98693 Ilmenau
 
Zuletzt bearbeitet:
Zurück