String auslesen und Werte Checkboxen zuordnen...

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
langerxxx
Mitglied
Beiträge: 48
Registriert: 26.05.2003 20:46

String auslesen und Werte Checkboxen zuordnen...

Beitrag von langerxxx »

Hallo zusammen,

jetzt bin ich bei so einem speziellen Problem gelandet, wo ich nicht weiterkomme...

Ich schreibe an einem Formular, wo man vorher gemachte Angaben überarbeiten kann. Darin sind auch Checkboxes vorhanden. Ist ein Wert in der DB gespeichert, möchte ich im Überarbeitungsformular eine bereits angehakte Checkbox darstellen.

In meiner Datenbank sind die Werte der checkboxes in diesem Format gespeichert: Eintrag1,Eintrag2,Eintrag3,Eintrag4,Eintrag5

Mit folgendem Code lese ich die Werte wieder aus, trenne sie bei den Kommata und stelle entsprechend angehakte (checked) Checkboxen dar. Anstatt spliti könnte man auch explode nehmen.

Code: Alles auswählen

$res = mysql_query("SELECT * FROM userdata")or die(mysql_error());
while($row = mysql_fetch_array($res))
{
$checkbox_explode = spliti(",",$row[bereiche]);
for ($i=0; $i<=count($bereiche_explode); $i++)
{
echo "<tr><td><input type=\"checkbox\" name=\"bereiche[]\" value=\"$row[bereiche]\" checked>$row[bereiche]</td></tr>";
}
}
Das funktioniert so weit auch ganz gut, allerdings ist die Darstellung bzw. Reihenfolge der Checkboxen sehr merkwürdig... Meine Ausgabe - die eckigen Klammern stehen für jeweils eine Checkbox:

[]Eintrag5
[]Eintrag5
[]Eintrag4
[]Eintrag1,Eintrag2,Eintrag3,Eintrag4,Eintrag5

Wo könnte denn da der Fehler liegen?? Ich finde ihn einfach nicht...

Danke und Gruß
langerxxx[/code]
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Beitrag von itst »

Trenne den String besser mit explode auf statt mit split, dann sollte das klappen.
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
langerxxx
Mitglied
Beiträge: 48
Registriert: 26.05.2003 20:46

Beitrag von langerxxx »

Mmh, mit explode habe ich genau den gleichen Effekt...

Gruß
langerxxx
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Beitrag von itst »

Hab Deinen Code mal aufgeräumt und ein paar Logik- und Syntax-Fehler rausgehaun :-)

Code: Alles auswählen

$res = mysql_query("SELECT * FROM userdata")or die(mysql_error());
while($row = mysql_fetch_array($res))
{ 
    $checkbox_explode = explode(",",$row['bereiche']);
    for ($i=0; $i<count($checkbox_explode); $i++)
    {
        echo '<tr><td><input type="checkbox" name="bereiche[]" value="'         . $checkbox_explode[$i] . '" checked>' . $checkbox_explode[$i] . '</td></tr>';
    }
}
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
langerxxx
Mitglied
Beiträge: 48
Registriert: 26.05.2003 20:46

Beitrag von langerxxx »

Danke dir! Einen Syntax-Fehler hab' ich selbst noch gefunden und den Code noch etwas erweitert... Wenn man jetzt noch die Checkboxes darstellen möchte, die vorher nicht angehakt waren, dann sieht der komplette Code so aus:

Code: Alles auswählen

$res = mysql_query("SELECT * FROM userdata WHERE id = '$aendern_id'");
while($row = mysql_fetch_array($res)) 
{ 
    $bereiche_explode = explode(",",$row[bereiche]);
}

    $alle_bereiche = array('Wert1','Wert2','Wert3','Wert4','Wert5','Wert6');

    for ($i=0; $i<count($alle_bereiche); $i++)
    { 
        if (!in_array($alle_bereiche[$i],$bereiche_explode)){
        echo "<tr><td><input type='checkbox' name='bereiche[]' value='$alle_bereiche[$i]'>$alle_bereiche[$i]</td></tr>";
        }
    }

    for ($i=0; $i<count($bereiche_explode); $i++)
    { 
        echo '<tr><td><input type="checkbox" name="bereiche[]" value="'. $bereiche_explode[$i] . '" checked>' . $bereiche_explode[$i] . '</td></tr>';
    }
Vielleicht kann ja noch jemand etwas damit anfangen.

VG
langerxxx
Antworten

Zurück zu „Coding & Technik“