Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem: MySQL Query funktioniert nicht. Wieso?

Einklappen

Neue Werbung 2019

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

  • Problem: MySQL Query funktioniert nicht. Wieso?

    Hallo,

    also bei diesem Code hier funktioniert folgendes nicht:
    Er soll "total_posts" [INT(11)] auf die Zahl setzten die wäre wenn die posts weg sind... die ausgabe mit echo "$total_p"; funktioniert so wie es soll!
    nur bei dem SQL Statemant nicht...

    Hier der code:
    PHP-Code:
    <?php
       $abfrag   
    "SELECT * FROM chat_forum_threads WHERE `id` = ".$postid."";
       
    $ergebnis mysql_query($abfrag);
       
    $threads  mysql_fetch_object($ergebnis);
       
    $postsall $threads->answers;
       
       
    $sql2     "SELECT * FROM chat_forum WHERE `forumid` = '".$formid."'";
       
    $result2  mysql_query($sql2) OR die(mysql_error());
       
    $forum    mysql_fetch_object($result2);
       
    $total_p  $forum->total_posts $postsall;
       
    $total_t  $forum->total_threads 1;

      
    $eintrag "UPDATE `chat_forum` SET
                         `total_posts` = "
    .$total_p.",
                         `total_threads` = "
    .$total_t."
                 WHERE `forumid` = "
    .$formid."";
      
    $eintragen mysql_query($eintrag) OR die(mysql_error());
    ?>
    Ich weiß es geht sauberer! Sry!

    Also es kommt keine fehlermeldung NIX! und wenn ich das statemant auf phpMyAdmin ausführe funktioniert es... woran liegt es?

    FROHE WEIHNACHTEN UND EIN FROHES NEUES JAHR WÜNSCHT
    Dennis *g*

  • #2
    $abfrag = "SELECT * FROM chat_forum_threads WHERE `id` = '$postid' ";

    $sql2 = "SELECT * FROM chat_forum WHERE `forumid` = '$formid' ";

    versuchs mal so, mann kann sich nicht immer auf phpmyadmin verlassen

    Kommentar


    • #3
      Ich würde die Abfragen auch eher wie Geigel formulieren, allerdings nie mit SELECT * FROM, wenn du nur ein oder zwei Attribute haben willst. (vgl. http://www.php-faq.de/q/q-sql-select.html). Und Anführungszeichen um nummerische Werte sind ebenso überflüssig, wie die Backticks. Versuch einfach mal die evaluierten Abfragen auszugeben, dann siehst du auch genau, was abläuft:
      Code:
         $abfrag   = "SELECT answers  
                      FROM chat_forum_threads 
                      WHERE id = $postid";
         echo "$abfrag
      ";                                    // zum Testen
         $ergebnis = mysql_query($abfrag) or die(mysql_error());
         $threads  = mysql_fetch_object($ergebnis);
         $postsall = $threads->answers;
         
         $sql2  = "SELECT total_posts, total_threads 
                   FROM chat_forum 
                   WHERE forumid = $formid";
         echo "$sql2
      ";                                              // zum Testen
         $result2  = mysql_query($sql2) OR die(mysql_error());
         $forum    = mysql_fetch_object($result2);
         $total_p  = $forum->total_posts - $postsall;
         $total_t  = $forum->total_threads - 1;
      
        $eintrag = "UPDATE chat_forum 
                    SET
                       total_posts = $total_p,
                       total_threads = $total_t"
                    WHERE forumid = $formid";
         echo "$eintrag
      ";                                        // zum Testen
        $eintragen = mysql_query($eintrag) OR die(mysql_error());
      Es könnte z.B. sein, dass die Variable in der zweiten und dritten Abfrage nicht $formid, sondern $forumid heisst? Die zweite Abfrage ist - falls du die Daten nicht andernorts verwendest - überflüssig, und lässt sich direkt in die dritte integrieren:
      Code:
      $eintrag = "UPDATE chat_forum 
                    SET
                       total_posts = total_posts - $postsall,
                       total_threads = total_threads - 1"
                    WHERE forumid = $formid";
      Gruss
      L

      Kommentar


      • #4
        also dann kommt:

        SELECT answers FROM chat_forum_threads WHERE id = 12
        SELECT total_posts, total_threads FROM chat_forum WHERE forumid = 1
        UPDATE chat_forum SET total_posts = 1, total_threads = -1 WHERE forumid = 1

        das ist aufeinmal nicht mehr richtig... total_posts muss 0 sein genauso wie total_threads...
        das was er macht ist, nur ein thread abziehen und die posts stehen lassen.
        nein die variable heißt $formid

        hier mal die ganze datei sorry aber irgendwie bin ich zu dumm den fehler zu finden

        PHP-Code:
        <?php
        ob_start
        ();
        session_start ();

        if (!isset (
        $_SESSION["user_id"]))
        {
         
        header("Location: index.php?site=login&fehler=1");
        }else{

        include(
        "data/connect.php");
        include(
        "data/header-conf.php");
        include(
        "data/user-conf.php");

         echo 
        "</head>
        <body>\n"
        ;

        if(
        $level == 'Admin' OR $level == 'Webmaster'){

        $sql "DELETE FROM
                        chat_forum_threads
               WHERE
                       `id` = '"
        .$postid."'";
        mysql_query($sql) OR die(mysql_error());

        $abfrag    "SELECT * FROM chat_forum_posts WHERE `ans_of` = ".$postid."";
        $ergebnis  mysql_query($abfrag);
        while(
        $row mysql_fetch_object($ergebnis))
         {
          
        $sql "DELETE FROM
                          chat_forum_posts
                 WHERE
                         `ans_of` = '"
        .$postid."'";
          
        mysql_query($sql) OR die(mysql_error());
         }

        /*
        CHAT_FORUM POSTS UND THREAD ABZIEHEN
        */
           
        $abfrag   "SELECT * FROM chat_forum_threads WHERE `id` = ".$postid."";
           
        $ergebnis mysql_query($abfrag);
           
        $threads  mysql_fetch_object($ergebnis);
           
        $postsall $threads->answers;
           
           
        $sql2     "SELECT * FROM chat_forum WHERE `forumid` = '".$formid."'";
           
        $result2  mysql_query($sql2) OR die(mysql_error());
           
        $forum    mysql_fetch_object($result2);
           
        $total_p  $forum->total_posts $postsall;
           
        $total_t  $forum->total_threads 1;

          
        $eintrag "UPDATE `chat_forum` SET
                             `total_posts` = "
        .$total_p.",
                             `total_threads` = "
        .$total_t."
                     WHERE `forumid` = "
        .$formid."";
          
        $eintragen mysql_query($eintrag) OR die(mysql_error());
          
          
           
        $abfrag   "SELECT answers
                        FROM chat_forum_threads
                        WHERE id = 
        $postid";
           echo 
        "$abfrag
        "
        ;                                    // zum Testen
           
        $ergebnis mysql_query($abfrag) or die(mysql_error());
           
        $threads  mysql_fetch_object($ergebnis);
           
        $postsall $threads->answers;

           
        $sql2  "SELECT total_posts, total_threads
                     FROM chat_forum
                     WHERE forumid = 
        $formid";
           echo 
        "$sql2
        "
        ;                                              // zum Testen
           
        $result2  mysql_query($sql2) OR die(mysql_error());
           
        $forum    mysql_fetch_object($result2);
           
        $total_p  $forum->total_posts $postsall;
           
        $total_t  $forum->total_threads 1;

          
        $eintrag "UPDATE chat_forum
                      SET
                         total_posts = 
        $total_p,
                         total_threads = 
        $total_t
                      WHERE forumid = 
        $formid";
           echo 
        "$eintrag
        "
        ;                                        // zum Testen
          
        $eintragen mysql_query($eintrag) OR die(mysql_error());

         }
        }
        ?>
        mit dem SELECT * FROM, sry bin halt immer noch ein newbie

        danke für eure hilfe.

        Kommentar

        Lädt...
        X