Ankündigung

Einklappen
Keine Ankündigung bisher.

Variable wird immer als '0' eingelesen

Einklappen

Neue Werbung 2019

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

  • Variable wird immer als '0' eingelesen

    Hallo,

    für ein Projekt in der Schule soll ich eine digital Community coden. Bin gerade dabei ein Forum zu schreiben, welches auch zu Beginn recht gut funktionierte, jedoch stellte sich die Funktionalität vom einen auf den anderen Moment ein. Das Problem liegt dabei, dass ich eine Variable in Mysql einlesen möchte, welche mir vorher als korrekter Wert angezeigt wird (echo gibt korrekten Wert aus), im Endeffekt aber als Wert 0 in die Datenbank eingelesen wird (Es handelt sich hierbei um den Wert, der die Antworten dem jeweiligen Topic zuordnet).

    Ich habe die SuFu benutzt und auch im Handbuch nachgelesen, aber nichts gefunden. Außerdem wird keine Fehlermeldung ausgegeben!

    PHP-Code:
    <?php
    $host
    ="localhost";  
    $username="admin";  
    $password="password"
    $db_name="projekt"
    $tbl_name="forum_answernew"

    mysql_connect("$host""$username""$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or die("cannot select DB");

    // Get value of id
    $id=$_POST['id'];
    echo 
    $id;

    // Find highest answer number. 
    $sql="SELECT MAX(a_id) AS Maxa_id FROM $tbl_name WHERE question_id='$id'";
    $result=mysql_query($sql);
    $rows=mysql_fetch_array($result);

    // add + 1 to highest answer number. keep it in "$Max_id". if there no answer yet set it = 1 
    if ($rows) {
    $Max_id $rows['Maxa_id']+1;
    }
    else {
    $Max_id 1;
    }

    // get values that sent from form 
    $a_name="Name";
    $a_email="Mail";
    $a_answer=$_POST['a_answer']; 

    $datetime=date("d/m/y H:i:s"); // create date and time 

    // Insert answer 
    $sql2="INSERT INTO $tbl_name(question_id, a_id, a_name, a_email, a_answer, a_datetime)VALUES('$id', '$Max_id', '$a_name', '$a_email', '$a_answer', '$datetime')";
    $result2=mysql_query($sql2);

    if(
    $result2){
    echo 
    "Successful<BR>";
    echo 
    "<a href='view_topic.php?id=".$id."'>View your answer</a>";

    // If added new answer, add value +1 in reply column 
    $tbl_name2="forum_questionnew";
    $sql3="UPDATE $tbl_name2 SET reply='$Max_id' WHERE id='$id'";
    $result3=mysql_query($sql3);

    }
    else {
    echo 
    "ERROR";
    }

    mysql_close();
    ?>
    "echo $id;" gibt den richtigen Wert aus. (nur eine einfache Zahl, die aber nie 0 ist)

    In der Datenbank erscheint in der Spalte 'question_id' jedoch eine 0.

    'question_id' ist so in Mysql eine Integer(4) und mit dem Standard 0 definiert.

    MfG

  • #2
    Was bekommst du fuer echo $sql2 an entsprechender Stelle?

    Kommentar


    • #3
      Schreib es mal so:

      PHP-Code:
      $sql2="INSERT INTO $tbl_name (question_id, a_id, a_name, a_email, a_answer, a_datetime) VALUES('".(int)$id."', '".$Max_id."', '".$a_name."', '".$a_email."', '".$a_answer."', '".$datetime."')"
      Bei "a_id" würde ich übrigens auf auto_increment setzen statt vorher noch mit einem unnötigen Statement die nächste ID zu ermitteln. Ich nehme doch an, dass das eine eindeutige Zahl sein soll.

      Kommentar


      • #4
        threadi's lösung hat funktioniert.
        hab jetzt zwar nicht genau verstanden warum, aber isso

        aber ich hätte noch ein problem (ich glaube schon fast, dass es im gleichen sachzusammenhang steht)

        PHP-Code:
        $sql4="UPDATE 'forum_answer' SET 'delete' = '".$delete."' WHERE 'question_id'='".$delete_id."' AND 'a_id'='".$answer_id."'";
        $result4=mysql_query($sql4); 
        die Variablen $delete, $delete_id und $answer_id werden alle wieder richtig abgefragt. aber im endeffekt wird nichts in Mysql geupdatet. (wiederum kein Error)

        Kommentar


        • #5
          Versuch doch mal bitte deinen code so zu posten, dass man nicht horizontal scrollen muss.

          Dein Update-Befehl ist falsch konstruiert. Du hast den Tabellennamen und die Spaltennamen in einfachen 'Hochkommata' statt in `Backticks`.

          Kommentar


          • #6
            Okay, werde ich mir für die Zukunft merken.

            Das hat auch wieder funktioniert. Die waren für mich anscheinend zu ähnlich im Wiki..

            ...aber ihr habt echt Ahnung von eurem Fach, muss ich schon sagen!

            Kommentar

            Lädt...
            X