Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de requête SQL pour mon forum

Sujet résolu
    8 décembre 2005 à 18:49:19

    Bonjour,
    j'ai un problème avec le forum pour mon site.

    J'ai un page qui, pour l'instant permet de créer un nouveau topic et qui, plus tard, permettra d'afficher les topics.
    Et sur cette page j'ai un problème de reuquête SQL$

    Voici le code :
    <form method="post" action="forum1.php">
        <p>Creer un nouveau topic sur le forum</p>
       
        <p>Pseudo : <input name="pseudo1" /><br />
            Mot de passe : <input name="mdp1" /><br />
            Nom de votre topic : <input name="nom_topic" /><br />
            Message :<br />
            <textarea name="message" rows="8" cols="35"></textarea> <br />
            <input type="submit" value="Envoyer" />
        </p>
            <p>
    <?
    mysql_connect("localhost", "root");
    mysql_select_db("base");

    // --------------- Etape 1 ----------
    // Si un topic est crée, on l'enregistre
    // -----------------------------------------

    if (isset($_POST['pseudo1']) AND isset($_POST['mdp1']) AND isset($_POST['nom_topic']) AND isset($_POST['message']))
    {
    $pseudo1 = htmlentities($_POST['pseudo1'], ENT_QUOTES); // On utilise htmlentities par mesure de sécurité
    $pseudo_ref = mysql_query("SELECT * FROM membre WHERE pseudo='$pseudo1'"); //On récupère les informations du pseudo
    $donnees = mysql_fetch_array($pseudo_ref);
    $pseudo2 = $donnees['pseudo']; //On crée la variable du vrai pseudo



    if ($pseudo1 == $pseudo2) //On vérifie si le pseudo existe
    {
    $mdp1 = htmlentities($_POST['mdp1'], ENT_QUOTES);
    $mdp2 = $donnees['mdp']; //On crée la variable du vrai mot de passe



    if ($mdp1 == $mdp2) //On vérifie si la mot de passe est bon
    {
    $timestamp = time();
    $nom_topic = htmlentities($_POST['nom_topic'], ENT_QUOTES); //  On utilise htmlentities par mesure de sécurité
    $message = htmlentities($_POST['message'], ENT_QUOTES); //  On utilise htmlentities par mesure de sécurité
        $message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />

       
        // On enregistre
        mysql_query("INSERT INTO forum1 VALUES('','$nom_topic', '$pseudo1', '$timestamp')");
            $id_ref = mysql_query("SELECT * FROM forum1 WHERE timestamp_der='$timestamp' AND pseudo='$pseudo1'"); //On récupère les informations du pseudo
    $donnees2 = mysql_fetch_array($id_ref);
    $id = $donnees2['id']; //On crée la variable du id
            mysql_query("CREATE TABLE 'topic$id' ( 'id' INT NOT NULL AUTO_INCREMENT, 'pseudo' VARCHAR(255) NOT NULL, 'timestamp' INT(11) NOT NULL, 'message' TEXT NOT NULL, INDEX ('id') )") or die('Requête Invalide : '.mysql_error()); //On crée la table du topic
            mysql_query("INSERT INTO 'topic$id' VALUES('','$pseudo1', '$timestamp', '$message')") or die('Requête invalide : '.mysql_error());
    }
    }
    }


    mysql_close(); // On ferme la connexion à MySQL
    ?>
    </p>


    Quand j'éxécute la page pour créer un nouveau topic le navigateur me sort cette erreur :

    Requête Invalide : Erreur de syntaxe près de ''topic14' ( 'id' INT NOT NULL AUTO_INCREMENT, 'pseudo' VARCHAR(2' à la ligne 1


    Dans la base, dans la table forum1, la ligne est correctemant crée mais la table ne se crée pas.

    Je pense que c'est un erreur SQL.

    Merci de m'aider
    • Partager sur Facebook
    • Partager sur Twitter
      8 décembre 2005 à 19:08:18

      Pour tenter d'y voir plus clair, je tenterais :
      $requete = "CREATE TABLE 'topic$id' ( 'id' INT NOT NULL AUTO_INCREMENT, 'pseudo' VARCHAR(255) NOT NULL, 'timestamp' INT(11) NOT NULL, 'message' TEXT NOT NULL, INDEX ('id') )" ;
      echo $requete ;
      mysql_query($requete) or die('Requête Invalide : '.mysql_error()); //On crée la table du topic


      En voyant la requête en entier, souvent on trouve mieux les erreurs...
      • Partager sur Facebook
      • Partager sur Twitter
        8 décembre 2005 à 19:18:08

        merci mais je ne trouve toujours pas aidez moi svp
        • Partager sur Facebook
        • Partager sur Twitter
          8 décembre 2005 à 19:20:09

          ... Ce serait sympa de ta part de nous dire ce que renvoie le echo $requete ; ... !
          • Partager sur Facebook
          • Partager sur Twitter
            8 décembre 2005 à 19:32:43

            Il me sort cette erreur :

            CREATE TABLE 'topic16' ( 'id' INT NOT NULL AUTO_INCREMENT, 'pseudo' VARCHAR(255) NOT NULL, 'timestamp' INT(11) NOT NULL, 'message' TEXT NOT NULL, INDEX ('id') )Requête Invalide : Erreur de syntaxe près de ''topic16' ( 'id' INT NOT NULL AUTO_INCREMENT, 'pseudo' VARCHAR(2' à la ligne 1
            • Partager sur Facebook
            • Partager sur Twitter
              8 décembre 2005 à 19:52:57

              1/ pas de quote autour des noms de colonnes / tables
              2/ on ne crée pas une table par topic, c'est n'importe quoi ca :D Trouve une autre technique, une colonne topic_id par exemple
              • Partager sur Facebook
              • Partager sur Twitter
                8 décembre 2005 à 19:59:08

                merci winzou je n'y avais pas pensé
                • Partager sur Facebook
                • Partager sur Twitter

                Problème de requête SQL pour mon forum

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown