tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
832
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    ropueh ropueh ist offline Mitglied Silber
    Registriert seit
    May 2006
    Beiträge
    50
    Hallo.

    Folgendes Problem... ich habe in einem Formular diverse Checkboxen. Sie werden dynamisch aus einer Tabelle (vegan_laeden) ausgelesen, weil sie u.U. später erweitert werden sollen und haben name=laden[] values 1, 2, 3, 4 und 5. Wenn jetzt die 2. und die 4. gecheckt sind, wird in die db (vegan_produkte) bei laden "2, 4" geschrieben.
    So weit so gut.
    Nun wollte ich in einem Edit Formular prüfen, ob die jeweilige checkbox (while Schleife aus vegan_laeden) einen Haken bekommen muss (Array "laden" aus vegan_produkte)

    PHP-Code:
    include ('config.php');
    echo 
    "<table style=\"width: 800px;\">";

    $id $_GET['id'];  
    mysql_query("SET lc_time_names = 'de_DE'");
    $query mysql_query("SELECT id, laden
                  FROM vegan_produkte WHERE id = '
    $id'");

    while(
    $data mysql_fetch_array($query)) {
        
    $laden $data['laden'];

    <
    tr>
        <
    td>Laden</td>\n";
    $query2 = mysql_query("SELECT idladen AS laden2
                  FROM vegan_laeden 
                  
    ");
             
    $i=0;
             
    $laeden=array();
             while(
    $row  =  mysql_fetch_array($query2))  { 
             
    $laeden[] = $row['laden2'];
             
    $ladenarray=explode(",",$laden);

               echo "
    <tr><td></td><td>".$row['laden2']."</td><td><input type=\"checkbox\" name=\"laden[]\" value=\"".$row['laden2']."\" "
               if (
    in_array($row['laden2'],$ladenarray)){ echo "checked"; } echo "/></td><td></td></tr>\n";     
    }
    echo 
    "<tr><td>Kommentar</td><td><textarea name=\"kommentar\" cols=\"20\" rows=\"5\">$kommentar</textarea></td></tr>
    <tr><td><input type=\"submit\" value=\"senden\"/></td></tr>"

    das klappt aber nur bei der ersten angewählten, und nicht bei den weiteren. Das verstehe ich nicht. (mal ganz abgesehen davon, dass ich das checked noch xhtml konform machen muss)
    Kann mir jemand helfen, bzw ist das überhaupt verständlich?
    Vielen Dank schonmal
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    irgendwie ist dein komischer Code fehlerhaft. Ich kann ihn nicht laden ohne das fast alles rot markiert wird.....

    es fehlen im String \ vor " etc.

    Sorry, hab keine Lust dein zusammengeschnittener Code so zu formatieren dass man ihn a) lesen und b)fehlerfrei betrachten kann.

    Solche Konstrukte sind nicht wirklich lesbar:
    PHP-Code:
    if(bedinung){mach was;} mach was;
    if (
    in_array($row['laden2'],$ladenarray)){ echo "checked"; } echo "/></td><td></td></tr>\n"
    selbst dieses Echo ist voller Fehler, so dass ich den logischen Fehler vor lauter normaler Fehler leider nicht sehe
    PHP-Code:
               echo "<tr><td></td><td>".$row['laden2']."</td><td><input type="checkbox\" name=\"laden[]\" value=\"".$row['laden2']."\" "
    Hier noch ein Tipp zu komplexeren zusammengesetzten Strings
    http://www.dynamic-webpages.de/php/l...arsing.complex

    Nun zum Thema
    Du gehst alle EInträge mit der while()-Schleife durch und hängst die Einträge in $laden[] zusammen.
    Jedoch löst du diese in jedem Schleifendurchgang in einen String auf. Wozu?
    Und was ist der Unterschied zwieschen $laeden und $laden?
    Geändert von Yaslaw (09.03.10 um 15:37 Uhr)
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    ropueh ropueh ist offline Mitglied Silber
    Registriert seit
    May 2006
    Beiträge
    50
    PHP-Code:
    <?php
    include ('config.php');
    echo 
    "<table style=\"width: 800px;\">";

    $id $_GET['id'];  
    mysql_query("SET lc_time_names = 'de_DE'");
    $query mysql_query("SELECT id, laden
                  FROM vegan_produkte WHERE id = '
    $id'");

    while(
    $data mysql_fetch_array($query)) {
        
    $laden $data['laden'];

    echo
    "<tr>
        <td>Laden</td>"
    ;
    $query2 mysql_query("SELECT id, laden AS laden2
                  FROM vegan_laeden 
                  "
    );
             
    $i=0;
             while(
    $row  =  mysql_fetch_array($query2))  { 
               
    $laden2 $row['laden2'];
               
    $ladenarray=explode(",",$laden);
               echo 
    "<tr><td></td><td>$laden2</td><td>";
               echo 
    "<input type=\"checkbox\" name=\"laden[]\" value=\"$laden2\" "
               if (
    in_array($laden2,$ladenarray))
               { echo 
    "checked"; }
               echo 
    "/></td><td></td></tr>\n";     
             }
    echo 
    "<tr><td>Kommentar</td><td><textarea name=\"kommentar\" cols=\"20\" rows=\"5\">$kommentar</textarea></td></tr>
    <tr><td><input type=\"submit\" value=\"senden\"/></td></tr>"

    ?>
    Entschuldige, ich habs aufs Wesentliche zusammengekürzt, dadurch die Syntax-Fehler.. nun ist sicherlich vieles noch Unsinn, aber vielleicht nicht mehr falsch. Oder?

    Also was mit dem $laden[] war Blödsinn, habe ich mir so falsch zusammengesucht.
    Jetzt sind nur noch laden und laden2... laden sind die angecheckten Boxes in der Form "2, 3" und laden2 die Läden die insgesamt zur Auswahl stehen.
    Ich habe das erste mal mit Arrays und bin noch nicht wirklich drin bei all den Indizes und Klammern etc pp. Sorry
    Geändert von ropueh (09.03.10 um 15:53 Uhr)
     

  4. #4
    ropueh ropueh ist offline Mitglied Silber
    Registriert seit
    May 2006
    Beiträge
    50
    hat sich erledigt... ganz dummer Fehler.
    laden war mit space hinterm komma gespeichert, daran lag's

    Trotzdem danke für den guten Willen.
     

  5. #5
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Hm. has tdu in der Tabelle vegan_produkte den Text 'laden' oder die id 'id' aus vegan_laeden gespeichert?

    Code PHP:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    
    <?php
    include ('config.php');
    echo "<table style=\"width: 800px;\">";
     
     
    //Einmal alle Läden in ein Array schreiben -> $laeden
    //$laeden = array([id1] => 'Text1', [id2] => 'Text2', ..)
    $res = mysql_query("SELECT id, laden FROM vegan_laeden");
    while($laden = mysql_fetch_array($res)){
        $laeden[$laden['id']] = $laden['laden'];
    }
    mysql_free_result($res);
     
    $id = $_GET['id'];  
    mysql_query("SET lc_time_names = 'de_DE'");
    //Projekte aus der DB laden
    $res = mysql_query("SELECT id, laden
                  FROM vegan_produkte WHERE id = '$id'");
     
    //Hab die while durch ein if ersetzt. Da du direkt auf die id püfst, wird höchstens ein Treffer kommen
    if($data = mysql_fetch_array($res)) {
        $selectedLaeden = explode(",",$data['laden']);
        
        echo"<tr>
            <td>Laden</td>";
         //Pro $laden in $laeden eine Checkbox schreiben
         foreach($laeden as $lid => $laden){
           echo "<tr><td></td><td>{$laden}</td><td>";
           //Wenn über die id aus vegan_laeden gearbeitet werden sollte, ab hier $lid anstelle von $laden verwenden
           echo "<input type=\"checkbox\" name=\"laden[]\" value=\"{$laden}\" "; 
           //Prüfen ob der Laden ausgewählt ist (ev. durch $lid ersetzen, wenn die id in der 
           //Produktetabelle gespeichert wird
           if (in_array($laden, $selectedLaeden)) echo "checked";
           echo "/></td><td></td></tr>\n";     
         }
        echo "<tr><td>Kommentar</td><td><textarea name=\"kommentar\" cols=\"20\" rows=\"5\">{$kommentar}</textarea></td></tr>
        <tr><td><input type=\"submit\" value=\"senden\"/></td></tr>";
    }
    mysql_free_result($res);
    ?>
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

Ähnliche Themen

  1. problem mit checkbox checked
    Von gruebel-gruebel im Forum PHP
    Antworten: 16
    Letzter Beitrag: 07.10.08, 10:58
  2. Checkbox checked/unchecked
    Von redback79 im Forum PHP
    Antworten: 1
    Letzter Beitrag: 18.08.05, 15:33
  3. Radiobuttons überprüfen ob checked
    Von gregorweber im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 04.06.05, 09:33
  4. Antworten: 2
    Letzter Beitrag: 14.02.05, 00:00
  5. Checkbox nach refresh immernoch checked
    Von joky_joky im Forum PHP
    Antworten: 5
    Letzter Beitrag: 15.09.04, 13:19