Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Mal funktioniert es....mal funktioniert es nicht?!

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Mal funktioniert es....mal funktioniert es nicht?!

    Also ich versteh die Welt nicht mehr....
    hab ein kleines Script, bei dem Werte von Checkboxes in eine DB übertragen werden. Dabei sollen die ausgewählten Wochentage und die UserId übertragen werden.

    Tabelle sieht so aus:
    ID | Userid | Mon | Tue | Wed | Thu | Fri | Sat | Sun | aktiv

    Userid = int alles andere tinyint mit länge 1
    Wird 1 eingetragen heißt es ja, bei 0 heißt es nein (handelt sich btw um einen PaidMailer der nur an bestimmten Tagen senden soll).


    Formular sieht so aus:
    Code:
    <form name="options" method="post" action="index2.php?p=options&action=save&<?php echo"$sessionname=$sessionid";?>">
    
    PaidMails Optionen:
    <p class="links">Status:</p>
    <p class="links">
    <input name="aktiv" type="radio" value="1"> aktiviert
    
    
    <input name="aktiv" type="radio" value="0"> deaktiviert
    </p>
    <p class="links">
    Wochentage ausw&auml;hlen, an denen du PaidMails empfangen m&ouml;chtest:
    </p>
    <p class="links">
    <input name="tage[]" type="checkbox" value="Mon"> Montag
    
    <input name="tage[]" type="checkbox" value="Tue"> Dienstag
    
    <input name="tage[]" type="checkbox" value="Wed"> Mittwoch
    
    <input name="tage[]" type="checkbox" value="Thu"> Donnerstag
    
    <input name="tage[]" type="checkbox" value="Fri"> Freitag
    
    <input name="tage[]" type="checkbox" value="Sat"> Samstag
    
    <input name="tage[]" type="checkbox" value="Sun"> Sonntag
    </p>	
    <p class="links"><input class="inputs3" type="submit" value="speichern"></p>
    </form>
    Hab mal alle Table sachen rausgenommen um es übersichtlicher zu machen


    Dann zum PHP Code:

    Code:
    <?php
    $aktiv=$_POST['aktiv'];
    $update=mysql_query("REPLACE INTO paidmails_options (id,userid,Mon,Tue,Wed,Thu,Fri,Sat,Sun,aktiv) VALUES ('','$userid','0','0','0','0','0','0','0','$aktiv')");
    
    if($_POST['tage'] != "")
    {
    foreach($_POST['tage'] as $tage)
    {
    $update2=mysql_query("UPDATE paidmails_options set $tage='1' where userid='$userid'");
    }
    }
    ?>
    $userid wird schon vorher definiert....


    Also wie gesagt, mal klappt es....mal klappt es nicht. Wenn es nicht klappt wird zwar ein neuer Eintrag in der DB eingetragen, aber alles mit "0", obwohl auch Tage gechecked waren.

    Vermute, dass es mit dem Replace Befehl zu tun hat weil ich den zum ersten Mal verwende, aber weiß nicht so recht.

    Gruss
    goosele


  • #2
    Dein Skript ist totaler Humbug. Was ist REPLACE INTO? Wozu?

    Du willst einfach nur die angekreuzten Tage in die DB eintragen?

    PHP-Code:
    <?php
    $sql 
    sprintf("INSERT INTO paidmails_options SET userid = %u, Mon = %u, Tue = %u, Wed = %u, Thu = %u, Fri = %u, Sat = %u, Sun = %u, aktiv = %u",
      
    $userid,
      (isset(
    $_POST['tage']) && in_array('Mon'$_POST['tage'])) ? 0,
      (isset(
    $_POST['tage']) && in_array('Tue'$_POST['tage'])) ? 0,
      ..
      (isset(
    $_POST['tage']) && in_array('Sun'$_POST['tage'])) ? 0,
      
    $_POST['aktiv']);
    mysql_query($sql);
    ?>
    Eventuell musst du statt dem INSERT ein Update machen.
    Und bitte nicht Denglisch verwenden, entweder Deutsch oder Englisch, nicht beides gemischt, das macht die Vorteile jeder Sprache zunichte.

    Kommentar


    • #3
      Ich dachter Replace ist gleich Update und INsert in einem
      Also wenn nicht vorhanden Insert, sonst update....

      oder habe ich was falsch verstanden?

      Kommentar


      • #4
        Zitat von Zergling
        Dein Skript ist totaler Humbug. Was ist REPLACE INTO? Wozu?
        http://dev.mysql.com/doc/refman/5.0/en/replace.html

        Kommentar


        • #5
          OK wusste ich nicht, aber totaler Humbug bezog sich nicht einzig auf REPLACE (sorry dafür, kannte ich nicht, hätte mich mal informieren sollen).

          Sondern auch die Schleife mit den UPDATEs. Wenn ich mit einem Befehl alle UPDATEs erledigen kann, dann bau dir doch den String fürs UPDATE einfach zusammen?!

          Abgesehen davon macht doch REPLACE dann keinen Sinn, wenn der PRIMARY KEY "id" garnicht übergeben wird, oder ist "userid" schon UNIQUE?

          Kommentar


          • #6
            userid ist unique
            und leider versteh ich deinen code überhaupt nicht

            <?php
            $sql = sprintf("INSERT INTO paidmails_options SET userid = %u, Mon = %u, Tue = %u, Wed = %u, Thu = %u, Fri = %u, Sat = %u, Sun = %u, aktiv = %u",
            $userid,
            (isset($_POST['tage']) && in_array('Mon', $_POST['tage'])) ? 1 : 0,
            (isset($_POST['tage']) && in_array('Tue', $_POST['tage'])) ? 1 : 0,
            ..
            (isset($_POST['tage']) && in_array('Sun', $_POST['tage'])) ? 1 : 0,
            $_POST['aktiv']);
            mysql_query($sql);
            ?>

            Hat einer vielleicht ne Doku/Tutorial wo das erklärt wird? Was z.b heißt %u....vermute mal das die Variabel später gegeben wird. Das raff ich überhaupt nicht: (isset($_POST['tage']) && in_array('Mon', $_POST['tage'])) ? 1 : 0,

            Kann mich einer aufklären....danke
            Laurenz

            Kommentar


            • #7
              Zitat von goosele
              Hat einer vielleicht ne Doku/Tutorial wo das erklärt wird? Was z.b heißt %u....vermute mal das die Variabel später gegeben wird.
              Schau dir hier mal die Platzhalter für sprintf(), printf() etc. an.

              Zitat von goosele
              Das raff ich überhaupt nicht: (isset($_POST['tage']) && in_array('Mon', $_POST['tage'])) ? 1 : 0,
              Schau dir hier mal den Abschnitt über den ternären Operator () an.

              Kommentar

              Lädt...
              X