Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
  Druckansicht

  [PHP] checkboxen in einem Formular richtig übergeben?
Autor Nachricht
    BeitragVerfasst: 21.06.2009 16:35 
Co-Admin
Co-Admin
Benutzeravatar
Offline

Beiträge: 3349
Registriert: 18.12.1999 02:01
Wohnort: From Hell
Ich stell mich gerade mal wieder an, als würde ich das zum ersten Mal machen ... :roll:

Mithilfe eines Scriptes lese ich eine andere Website aus und lasse die Daten als Array ausgeben, um sie anschließend in eine MySQL-DB einzufügen. Soweit auch kein Problem, aber ich will nicht zwingend alle Daten haben die ausgegeben werden und habe dafür checkboxen an die entsprechenden Zeilen gesetzt. Value = "on" und CHECKED der Wert soll in die DB und bei nicht "CHECKED" logischer Weise nicht.

Das FORM was die Ausgabe der Fremdseite wiedergibt (auszug):
Code:
if($epi) {
?>
          <tr>
            <td style="border: 1px solid #FF8000;" bgcolor="#FFFF80">
            <code><?php echo $step; ?></code> | Staffel:<input type="text" name="staffel[]" id="staffel[]" size="1" value="<? echo $st; ?>" style="font-size: 8pt; border:1px solid #FF8000;">
            Episode:<input type="text" name="episode[]" id="episode[]" size="1" value="<? echo $epi; ?>" style="font-size: 8pt; border:1px solid #FF8000;">
            Titel: <input type="text" name="titel[]" id="titel[]" size="40" value="<? echo $stringg; ?>" style="font-size: 8pt; border:1px solid #FF8000;">
            Info: <input type="text" name="info[]" id="info[]" size="40" value="" style="font-size: 8pt; border:1px solid #FF8000;">
            <input type="checkbox" name="takeit[]" id="takeit[]" value="on" <? if($epi!="0") echo "checked"; ?>>
            <code><?php echo $lcnt; ?></code>
            </td>
          </tr>
<?
         }


Nach dem drücken von "Absenden" der PHP-Code der anfängt zu arbeiten:
Code:
if ($_POST["doit"] == "newseries") {
   connect_db();
for($i=0; $i < count($_POST[episode]); $i++){
  $serie = $_POST[serie]; //wird nur einmal für alle Felder angegeben
  $staffel = $_POST[staffel][$i];
  $episode = $_POST[episode][$i];
  $titel = $_POST[titel][$i];
  $info = $_POST[info][$i];
  $takeit = $_POST[takeit][$i];
if($takeit=="on") {
   $result = MYSQL_QUERY("INSERT INTO $tabelle (serie, staffel, episode, titel, info) VALUES ('$serie', '$staffel', '$episode', '$titel', '$info')") or die(mysql_error());
            }
}


Bei der Übergabe des FORM an diese Schleife werden alle Werte erkannt und korrekt nacheinander eingefügt - NUR die Checkbox-Werte nicht. Wenn ich jetzt - sagen wir mal - 15 Zeilen auswählen könnte und davon nur die Letzte haben will, also alle anderen Abwähle, fügt er mir die Allererste ein und denkt, dass dieser der Wert "on" (checked) zugeordnet war, anstatt der Eigentlichen. Wie mach ich dem blöden Ding klar, dass er alles ignorieren soll, ausser die Zeile, wo eben CHECKED ("on") ist !?!

greetz
JMD

PS: Habs auch schon mit ner foreach()-schleife probiert, selbes Ergebnis.
PPS: Habe ebenfalls probiert die for()-schleife rückwärts auszulesen, bringts auch nicht.
PPPS: Bitte nachvollziehbare Lösungswege. Idealer Weise als Bsp ;)

________________________
Bild
Erst nachdem wir alles verloren haben, haben wir die Freiheit, alles zu tun.
Specs: knotenberlin.de/pc.html


Nach oben
 Profil E-Mail senden  
 

  
    BeitragVerfasst: 21.06.2009 17:26 
Neuankömmling
Benutzeravatar
Offline

Beiträge: 33
Registriert: 18.06.2009 00:06
Die Checkboxen packen nur die Werte in das Array was angekreuzt wird. Also bei dir wahlweise 0 bis n, so hast du bei 2 angekreuzten Boxen, 2 mal "on" drin, egal welche angekreuzt wurden.

Ich würde da nun einen Zähler einbauen, der dir sagt, welche Checkbox nun gemeint ist, je nachdem wie du die "Fremdseite" ausgibst.
Also value="<? $i ?>" falls du dort auch über $i iterierst.

visitor


Nach oben
 Profil  
 

  
    BeitragVerfasst: 22.06.2009 01:34 
Co-Admin
Co-Admin
Benutzeravatar
Offline

Beiträge: 3349
Registriert: 18.12.1999 02:01
Wohnort: From Hell
Hi visitor,

danke für den Lösungsanzatz. Das hat aber leider so nicht funkioniert.

Ich habe aber eine Lösung gefunden (falls das auch mal wer brauch):
Code:
if ($_POST["doit"] == "newseries") {
   connect_db();

  if(isset($_POST['takeit'])) {
    foreach($_POST['takeit'] AS $id => $value) {

  $takeit = $_POST[takeit][$id];
  $serie = $_POST[serie];
  $staffel = $_POST[staffel][$id];
  $episode = $_POST[episode][$id];
  $titel = $_POST[titel][$id];
  $info = $_POST[info][$id];
 
   $result = MYSQL_QUERY("INSERT INTO $tabelle (serie, staffel, episode, titel, info) VALUES ('$serie', '$staffel', '$episode', '$titel', '$info')") or die(mysql_error());


  }
}
}

Und die Checkbox (die id="" ist in meinem Fall eigtl nebensächlich)
Code:
$vi=0;
$vi++;  // symbolisch

if($epi) {
?>
<input type="checkbox" id="chooseit<? echo $vi; ?>" name="takeit[<? echo $vi; ?>]" value="on" <? if($epi!="0") echo "checked"; ?>>
<?
}


Danke trotzdem.
greetz

________________________
Bild
Erst nachdem wir alles verloren haben, haben wir die Freiheit, alles zu tun.
Specs: knotenberlin.de/pc.html


Nach oben
 Profil E-Mail senden  
 

Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


  Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
RSS-Feed
Impressum und Kontakt
Style created by phpBB3 styles , ziola alveo akuna
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Optimized by SEO phpBB
Deutsche Übersetzung durch phpBB.de