Ausführen von Aktionen, die mehrere Datenbank-Einträge betreffen

Phoenixx83

Grünschnabel
Hallo, ich habe folgendes Problem:

ich bastle gerade eine Website, um eine Firmen-Datenbank zu verwalten. Jede Firma verfügt über eine Firmen_ID, welche die Firma eindeutig identifiziert.

Ich hab eine Seite gebastelt, bei der sämtliche Firmen aufgelistet werden. Am Ende jeder Zeile ist ein Link, welcher auf eine php-Datei verweist, die den Eintrag aus der Datenbank wirft. Die zu löschende Firma wird dabei per Übergabe der Firmen_ID festgelegt.

Nun zu meinem Problem:
ich möchte die Auflist-Seite mit Checkboxen erweitern, damit zum Beispiel 20 Firmen markiert werden können und alle Firmen auf einmal aus der Datenbank geworfen werden können.

Leider hab ich keine Ahnung, wie ich das anstellen soll...

Wie soll ich alle Firmen_IDs gleichzeitig übergeben?

Über Hilfe würd ich mich sehr freuen,

Gruß
Christian
 
Hm!
Die Checkboxen heißen z.b. check7 für Firma 7.
In der PHP-Datei
Code:
$j=0;
for($i=0;$i<anzahl_der_firmen;$i++) {
    if(isset($_REQUEST["check".$i])) $array[$j]=$i;
}

So hättest du sie z.b. in einem Array. Dann kannst du entweder für jedes Feld ne extra Query machen (würde ich machen) oder mit einer weiteren FOR-Schleife den WHERE-Teil der SQL-Query erstellen. Also
Code:
for($i=0;$i<count($array);$i++) $where.="OR firmen_id='".$array[i]."' "; oder so

Cu

// EDIT
Sorry wenn ichs grad net gescheit beschrieben hab oder es bessere Möglichkeiten gibt! Bin grad fett müde.
 
Servus, erst mal danke für deine Hilfe.
Hab's nur nicht so ganz geblickt, bin noch Anfänger...

Hab's mal verstanden, dass ne Variable j mit 0 initialisiert wird und die Schleife so lange ausgeführt wird, wie i kleiner der Anzahl der Firmen ist.

"isset" und "$_REQUEST" hör ich grad leider zum ersten Mal, wäre super wenn du diese Zeile noch ein wenig erläutern könntest ;-)

Danke,
Gruß
Christian
 
hab zwar nicht den letzten Beitrag geschrieben aber erklärs dir trotzdem mal kurz:

$_REQUEST["check".$i] liefert den Inhalt der Checkbox i zurück

dort gibt es ja nur zwei Möglichkeiten ja oder nein, oder ander gesetzt oder nicht gesetzt

isset .... is set = ist gesetzt - mal ganz frei übersetzt

Also auf deutsch ausgedrück heißt

isset($_REQUEST["check".$i]) = ist die Checkbox i gesetzt?

Alles klar?
 
Braucht gar nicht so kompliziert zu sein... man kann nämlich auch Formularfelder als Array an PHP übergeben:

(HTML-Formular)
HTML:
 <form action="checkboxtest.php" method="post">
 <input type="checkbox" name="check[]" value="alpha"> Alpha<br>
 <input type="checkbox" name="check[]" value="beta"> Beta<br>
 <input type="checkbox" name="check[]" value="gamma"> Gamma<br>
 <input type="checkbox" name="check[]" value="delta"> Delta<br>
 <input type="submit" value="Absenden">
 </form>

Aktiviert man mehrere dieser Checkboxen, kann man in PHP auf alle Werte mittels eines Arrays zugreifen. Dieses beginnt im o.g. Beispiel mit 0, und endet bei Anzahl aktivierter Kästchen minus 1. Sind also alle 4 Checkboxen aktiviert, hat man ein Array mit 4 Elementen:

Array[4] {
0 => "alpha",
1 => "beta",
2 => "gamma",
3 => "delta"
}

Sind weniger aktiviert, ist das Array entsprechend kleiner.

So kann man z.B. alle Werte ausgeben, die markiert wurden:

PHP:
 // checkboxtest.php
 
 if (isset($_POST["check"] && is_array($_POST["check"])) {
 	echo "Gewählte Elemente: ";
 	foreach($_POST["check"] as $value) {
 		echo $value, " ";
 	}
 } else {
 	echo "Keine Elemente gewählt";
 }
 
Hallo,

ich hab das ganze jetzt mal folgendermaßen gelöst:

PHP:
<?php
session_start();
include("dbconnect.php");
$obergrenze = count($checkbox);
for ($i = 0; $i < $obergrenze; $i++)
{
$loeschen = "DELETE FROM db WHERE Firmen_ID = $checkbox[$i]";
$loesch = mysql_query($loeschen);
}
?>

Ist das halbwegs vernünftig gelöst?

Wie gesagt, kenn mich leider noch nicht ausreichend mit PHP aus...

Gruß
Christian
 
Zurück