Auslesen Werte angeklickter Checkboxen

Luzie

Erfahrenes Mitglied
Guten Abend,

ich lese Datensätze in einer Schleife aus. Diese Schleife steckt in einem Formular. Jedem Datensatz wird eine Checkbox angehängt, welche die ID des Datensatzes als Wert enthält.

Jetzt möchte ich die Werte der anklickten Checkboxen auslesen.

In ASP kann ich diese mit dem Request.Form() auslesen und sie werden mir mit Komma getrennt aufgelistet. Die Übergabe in php mittels

echo $HTTP_POST_VARS["Checkboxname"];

liefert mir aber nur den Wert der zuletzt angeklickten Checkbox. Ich habe es auch schon mit

print_r() versucht, aber das gleiche Ergebnis.

Wie löst man dies am besten in php?
 
Hallo,

ein paar Code-Schnipsel wären hiflreich. Aber soweit ich dich verstanden habe müsste es auch mit

<input type='checkbox' name='boxes[$id]'> funktionieren.

Die Daten werden dann in ein Array gespeichert, die du in

$_POST["boxes"] erhältst.
 
Hi,

also die Übergabe und das Auslesen der Daten in einen Array über print_r(), wenn ich dem Checkbox-Namen die [$id] mitgebe, funktionert. Danke.

Aber ich möchte diese Ausgabe weiterverarbeiten. Ich möchte mit den übergebenen Daten ein anderes Selectstatemant auslesen z.B. mit Hilfe des in-Opertators.
PHP:
<?php 
include("g_connect.php")
$myID = print_r($HTTP_POST_VARS["box"]); // ----> Zeile 4
  $abfrage = "SELECT * FROM country where ID in ($myID)";
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_object($ergebnis))
    {
   $ID=$row->ID;
   echo $ID;
   echo "<br>"
  }
?>
Folgender Fehler kommt

Parse error: parse error, unexpected T_VARIABLE in C:\Inetpub\wwwroot\myPHP\UD\datenauslesen\weiter.php on line 4

Ich weiss auch, dass dies nicht funktioneren kann. Nehme ich print_r weg, kommt die gleiche Fehlermeldung.
 
Zuletzt bearbeitet:
Nach der include()-Anweisung fehlt ein Semikolon.... das erzeugt den Parser-Fehler. Prinzipiell solltest du in PHP alle Anweisungen mit einem Semikolon abschliessen.

Weiterhin musst du dir aus box[] die Keys für myID einzeln holen, print_r() erzeugt lediglich eine Ausgabe des Arrays im Dokument.
PHP:
<?php
include("g_connect.php");
if(isset($_POST['box'])&&is_array($_POST['box']))
	{
	foreach($_POST['box']as $myID=>$value)
		{
  		$abfrage = "SELECT * FROM country where ID in ($myID)";
  		$ergebnis = mysql_query($abfrage);
  		while($row = mysql_fetch_object($ergebnis))
    		{
   			$ID=$row->ID;
   			echo $ID;
   			echo "<br>";
   			}
   		}
  }
?>
Sollte 'ID' in 'country' eindeutig sein, kannst du dir die while-Schleife dabei sparen,
dann brauchst du nur prüfen, ob $row ein Ergebnis liefert (was aber im Endeffekt aufs gleiche herauskommt:-))
 
Zuletzt bearbeitet:
Hey, das ist fantastisch.
Ich danke Dir recht herzlich.
Stimmt, die Semikolon vergesse ich ständig. Aber ich hatte es schon bemerkt und sie gesetzt. Ich denke auch viel zu kompliziert in php und weiss noch nicht recht. wo und wann und was ich einsetzen muss.

Mein kläglicher Stand der Dinge bisher war (aus Workshops und Büchern zusammengewürfelt)
PHP:
<?php 
include("g_connect.php");
$myID = $HTTP_POST_VARS["box"];
  $ab = "SELECT * FROM country where ID in (";
   while(list($value) = each($myID)) { 
  	$ausgabe = $ausgabe.$value.","; //Zeile 7
  	} 
 $abfrage = $ab.$ausgabe.")";
  echo $abfrage;
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_object($ergebnis))
    {
   $myID1=$row->ID;
   echo $myID1;
   echo "<br>";
  }
?>
und funktionierte natürlich hinten und vorne nicht.

Ich danke nochmals recht herzlich.
 
Zurück