checkboxen + drowdown + submit

schmood hat gesagt.:
Was ist $ausgabe? Was hast du da definiert?

Hallo

$ausgabe ist eine Variable, die ich in der Forech-Schleife erstellt haben. Diese Variable speichert nun die Werte möglicher angeklickter Checkboxen. Das Prinzip sollte klar sein, wenn man das Beispiel im FAQ-Link mal getestet hat.

Ich speichere die Werte in der Variablen, um den Gesamtwert später im SQL-Delete-Statement verwenden zu können.

Ein möglicher Wert der Variable $ausgabe könnte dann sein

1,4,5,6,7,

Da ich aber für das Delete-Statement das letzte Komma nicht brauche, ziehe ich dies mit HIlfe der Zeichenkettenfunktion substr() http://de3.php.net/substr ab.

Ließe man sich das SQL-Delete-Statement nun auf den Bildschirm printen, würde der String so aussehen

delete from tabelle where id in (1,4,5,6,7)

Wird dieses Statement über eine Aktion aufgerufen (Abschicken des Formulars), dann werden genau die Datensätze gelöscht, die zu Anfang in der Variablen $ausgabe gespeichert worden sind und später dann für das SQL-Delete-Statement verarbeitet.
 
Ha ich mach gerade auch eins schau dir das mal an
kann sein das es dir hilft:


PHP:
//Auswahl Arbeitsschritte!/////////////
	if($_POST['act']=="del") { 
		foreach($_POST['checkbox'] as $k => $v) {
        
 
		$sqldel = mysql_query("DELETE FROM
						    `lsk_pn`
						WHERE
    						`ID`='$v'");
		mysql_query($sqldel);
		}
	} 

	if($_POST['act']=="ant") { 
		foreach($_POST['checkbox'] as $k => $v) {
        
 
		$sqlant = mysql_query("SELECT 
									*
								FROM
	    				    		`lsk_pn`
								WHERE
    								`ID`='$v'");
		mysql_query($sqlant);
		$ant = mysql_fetch_assoc($sqlant);
		
		}
	} 
}
//////////////////////////////////////////////////

müsste doch genau das sein was du suchst näch ? :D
 
Also,
<form method="post" action="index.php?show=mysmsmsg">

Den checkboxen ist value="<php $mysms->id ?>" zugewiesen!

Selectbox sieht folgender Maßen aus:

<select class="form" name="act">
<option selected>Aktion wählen...</option>
<option value="del">löschen</option>
</select>

Dann wird das Script aufgerufen wo folgendes drinnsteht:
Code:
<?php

$getaction=$_POST["action"];


foreach($_POST['checkbox'] as $value) {
        $ausgabe .= $value.",";
        }
   
$sql1 = "delete from sms where id in (".substr($ausgabe,0,-1).")";    

} 



?>


Was mach ich falsch? Bzw was hab ich vergessen?
 
Hi

ich habe oben in meinem Script als Kommentar // weitere Verarbeitung geschrieben, d.h. du musste das Delete-Statement mit

mysql_query($sql)

ausführen.

Bsp.

PHP:
<?
if($_POST['act'] == 'del') {
foreach($_POST['checkbox'] as $value) {
        $ausgabe .= $value.",";
        }
   
$sql1 = "delete from sms where id in (".substr($ausgabe,0,-1).")";    
mysql_query($sql1);
} 
?>

Wobei eine Select-Box meiner Meinung nach nur Sinn macht, wenn man unterschiedliche Aktionen damit aufrufen möchte. Nur für das Löschen könntest Du Dir diese eigentlich sparen.
 
Zuletzt bearbeitet:
Ich weiß, ich nerv bestimmt aber :


Warning: Invalid argument supplied for foreach() in PFAD on line 4


In Line 4 ist das foreach!
 
Hi

das kann ich so nicht sagen, da müsste man den ganze Quellcode sehen.
Es kann jetzt sein, dass kein Wert übergeben wird (entweder ist keiner angeklickt, oder die Variablen stimmen und und und). Das kann man noch abfragen.
 
HTML:
<?php if($access<2) { echo $noacc; } else { ?>
<table style="width:90%" border="0" cellspacing="2" cellpadding="0">
<tr><td class="left"></td><td class="right">
<a href="index.php?show=mysms">empfangen</a> - 
<a href="index.php?show=mysmsto">gesendet</a> - 
<a href="index.php?show=mysmsdo">erstellen</a>
</td></tr></table><br />
<form method="post" action="index.php?show=mysmsmsg">
<table style="width:90%" border="0" cellspacing="1" cellpadding="0" class="forum">
	<tr>
		<td class="headb">Neue Nachrichten:</td>
	</tr>
</table>
<table style="width:90%" border="0" cellspacing="1" cellpadding="0" class="forum">

	<tr>
		<td style="width:149px" align="center"><b>Absender</b></td>
		<td style="width:478px" align="center"><b>Betreff</b></td>
		<td style="width:155px" align="center"><b>Datum</b></td>
		
	</tr>

	<?php $sql="SELECT * FROM sms WHERE senduser='$myid' AND viewed='0' ORDER BY date DESC";
	$data=mysql_query($sql, $db);
	while ($mysms = mysql_fetch_object ($data)) { ?>
	<tr>
		<td style="width:149px" class="leftb">
		<?php $sql2="SELECT nick,id FROM users WHERE id='$mysms->fromuser'";
		$data2=mysql_query($sql2, $db);
		while ($users = mysql_fetch_object ($data2)) { 
		print "<strong><a href=\"index.php?show=users&amp;userid=$users->id\">"; 
		secure($users->nick); echo "</a></strong>"; } ?>
		</td>

		<td style="width:478px" class="leftb">
		<?php print "<strong><a href=\"index.php?show=mysmsdet&amp;msid=$mysms->id\">"; 
		secure($mysms->headline); echo "</a></strong>"; ?>
		</td>
	
		<td  style="width:155px"class="centerb">
		<?php  $date = date("d.m.y",$mysms->date);
		$day = date("H:i",$mysms->date);
		echo "<strong>$date - $day</strong>"; ?>
		</td>
		<td style="width:20px" class="leftb" align="center"><input type="checkbox" name="msgselect"></td>
	</tr>

	
		
	

	<?php } ?>
</table>
<br>

<table style="width:90%" border="0" cellspacing="1" cellpadding="0" class="forum">
<tr><td>
<div align="right">
<select class="form" name="act">
  <option selected>Aktion wählen...</option>
  <option>löschen</option>
  </select>
</div>
</td></tr>
</table><br>

<table style="width:90%" border="0" cellspacing="1" cellpadding="0" class="forum">
	<tr>
		<td class="headb">Gelesene Nachrichten:</td>
	</tr>
</table>
<table style="width:90%" border="0" cellspacing="1" cellpadding="0" class="forum">

	<tr>
		<td style="width:149px" align="center"><b>Absender</b></td>
		<td style="width:478px" align="center"><b>Betreff</b></td>
		<td style="width:155px" align="center"><b>Datum</b></td>
		
	</tr>

	
	

	<?php  ?>
	<?php $sql="SELECT * FROM sms WHERE senduser='$myid' AND viewed='1' ORDER BY date DESC";
	$data=mysql_query($sql, $db);
	while ($mysms = mysql_fetch_object ($data)) { ?>
	<tr>
		<td style="width:149px" class="leftb">
		<?php $sql2="SELECT nick,id FROM users WHERE id='$mysms->fromuser'";
		$data2=mysql_query($sql2, $db);
		while ($users = mysql_fetch_object ($data2)) { 
		print "<a href=\"index.php?show=users&amp;userid=$users->id\">"; 
		secure($users->nick); echo "</a>"; } ?>
		</td>
		<td style="width:478px" class="leftb">
		<?php print "<a href=\"index.php?show=mysmsdet&amp;msid=$mysms->id\">"; 
		secure($mysms->headline); echo "</a>"; ?>
		</td>
		<td style="width:155px" style="width:30%" class="centerb">
		<?php  $date = date("d.m.y",$mysms->date);
		$day = date("H:i",$mysms->date);
		echo "$date - $day"; ?>
		</td>
		<td style="width:20px" class="leftb"align="center"><input type="checkbox" name="checkbox" value="<?php $mysms->id ?>"></td>
	</tr>
	
	

	<?php } ?>
	
	
</table>






<br>

<table style="width:90%" border="0" cellspacing="1" cellpadding="0" class="forum">
<tr><td>
<div align="right">

	<select class="form" name="act">
  		<option selected>Aktion wählen...</option>
  		<option value="del">löschen</option>
  	</select>
  	<input type="submit" class="form" value="Go">
</div>
</td></tr>
</table><br>
<?php } ?>
</form>

und das Script:
PHP:
<?

if($_POST['act'] == 'del') {
foreach($_POST['checkbox'] as $value) {
        $ausgabe .= $value.",";
        }
   
$sql1 = "delete from sms where id in (".substr($ausgabe,0,-1).")";    
mysql_query($sql1, $db);
}
?>

Kästchen sind angeklickt
 
Du musst natürlich in $_POST['checkbox'] statt checkbox den Namen Deiner Checkbox reinsetzen.
Ausserdem solltest Du das Ganze noch mit if(is_array($_POST['checkbox'])) prüfen, sonst kommt die Fehlermeldung wenn keine Checkbox ausgewählt wurde.
 
Hi

ich gehe jetzt mal davon aus, dass die Verbindung zur Datenbank im 2. Script stimmt, da sie je nicht gepostet ist.

Dann auf die Schnelle hast Du in Deinem 1. Script 2x die Selectbox mit dem gleichen Namen in einem Formular laufen.

Weiterhin musst Du den Namen checkbox als Array aufrufen

<input type="checkbox" name="checkbox[]" value="...">

Das wurde aber alles schon in den Beispielen beschrieben.
 
Zurück