Auswahl aus einer Liste

hikeda_ya

Erfahrenes Mitglied
Hallo Leute,

ich habe mir eine Abfrage gebastelst die eine Tabelle ausgibt.

soweit so gut.

jetzt möchte ich einzelne Datensätze in der Tabelle markieren und dies weiterverarbeiten. Jedoch NUR die markierten.

Übergebe ich die Daten an die nächste Seite kommt da nur der letzte markierte Datensatz an.

mein Quellcode

PHP:
echo '<form action="wlw_produktsuche2.php" method="post">';
       
     echo '<br><br /><br />';   
          
  @$res = sql("SELECT *, produkte.Produkte
FROM adressen
left join produkte on adressen.firmen_id = produkte.firmen_id
where produkte like '%".$_REQUEST['var']."%' and Land like '".$_REQUEST['lkz']."' 
order by Postleitzahl");


      echo '<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><input type="hidden" name="Firmen_ID" value="'.$row['Firmen_ID'].'" \>'.$row['Firmen_ID'].'</td>
              <td>'.$row['Firma'].'</td>
              <td>'.$row['Straße'].'</td>
              <td>'.$row['Land'].'</td>
              <td>'.$row['Postleitzahl'].'</td>
              <td>'.$row['Ort'].'</td>
              <td>'.$row['Produkte'].'</td>
              <td><input type="checkbox" name="speichern1" value="1" \></td>
              </tr>';
             }  
       echo '</table>';     
       
      echo '</span>';       
      
           
      echo '<input type="submit" name="speichern2" value="in DB speichern" </form>';

auf der seite wlw_produktsuche2.php sagt mir das var_dump

array(2) { ["Firmen_ID"]=> string(10) "0000163486" ["speichern"]=> string(15) "in DB speichern" } 0000163486
 
bist du sicher, dass das ganze VarDump ist?
Denn deine Checkbox mit Speichern1 taucht überhaupt nicht auf,
Speichern2 ist auf einmal nur noch Speichern

Allgemein zu Checkboxen:
Wenn du alle Checkboxen mit Speichern1 gleich benennst, dann sind zwar alle in einer Gruppe, damit aber auch alle Werte übertragen werden - und das müssen sie, wenn du sie unterscheiden möchtest - müssen die Werte auch unterschiedlich sein.

gruß shutdown
 
noch mal mein var_dump

array(3) { ["Firmen_ID"]=> string(10) "0000163486" ["speichern1"]=> string(1) "1"
["speichern2"]=> string(15) "in DB speichern" } 0000163486



Seite

wlw_produktsuche2.php


PHP:
   var_dump($_REQUEST) ;   


echo $_REQUEST['Firmen_ID'];
 
shutdown hat gesagt.:
Allgemein zu Checkboxen:
Wenn du alle Checkboxen mit Speichern1 gleich benennst, dann sind zwar alle in einer Gruppe, damit aber auch alle Werte übertragen werden - und das müssen sie, wenn du sie unterscheiden möchtest - müssen die Werte auch unterschiedlich sein.

gruß shutdown


Ich weiss ja vorher noch nicht wieviele Datensätze ich bekommeund kann daher auch noch nicht das Value setzen.

oder geht es mit dem

$i=1
$i++

das wär für mich noch Neuland
 
Code:
$counter = 1;
while ($daten = mysql_fetch_object($exec_query)) {

echo '<input type="checkbox" name="speichern" value="'. $counter . '">';
$counter++;
}

Dies dürfte die gewünschte Erhöhung des Values bei unbestimmter Anzahl von Datensätzen ermöglichen

Gruß shutdown
 
das hat leider auch nicht so geholfen,

jetzt übernimmt er entweder alle Datensätze (auch die - die nicht ausgewählt wurden) oder wieder nur den letzten.

aber ein zusammenhang wird nicht geschaffen.

muss ich etwas machen wie

PHP:
select as string()
 
das gibt wieder alle datensätze weiter


PHP:
  $i=1;  
          
  @$res = sql("SELECT *, produkte.Produkte
FROM adressen
left join produkte on adressen.firmen_id = produkte.firmen_id
where produkte like '%".$_REQUEST['var']."%' and Land like '".$_REQUEST['lkz']."' 
order by Postleitzahl");


      echo '<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>
              <td>'.$row['Firma'].'</td>
              <td>'.$row['Straße'].'</td>
              <td>'.$row['Land'].'</td>
              <td>'.$row['Postleitzahl'].'</td>
              <td>'.$row['Ort'].'</td>
              <td>'.$row['Produkte'].'</td>
              <td><input type="hidden" name="'.$i.'" value="'.$row['Firmen_ID'].$row['Firma'].$row['Straße'].$row['Land'].$row['Postleitzahl'].$row['Ort'].$row['Produkte'].'"  \><input type="checkbox" name="speichern1"  \></td>
              </tr>';
              $i++;}  
       echo '</table>';
 
ja, weil ein hidden-Feld auch immer übertragen wird.
Wie willst du bei einem reinen Textfeld auch auswählen, ob es wichtig ist oder nicht?

Es geht um die Checkboxen!
Und denen kannst du ruhig alle den gleichen Namen geben, aber die Values müssen sich eben unterscheiden, damit auch alle Values übergeben werden
 
Ich versuche mal ein Beispiel:

Du kennst doch Web-E-Mails. In denen hast Du vor jeder E-Mail eine Checkbox um diese zu markieren. Weiter unten kannst Du auswählen was Du mit den Markierten E-Mails machen willst.

So ähnlich möchte / sollte ich es auch handhaben.

Ich mache eine Datenbankabfrage und lasse mir eine Liste anzeigen in Form einer Tabelle.
am Ende / Anfang soll eine Checkbox sein mit der ich dieses Ergebnis markieren kann. Klicke ich dann auf den Butten "weiterverarbeiten" sollen alle Arrays, der Markierten Zeile, genommen werden und an die nächste Seite übergeben werden. (ich Benötige zumindest die Firmen_ID um auf der nächsten Seite diese mir wieder durch Select zu holen.
Noch besser wär es wenn diese Liste mit den ausgewählten Datensätzen übergeben werden)

Ich hoffe jetzt wird klarer was ich zu tun gedenke
 
ja und warum machst du das dann nicht einfach? :-)

Also nochmal: hidden-Felder werden alle übergeben und zwar immer.

Es kommt nun darauf an, wie du die übergebenen Daten auf der anderen Seite verarbeitest (ich würde übrigens empfehlen, nur eine ID zu übergeben, die du dann per Datenbankabfrage wieder um die anderen Dinge ergänzt).

Wenn du nun 2 Zeilen hast:
blablabla <input type="checkbox" name="uebergebeneID" value="1">
blablabla <input type="checkbox" name="uebergebeneID" value="2">

dann wird z.B. bei der Get-Methode an den Link angehängt:
&uebergebenID=1|2

auf der zweiten Seite erhältst du dann also ein Array von IDs, die du dann weiterverarbeiten kannst.
 
Zurück