Mysql problème de requete

Bonsoir ;

j'ai un problème avec une requête mysql j'ai essayé ça

$sql="insert into ".$categorie."(titre,article,file,image,date) values ('".$titre."', '".$article."', '".$nom."' , '".$nom2."', '".$date."' )";

$query=mysql_query($sql,$connexion) or die("problème requête ");

mais ça marche pas
Configuration: Windows XP
Firefox 2.0.0.12

14 réponses

Résumé de la discussion

Problème rencontré lors d'une insertion MySQL via PHP : une requête dynamique qui construit le nom de la table avec $categorie échoue, en tentant d’insérer titre, article, fichier, image et date. Des solutions proposent d'utiliser une table fixée, par exemple insert into categorie(titre, article, file, image, date) values ('$titre', '$article', '$nom', '$nom2', '$date'), puis d'afficher l'erreur réelle via mysql_error(). Le fil aborde aussi les problématiques liées à l’upload et à l’identification de l’ID : les réponses évoquent auto_increment et l’alignement des colonnes avec les valeurs envoyées. Dernière nuance utile : après correction, les textes se stockent mais les champs image et fichier restent sensibles à la syntaxe et à la gestion des uploads, nécessitant vérification du code et des permissions.

Bobot (l’IA à votre service)
  1. essaye ça:
    $sql="insert into categorie(titre,article,file,image,date) values ('$titre', '$article', '$nom' , '$nom2', '$date' )";

    $query=mysql_query($sql,$connexion) or die("problème requête ");
    1. Merci pour votre réponse mais j'ai toujours problème de requête , si vous permettez je met le code de ma page

      <?php
      include ma connexion

      $categorie=$_POST["categorie_bouton"];
      $titre=$_POST["titre"];

      $article_avant=$_POST["article"];
      $article=nl2br(htmlspecialchars($article_avant));

      $date = Date("d/m/Y H:i:s");

      $nom=$_FILES["file"]["name"];
      list($name, $ext) = explode(".", $nom);
      $ext=".".$ext;
      $chemin = "./images_articles/".$nom;
      move_uploaded_file($HTTP_POST_FILES["file"]["tmp_name"],$chemin);

      $nom2=$_FILES["image"]["name2"];
      list($name2, $ext2) = explode(".", $nom2);
      $ext2=".".$ext2;
      $chemin2 = "./images_articles/".$nom2;
      move_uploaded_file($HTTP_POST_FILES["image"]["tmp_name2"],$chemin2);

      $sql="insert into categorie(titre,article,file,image,date) values ('$titre', '$article', '$nom' , '$nom2', '$date' )";

      $query=mysql_query($sql,$connexion) or die("problème requête ");

      echo"<b>l'Article est bien ajouté a : ".$categorie."</b>" ;

      mysql_close();

      ?>

      je reçois problème de requête
      1. Puisque je veux connaitre l'erreur remplace cette partie partie:
        or die("problème requête ")
        par ça:
        or die(mysql_error())
      2. Il t'as donné quoi comme erreur?
    2. au début j'ai oublié de mettre $ sur catégorie et javais un message comme quoi la table n'existe pas alors j'ai mis le $ et j'ai ajouté id sur les deux coté :

      $sql="insert into $categorie(id,titre,article,file,image,date) values (' ','$titre', '$article', '$nom' , '$nom2', '$date' )";

      $query=mysql_query($sql,$connexion) or die(mysql_error()) ;

      mais la j'ai l'erreur de Duplicate entry '0' for key 1
      1. ton attribut id n'est il pas "auto_incrément"?
    3. oui merci vous avez raison , j'ai oublié de mettre auto_incrément, je viens de l'essaye les champs texte sont enregistrés dans mysql mais 'image' et 'file' champs réserve pour les images ne sont pas envoyé probablement la syntaxe n'est pas bien
      1. image et file sont quel type?
    4. les deux sont type file , sur mon formulaire j'ai mis la possibilité d'ajouté deux image et j'ai mis

      <input name="file" type="file" />
      <input name="image" type="file" />
      1. j veux dire leurs types dans ta base de données Mysql.
    5. oui excuse moi :) c'est varchar
      1. En fait là ce que tu dois stocjer dans ta DATABASE mysql ce seront les chemins pour chacune des 2 fichiers: pour "file" et "image".
      2. Donc en suivant ton script tu dois stocker "chemin" et "chemin2" respectivement pour les attributs image et file.
    6. oui il va stocké juste les chemins ,je l'avais essayé un jour avec la même syntaxe mais juste une seule image ça marché très bien mais la je ne sais pas pourquoi ça marche plus !!
      1. réessye encore! en rectifiant les valeurs affectées aux attributs "file" et "image"
    7. malheureusement j'ai essayé de changer le code mais ça marche pas , a propos des attributs "file" et "image" dans mysql
      je ne pense pas que c'est pas obligatoire !!
      1. montre ton code
    8. nom=$_FILES["file"]["name"];

      list($name, $ext) = explode(".", $nom);

      $ext=".".$ext;

      $chemin = "./images_articles/".$nom;

      move_uploaded_file($HTTP_POST_FILES["file"]["tmp_name"],$chemin);

      $sql="insert into $categorie(id,titre,article,file,date) values (' ','$titre', '$article', '$nom' , '$date' )";

      c'est le même mais juste pour une seule image ,c'est bizzard normalement il dois marché !!
      1. $sql="insert into $categorie(id,titre,article,file,date) values (' ','$titre', '$article', '$nom' , '$date' )";
        remplace cette ligne par:
        $sql="insert into $categorie(id,titre,article,file,date) values (' ','$titre', '$article', '$chemin' , '$date' )";
    9. avec ça le $

      $nom=$_FILES["file"]["name"];
      1. non en fait tu dois utiliser $chemin au lieu de $nom,car c'est $chemin dois te donner le chemin exact du fichier.
    10. Merci pour votre coup de main ,le $chemin na pas marché je vais me reposé peu être que après je trouverais la solution
      1. cé koi l'erreur qu'il signale?
    11. ba il ya pas derreur mais kan je regarde dans ma base mysql dans le champ 'file' je vois que le nom de l'image n'est pas enregistré et kan je regarde mon dossier images_articles est toujours vide
      1. ton code d'upload des fichiers ne marchent pas donc faut le revoir.
    12. bonjour,
      dans ta requete sql d'insertion apres values('\N',
      au lieu de values(' ',
      \N pour la valeur des champ auto_increment