PHP Viele Checkboxen auswerten

raven16

Lieutenant
Registriert
Nov. 2008
Beiträge
580
Hi,

ich glaube das Thema wurde schon oft geöffnet aber ich hab bisher noch nicht das passende gefunden...

und zwar hab ich eine Tabelle gebastelt mit divs (wer den vorherigen thread von mir schon gesehen hat weiß das vielleicht schon) und jede Zeile hat seine eigene Checkbox bekommen
PHP:
<input type="checkbox" name="checkid[]" value="'.$obj_get_noanswers->probid.'">
Da diese Tabelle später viele anfragen von zukünftigen benutzern enthalten soll (begrenze das nacher auf 25 zeilen oder so pro seite), kann man dann jede zeile markieren und dann nacher auf den submit-button "antworten" gehen...
PHP:
<input type="submit" name="objectsee" value="Antworten">
Die Value der Checkbox enthält die ID der einzelnen Zeilen aus der Datenbank.

Wenn das Formular abgeschickt ist, dann soll die als erstes ausgewählte checkbox ausgewertet werden... d.h. ich brauche dann die Value der Checkbox der erst ausgewählten Zeile von der Tabelle. Wenn ich die ID aus der Value habe, dann kann ich via SQL-Abfrage den kompletten Inhalt der Datenbanktabelle abfragen und die Anfrage des Benutzers auf einer Seite darstellen... Unter dieser Darstellung soll dann ein neues Formular erscheinen, wo man dann die möglichkeit hat, auf diese anfrage zu antworten...

Und zu guter letzt, was wichtig ist, kommen zwei links unten auf der Seite (Vorherige | Nächste) ... klicke ich auf "Nächste", kommt die nächste ausgewählte Checkbox der Tabelle, und den Rest kann man sich ja denken...

Aber ich hab bisher keinen blassen schimmer, wie ich die checkboxen so auswerten kann und die ID auslese und dann das mit den Seiten anstellen soll wo man vor und zurück blättern kann...

bisher hab ich das gemacht aber das taucht nicht die bohne:
PHP:
else if($_GET['selectedobjects']=='true' || $_GET['checkid'] || isset($_POST['objectsee']))
{
	if($_POST['objectsee'])
	{
		$seite_aktuell = $_POST['checkid'][1];
	}
	else
	{
		$seite_aktuell = $_GET['checkid'];
	}
	$seite_naechste = $seite_aktuell + 1;
	echo'
	<div class="textbox">
		<div class="textbox-title">
			#1 von Maxffm(29m) am 25.08.2009 um 14:57 Uhr
		</div>
		<div class="textbox-inhalt">
			Thema: <b>Frauen am Steuer</b>
			<br><br><hr><br>
			.....Text
		</div>
	</div>
	<div class="textbox">
		<div class="textbox-title">
			Antwort schreiben
		</div>
		<div class="textbox-inhalt">
			Formular hier
			<br><br>';
			if($seite_aktuell != 1)
			{
				$seite_vorherige = $seite_aktuell - 1;
				echo'<a href="login_functions.php?checkid='.$seite_vorherige.'">Vorherige</a> | ';
			}
			echo'
			<a href="login_functions.php?checkid='.$seite_naechste.'">Nächste</a>
		</div>
	</div>';
}

Weiß nicht wie ich immer die passende ID der ausgewählten checkboxen bekomme für die Datenbank und wie ich Vorherige und Nächste begrenzen kann, damit auf der ersten seite nicht Vorherige steht und auf der Letzten Seite nicht Nächste...

Hoffe ihr könnt mir weiterhelfen und das ihr auch das Wirrwarr versteht, was ich versuche hier deutlich zu machen :D

lg
 
Die checkid wird als $_POST übertragen, und dann machste einfach eine nette while/for - Schleife und erhäst den Wert immer um 1

PHP:
for($i=0;$i<count($_POST['checkid']);$i++)
{
    echo $_POST['checkid'][$i];
}

MfG
 
Joar danke... das mit der FOR-Schleife hab ich gestern abend durch googeln noch gefunden :)
PHP:
$checkboxid = $_POST['checkid'];		
for ($i=0; $i<count($checkboxid); $i++)
{
	if($i == $checkboxid) { $firstcheckbox = $i;}
	if($i == count($checkboxid)) {$lastcheckbox = $i;}
	echo $checkboxid[$i];
}

Nur ich kapier das grad nicht so ganz (vllt. hab ich ja grad auch nen Brett vorm Kopf :D)

Ich mach ja mehrere Seiten... die erste markierte checkbox wird die erste seite.... die zweite markierte checkbox wird die 2. seite, das geht dann so weiter bis die letzte markierte checkbox die letzte seite ist...und auf jeder seite muss ich die value der checkbox auslesen für die datenbank....

die frage die sich mir stellt ist:
1. Wie lese ich nur die erste Checkbox aus?
2. Wie kann ich jeweilig nächste Checkbox rausfinden und wie soll ich das übertragen auf den Link (Vorherige/Nächste)
3. Wie kann ich herausfinden, was die letzte markierte Checkbox ist...

Ich kann ja auch nicht einfach ne FOR-Schleife machen die raufzählt und die Seiten produziert oder nicht? weil dann hab ich ja nicht die nächst markierte checkbox, komprende?

Ich denke die letzte Checkbox wäre bei der FOR-Schleife, wenn $i == count($checkboxid) ist oder?

Das ist voll die Knobelaufgabe für mich :D
Liegt vielleicht auch dran, das die Checkboxen und Arrays in PHP absolutes neuland für mich sind ;)
 
raven16 schrieb:
Ich denke die letzte Checkbox wäre bei der FOR-Schleife, wenn $i == count($checkboxid) ist oder?
Kann sein, muss es aber nicht.

Sinnvoll wäre vielleicht auch ein

PHP:
foreach ($_POST['checkid'] as $key => $value) {
...
}

Dann hast Du mit $key den Index (also die ID an sich) und in value "on" oder <leerer String>
 
XunnD schrieb:
Kann sein, muss es aber nicht.

Sinnvoll wäre vielleicht auch ein

PHP:
foreach ($_POST['checkid'] as $key => $value) {
...
}

Dann hast Du mit $key den Index (also die ID an sich) und in value "on" oder <leerer String>

Also ich hab jetzt das mal so ausprobiert:
PHP:
foreach ($_POST['checkid'] as $key => $value) 
{
	echo "Das Element " . $key . " enthält den Wert: " . $value . "<br>";
}

Als Textausgabe dann das hier:
Code:
Das Element 0 enthält den Wert: 1
Das Element 1 enthält den Wert: 3
Das Element 2 enthält den Wert: 5

0 wäre dann die erste Seite und 2 Die letzte Seite oder?
Müsste dann noch wissen, wie ich den ersten und den letzten $key jeweils in einer Variable speichern kann und wie ich dann die werte übertragen kann...
Ich brauch ja immer den Wert der zu dem aktuellen key zugeordnet ist auf jeder Seite dann den nächsten key
Wert 1,3,5 sind is dann meine probid, die ich mit der Datenbank vergleichen kann?
 
Zuletzt bearbeitet:
Den Inhalt solltest du normal so mit bekommen


Inhalt mitschicken
PHP:
<input type="hidden" name="ausgewertet"value="<?php echo ( base64_encode( serialize( $array ) ) ); ?>">


Inhalt wieder auslesen
PHP:
$array = unserialize( base64_decode( $_POST["ausgewertet"] ) );

Habe das ganze aber noch nicht getestet. denke aber das könnte klappen.
 
Zuletzt bearbeitet:
Ich muss irgendwie den letzten Arraykey ($key in meinem Beispiel = 2) auslesen und dann kann ich den Ersten $key = 0 einfach immer +1 nehmen für jede Seite und das solange bis der Endkey erreicht ist

also hab ich praktisch dann 3 Variablen in Gebrauch...

$keystart
$keynow
$keystop

$keynow ist dann am Anfang immer $keystart und wird danach um +1 erhöht

und wenn if($keynow == $keystart) , dann bin ich auf der letzten Seite

und für $keynow brauch ich einfach immer nur den Wert auslesen...

Da muss doch jemand irgendwas simples und einfaches für mich haben oder?^^
Bin schon am verzweifeln :D

sonst mach ich bald einfach das so das man nur jede zeile einzelnd bearbeiten kann durch anklicken... aber wenn man gleichzeitig welche auswählen könnte, wäre das natürlich viel komfortabler :)
 
Also ich hab nochmal rumgesucht...

zuerst einmal muss ich den ersten Wert herausfinden ..
Die erste markierte Checkbox wird immer im Array 0 gespeichert...
Die letzte markierte Checkbox kann man dann mit einer ganz simplen funktion herausfinden...
PHP:
$array= $_POST['checkid'];
$keystart = $array[0];
$keyend = end($array);

Werde das nochmal prüfen ob ich es so evtl endlich hinbekommen kann eine Checkbox nach der Anderen auswerten zu können auf jeder nachfolgenden Seite
 

Ähnliche Themen

Zurück
Oben