Schräges Checkbox & If-Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Schräges Checkbox & If-Problem

    Hallo,
    ich habe ein schräges Problem mit einem Formular. In diesem Formular sind mehrere Checkboxen für Stati. Es handelt sich um ein Editformular, so daß ich mir vorher die werte aus einer mysqldatenbank ziehe. Soweit sogut.
    Hier mein Formularbereich mit einer Checkbox:
    <div class="contact_form_text"><input type="checkbox" name="kunde" value="1" <? echo $_SESSION['pedit_status_kunde']; ?>><? echo _("Customer"); ?></div>

    Die Sessionvariable wird beim 1. Laden des Formulares mit checked gefüllt oder eben nicht

    //Kunde
    $sqlstr3="select count(user_id) from user_xref_gruppen where user_id = '$id' and gruppen_id = '$cust_id'";
    $res3=mysql_query($sqlstr3);
    $row3 = mysql_fetch_array($res3);
    if ($row3['count(user_id)']>"0")
    {
    $_SESSION['pedit_status_kunde']="checked";
    }
    else
    {
    $_SESSION['pedit_status_kunde']="";
    }

    Bis hierhin klappt alles noch. Bei einem Submit wird die Variable $kunde überprüft und dann der Inhalt der Sessionvariable( wird nicht verändert). Danach unterscheide ich, ob ich einen neuen Db-Eintrag setze, oder delete.
    Ich habe folgendes Symptom:
    1. Ein Insert klappt.
    2. Ein Update des Formulares löscht den Wert aus der Datenbank, auch wenn ich die Checkbox nicht verändert habe und diese immer noch checked ist.

    //Customers
    if ($kunde == "1")
    {
    if( _SESSION['pedit_status_kunde']=="")
    {
    $sqlstr12="insert into user_xref_gruppen (user_id,
    gruppen_id) values ('$id', '$cust_id')";
    //echo $sqlstr2;
    //exit(0);
    $res12 = mysql_query($sqlstr12);
    if (mysql_errno() <> 0)
    {
    echo mysql_errno().": ".mysql_error()."<BR>";
    echo "<b>$sqlstr12</b><br>";
    }


    }
    //Wenn value der Checkbox nicht 1...
    }
    else
    {
    if ($_SESSION['pedit_status_kunde']=="checked")
    {

    /*

    $sqlstr13="delete from `user_xref_gruppen` where `user_id`='$id' AND `gruppen_id`='$cust_id'";

    $res13 = mysql_query($sqlstr13);
    //echo $sqlstr22;
    //exit(0);
    if (mysql_errno() <> 0)
    {
    echo mysql_errno().": ".mysql_error()."<BR>";
    echo "<b>$sqlstr13</b><br>";
    }

    */
    }



    }


    Das schräge ist, mal funktioniert alles ganz normal und die Checkbox wird nicht gelöscht.

    Bin echt überfragt. Vielleicht habe ich aber auch nur einen blöden Fehler gebaut.

    Danke und Gruesse Gordon
    Zuletzt geändert von flashg0101; 07.06.2005, 18:03.

  • #2
    Hallo,

    probier mal anstatt das count(user_id) in der SQL-Abfrage einfach die Spaltenabfrage des Status.

    Und unten bei
    if ($row3['count(user_id)']>"0")
    schreibste einfach
    if(mysql_num_rows($res3)){
    //true
    }
    else{
    //false
    }

    mysql_num_rows ist nur dann true, wenn mind. 1 Eintrag gefunden wurde!

    ------------------------

    Mach doch einfach mal ein Echo von der Checkbox nach dem Senden und direkt danach in EXIT!
    Und dann weißte, ob's schon am Senden liegt oder beim überprüfen.
    Rechtschreibfehler?

    Kommentar


    • #3
      Hallo

      >
      Mach doch einfach mal ein Echo von der Checkbox nach dem Senden und direkt danach in EXIT!
      Und dann weißte, ob's schon am Senden liegt oder beim überprüfen.
      >
      Habe die 4 Möglichkeiten schon durchgecheckt. Es liegt wohl am Überprüfen....

      if ($kunde==1 && $_SESSION['pedit_status_kunde']=="") dann... insert richtig. !Geht!
      if ($kunde==1 && $SESSION['pedit_status_kunde']=="checked")dann...
      soll nix passieren, da User ja schon in DB. Also deshalb draussen gelassen.

      Hier muss der Fehler liegen:
      if ($kunde=="" && $_SESSION['pedit_status_kunde']=="checked") dann...
      Jetzt soll gelöscht werden.
      if ($kunde=="" && $_SESSION['pedit_status_kunde']=="")dann..
      soll nix passieren, da Kunde eh nicht in db...

      Es muss mit der Value der Checkbox zusammenhängen. Vorhandene Einträge werden immer gelöscht, und neue angenommen.

      Wie ist der Wert einer Checkbox, wenn sie nicht aktiviert wurde?

      Danke und Gruesse Gordon

      Kommentar


      • #4
        Hi,

        soviel ich weiß ist der 0 oder "" (nichts).

        also, ich weiß nicht, ob's daran liegt, aber 3 sachen allgemein:
        - if( _SESSION['pedit_status_kunde']=="") <-- hier fehlt das $ vor _SESSION
        - "delete from `user_xref_gruppen` where `user_..." <-- hier hast du `gesetzt. Warum? nicht nötig
        - if ($row3['count(user_id)']>"0") <-- hier überprüfst du eine Zahl, ob sie größer als 0 ist. Aber du gibst einen String an! probier mal ... >= 1

        Kommentar


        • #5
          Original geschrieben von flashg0101
          Wie ist der Wert einer Checkbox, wenn sie nicht aktiviert wurde?
          dann wird für diese überhaupt kein name/value-paar übertragen.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar

          Lädt...
          X