Script einfacher gestalten

reflex

Grünschnabel
Ich habe ein Nachrichten-system geschrieben.

Titel | checkbox-variable1(id) | hidden-variable2(id_2)
|Nachricht-1| c_1 | c1
|Nachricht-2| c_2 | c2
|Nachricht-3| c_3 | c3
...etc...

Der User kreuzt durch eine checkbox die Nachrichten an, die er löschen möchte.
Nehmen wir mal Beispielsweise Nachricht-1 und Nachricht-2.
Übergeben werden demzufolge nur die variablen: c_1, c1, c_2 und c2

Meine jetziges Script sieht so aus:

if($c_1) {
$loeschen = "DELETE FROM x_msg WHERE id = '$c_1' AND id_2='$c1' ";
$loesch = mysql_query($loeschen); }
if($c_2) {
$loeschen = "DELETE FROM x_msg WHERE id = '$c_2' AND id_2='$c2' ";
$loesch = mysql_query($loeschen); }
...etc...

Kann ich das nicht irgendwie in eine While schleife integrieren?
Wenn ein user jetzt z.B. 100 nachichten hat, dann wäre das script mit den ifschleifen ziemlich umständlich.

Danke für eure Vorschläge.

reflex
 
also...
das geht mit ner for-schleife, und zwar, wie folgt:

Code:
for ($i=1;$i<100;$i++)
{

$variable1 = 'c_'.$i;
$variable2 = 'c'.$i;

if ($$variable1) 
{ 
$loeschen = "DELETE FROM x_msg WHERE id = '$$variable1' AND id_2='$$variable2' ";
$loesch = mysql_query($loeschen); 
}

}

in der ersten runde wäre $i ja gleich 1, daher wäre $variable1 gleich c_1 und $variable2 gleich c1
um dann auf $c_1 ($c1) zuzugreifen, setzt du nur ein $-zeichen vor das $variable1 ($variable2) und logischer weise damit vor das c_1 (c1).

müsste so tun, viel spass dabei

DJ2K

ps: die 100 müsste man dann durch die insgesamt-nachrichten-anzahl ersetzen, ode du lässt pauschal 100.
 
Super danke.. Das sieht ja schon viel übersichtlicher aus :)
Nur es geht noch nicht 100%

Hier mal die $loeschen ausgegeben:

DELETE FROM x_msg WHERE id='$c_1' AND id_2='$c1'

<-- Er wandelt die variablen nicht in den inhalt um. Bist du sicher dass das mit doppel $ geht?

thx reflex
 
Hi,

versuchs mal so:
PHP:
for ($i=1;$i<100;$i++) {
	$variable1 = ${'c_'.$i};
	$variable2 = ${'c'.$i};
	
	if ($variable1) {
		$loeschen = "DELETE FROM x_msg WHERE id = '$variable1' AND id_2='$variable2' ";
		$loesch = mysql_query($loeschen); 
	}
}
 
oder du benennst in deinem Formular einfach alle Checkboxen c[] und erhöhst immer nur den Wert, also quasi so:
PHP:
<input type="checkbox" name="c[]" value="1"> 
<input type="checkbox" name="c[]" value="2">
usw.

in deinem PHP-Script müsste dann eine foreach-Schleife oder vergleichbares die übergebenen Werte aus dem Array auslesen und entsprechend eine SQL-Anweisung ausführen.
 
doppel $

also php kann das mit den doppel $. ist in glaub ich keiner anderen programmiersprache so. aber php kanns 100%

wahrscheinlich liegt das problem dann da, dass bei strings, die mit " eingerahmt werden, bzw. mit ' einfach der variablenname als string ausgegeben wird, bzw. der inhalt der variable. das macht bei php oft probs und ich weiss immer noch nicht genau, bei welcher "stringeinklammerung" (also: " oder ') was gemacht wird.
und wenn dann noch die doppel $ ins spiel kommen, kann es sein, dass alles wieder anders ist.


mfg dj2k
 
@ DeeJTwoK

Beispiel:

$test = 'welt';

$var = "hallo $test";

// hallo welt


$var = 'hallo $test';

// hallo $test

Also was in ' steht wird als String behandelt. Bei " versucht PHP weiter Variablen zu parsen. Deswegen sollte man sich die Schreibweise angewöhnen:

$var = 'hallo' . $test;
 
Zurück