Syntax requte sql dans php

dlw -  
Alain_42 Messages postés 5413 Statut Membre -
Bonjour,

J'ai un petit probleme avec une requête dans mon script php, c'est un conflit de cote je pense, mais je n'arrive pas a trouver la bonne syntaxe !!. Si vous voyez qlq chose qui cloche, faites moi signe, ca serait cool. ;)
La requête de suppresion :

//Requête de suppression de videos.
sqlD=mysql_query("delete from video
where NumV = "$_post['vrecherche']"");

Merci d'avance.

8 réponses

Résumé de la discussion

La problématique centrale concerne une requête PHP/MySQL mal formulée, où des erreurs de syntaxe, des guillemets mal placés et l’usage incorrect de variables superglobales entraînent des messages d’erreur et des résultats inattendus.
Plusieurs éléments de réponse recommandent d’utiliser correctement $_POST (clé exacte), de corriger la concatenation lors de l’assemblage des requêtes et de prévenir les erreurs liées à $_SESSION en vérifiant son initialization et sa présence.
D’autres messages soulignent l’importance de sécuriser les données sensibles et de contrôler les droits avant d’une suppression, tout en corrigeant les erreurs de guillemets et en clarifiant l’usage des chaînes de caractères dans les requêtes.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. Breub62 Messages postés 3452 Statut Membre 369
     
    sqlD=mysql_query("delete from video
    where NumV = ".$_POST['vrecherche']); 
    0
  2. Krysstof Messages postés 1659 Statut Membre 295
     
    et le message d'erreur c'est quoi?

    sinon, est sur que ta variable de post 'vrecherche' est remplie?

    et dernier truc, essaye de rajouter * entre delete et from : Delete * from .....
    (la je suis pas sur, mais je me rappelle plus de la syntaxe exacte en mysql, et ca varie d'un moteur sql à l'autre)
    0
    1. HostOfSeraphim Messages postés 7340 Statut Contributeur 1 609
       
      Il n'y a rien entre DELETE et FROM. Ni *, ni autre chose.
      0
  3. Alain_42 Messages postés 5413 Statut Membre 904
     
    c'est du php il faudrait un $ avant la variable qui va recevoir le résultat de la requette
    et c'est $_POST en MAJUSCULES

    voir aussi la concatenation

    $sqlD=mysql_query("DELETE FROM video
    WHERE NumV = '".$_POST['vrecherche']."'"); 
    

    si ton champ NumV est de type numérique (INT) tu peux enlever les '
    0
  4. dlw
     
    Nan il me met ca comme erreur, il me laisse pas declarer ma variable :

    Notice: Undefined index: recherchevideo in C:\... ... on line 10.

    Et a la ligne 10, je ne fais que declarer une variable

    $video=$_POST['recherchevideo'];
    0
    1. HostOfSeraphim Messages postés 7340 Statut Contributeur 1 609
       
      Envoie le code complet stp, il doit y avoir une erreur ailleurs.
      0
    2. dlw
       
      t'as une adresse msn jte file ca ?
      0
    3. HostOfSeraphim Messages postés 7340 Statut Contributeur 1 609
       
      Mets le ici plutôt, le but est que ça serve à tout le monde.

      Pense à retirer les infos confidentielles par contre (mots de passe, etc).
      0
    4. Krysstof Messages postés 1659 Statut Membre 295
       
      cette erreur vient du fait que la variable recherchevideo n'est pas dans le post

      envoie aussi le code html de la page qui a le formulaire qui appelle le post.
      0
    5. dlw
       
      Voila le code, a coté j'ai ma page d'interface en .php, avec un input, pour saisir le numero de la video a supprimer, le name de l'input c'est : "recherchevideo", et j'ai mis dans le <body> la ligne, <form method="post" action="MaPageActionPHP.php">






      <html>
      <head>
      <title></title>
      </head>
      <body>

      <?php

      //declaration de variable.
      $video=$_POST['recherchevideo']; ==> C'est là ou il y a mon erreur..


      //Connexion au serveur Mysql
      $db=mysql_connect("localhost","login","pwd") or die ("erreur de connexion".mysql_error());


      //Ouverture de la base de données
      mysql_select_db("BDD",$db) or die ("erreur de connection à la bdd");


      //Requête pour afficher les infos sur la video du numéro saisi.
      $sql = "SELECT NumV, NomSupp, TitreV, DescriptifV, DateV, NomCat
      FROM protagoniste, categorie, support, video,integrer
      WHERE Numsupp = NumSuppV
      AND NumCat = NumCatV
      AND NumV = NumVIntegrer
      AND NumProtaIntegrer = NumProta
      AND NumV= '$video'";



      $query = "SELECT * FROM users";


      //Requête de suppression de videos.
      $sqlD = "delete from video
      where NumV = '$video'";


      if(isset($_post['toto']))
      {
      if($res['droits'] == 1)
      {
      $sqlDR = mysql_query($sqlD) or die ("erreur".mysql_error());
      //Exécution de la requête.
      $res = mysql_query($query) or die ("erreur".mysql_error());

      // début du tableau
      echo '<table border="1" width="50%" bgcolor="#FFFFFF" align="center">';

      // première ligne on affiche les titres prénom et surnom dans 2 colonnes
      echo '<tr>';
      echo '<td bgcolor="#669999" align="center"><b>Numéro</b></td>';
      echo '<td bgcolor="#669999" align="center"><b>Support</b></td>';
      echo '<td bgcolor="#669999" align="center"><b>Titre</b></td>';
      echo '<td bgcolor="#669999" align="center"><b>Descriptif</b></td>';
      echo '<td bgcolor="#669999" align="center"><b>Date</b></td>';
      echo '<td bgcolor="#669999" align="center"><b>Catégorie</b></td>';
      echo '</tr>';


      // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.
      while($row = mysql_fetch_array($sql))
      {
      echo '<tr>';
      echo '<td bgcolor="#CCCCCC">'.$row['NumV'].'</td>';
      echo '<td bgcolor="#CCCCCC">'.$row['NomSupp'].'</td>';
      echo '<td bgcolor="#CCCCCC">'.$row['TitreV'].'</td>';
      echo '<td bgcolor="#CCCCCC">'.$row['DescriptifV'].'</td>';
      echo '<td bgcolor="#CCCCCC">'.$row['DateV'].'</td>';
      echo '<td bgcolor="#CCCCCC">'.$row['NomCat'].'</td>';
      echo '</tr>';
      }

      // fin du tableau.
      echo '</table>';

      }
      else
      {
      echo "Vous ne disposez pas des droits nécessaires à la suppression de vidéos";
      echo "Contactez votre administrateur, ou redirigez vous ";
      ?>
      <a href="MaPage.php">sur la page principale.</a>
      <?php
      }
      }

      ?>


      </body>
      </html>
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dlw
     
    Var POST : 0
    Array
    (
    )
    0
    1. dlw
       
      Autant pour moi, j'ai ma page qui s'affiche normalement, des que je clic sur mon bouton toto, voila ce que ca me donne :

      Var POST : 2
      Array
      (
      [recherchevideo] =>
      [chercheS] => toto.
      )
      0
    2. Krysstof Messages postés 1659 Statut Membre 295
       
      hum... ok donc comme tu peux voir, ta variable RechercheVideo est vide. le message d'erreur vient de la.

      par contre pourquoi c'est vide, la je comprends pas.
      0
    3. dlw
       
      En fait je voulais faire une page ou l'utilisateur avait la possibilité de saisir le numéro d'une video (mon input nommé "recherchevideo"), et quand il clic sur le bouton "toto", le code verifie si l'utilisateur a bien les droits pr supprimer, et si c'est le cas, la vidéo dont le numéro saisi correspond devrait etre supprimée !. Au depart, j'avais fait mon code php et html dans une seule page, mais au finale vu les complications, je me suis dit que faire ca en 2pages serait plus claire, visiblement non, lol. Bon eh bien ecoutes je vais continuer de creuser.. Si de ton coté tu as des révélations, bah n'hésites pas a m'en faire part, ca serait le top.. ;)
      Je te remercie krysstof. ;)
      0
    4. Dlw
       
      Je n'ai plus cette erreur, mais j'ai une autre question à vous soumettre. Je veux recupérer toutes les infos sur l'utilisateur qui est connecté.. Voilà ce que j'ai comme requête, mais bien entendu ca foire. C'est ma requête ou la syntaxe?!.

      $query = "SELECT * FROM users where pseudo='$_SESSION['login']'";
      0
    5. Krysstof Messages postés 1659 Statut Membre 295
       
      bah encore une fois,
      "SELECT * FROM users where pseudo='".$_SESSION['login'].'";
      tu as oublié la concaténation . et des guillemets

      sinon pour etre sur des variables : print_r($_SESSION)
      0
  7. Alain_42 Messages postés 5413 Statut Membre 904
     
    petite rectif:

    "SELECT * FROM users WHERE pseudo='".$_SESSION['login']."'";


    une " en trop après $_SESSION['login']
    0
    1. Krysstof Messages postés 1659 Statut Membre 295
       
      oui merci, trop de copier coller tue les post :), je corrige
      0
    2. Dlw
       
      Faut-il rappeler la variable de session a chaque page php ?
      0
    3. Dlw
       
      Pcq en fait j'ai ca comme msg d'erreur.

      Notice: Undefined variable: _SESSION in C:\Documents and Settings\toto\Bureau\MonDossier\Mapage.php on line 33

      et à line 33 on a notre fameuse requête : $query = "SELECT * FROM users WHERE pseudo='".$_SESSION['login']."'";
      0
    4. HostOfSeraphim Messages postés 7340 Statut Contributeur 1 609
       
      Dlw : place tes bouts de code dans les balises
      , stp, ça nous aiderait beaucoup au niveau de l'affichage des quotes et des guillets.
          
      0
    5. Dlw
       
      Dans les balises ??

      Notice: Undefined variable: _SESSION in C:\Documents and Settings\toto\Bureau\MonDossier\Mapage.php on line 33

      et à line 33 on a notre fameuse requête :
      $query = "SELECT * FROM users WHERE pseudo= ' " . $_SESSION ['login'] . " ' " ;



      Voila le code, j'ai mis l'erreur en gras histoire de la repérer plus vite.




      <html>
      <head>
      <title></title>
      </head>
      <body>

      <?php

      //declaration de variable.
      $video=$_POST['recherchevideo'];


      //Connexion au serveur Mysql
      $db=mysql_connect("localhost","login","pwd") or die ("erreur de connexion".mysql_error());


      //Ouverture de la base de données
      mysql_select_db("BDD",$db) or die ("erreur de connection à la bdd");


      //Requête pour afficher les infos sur la video du numéro saisi.
      $sql = "SELECT NumV, NomSupp, TitreV, DescriptifV, DateV, NomCat
      FROM protagoniste, categorie, support, video,integrer
      WHERE Numsupp = NumSuppV
      AND NumCat = NumCatV
      AND NumV = NumVIntegrer
      AND NumProtaIntegrer = NumProta
      AND NumV= '$video'";


      // ==> C'est sur LA REQUETE SUIVANTE QUE CA PLANTE.
      $query = "SELECT * FROM users WHERE pseudo= ' " . $_SESSION[ ' login ' ] . " ' " ;




      //Requête de suppression de videos.
      $sqlD = "delete from video
      where NumV = '$video'";


      if(isset($_post['toto']))
      {
      if($res['droits'] == 1)
      {
      $sqlDR = mysql_query($sqlD) or die ("erreur".mysql_error());
      //Exécution de la requête.
      $res = mysql_query($query) or die ("erreur".mysql_error());

      // début du tableau
      echo '<table border="1" width="50%" bgcolor="#FFFFFF" align="center">';

      // première ligne on affiche les titres prénom et surnom dans 2 colonnes
      echo '<tr>';
      echo '<td bgcolor="#669999" align="center"><b>Numéro</b></td>';
      echo '<td bgcolor="#669999" align="center"><b>Support</b></td>';
      echo '<td bgcolor="#669999" align="center"><b>Titre</b></td>';
      echo '<td bgcolor="#669999" align="center"><b>Descriptif</b></td>';
      echo '<td bgcolor="#669999" align="center"><b>Date</b></td>';
      echo '<td bgcolor="#669999" align="center"><b>Catégorie</b></td>';
      echo '</tr>';


      // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.
      while($row = mysql_fetch_array($sql))
      {
      echo '<tr>';
      echo '<td bgcolor="#CCCCCC">'.$row['NumV'].'</td>';
      echo '<td bgcolor="#CCCCCC">'.$row['NomSupp'].'</td>';
      echo '<td bgcolor="#CCCCCC">'.$row['TitreV'].'</td>';
      echo '<td bgcolor="#CCCCCC">'.$row['DescriptifV'].'</td>';
      echo '<td bgcolor="#CCCCCC">'.$row['DateV'].'</td>';
      echo '<td bgcolor="#CCCCCC">'.$row['NomCat'].'</td>';
      echo '</tr>';
      }

      // fin du tableau.
      echo '</table>';

      }
      else
      {
      echo "Vous ne disposez pas des droits nécessaires à la suppression de vidéos";
      echo "Contactez votre administrateur, ou redirigez vous ";
      ?>
      <a href="MaPage.php">sur la page principale.</a>
      <?php
      }
      }

      ?>


      </body>
      </html>
      0
  8. Alain_42 Messages postés 5413 Statut Membre 904
     
    il faut surtout mettre tout au début de ta page

    <?php
    session_start();
    ?>
    0
    1. Dlw
       
      meme si je l'ai mis dans la premiere page d'accueil, il faut que je la mette dans toute mes pages ?!
      0
    2. Dlw
       
      Cool, ok donc il faut bien le mettre en chaque debut de page... Je pensait qu'une fois suffisait. Merci Alain_42
      0
    3. Dlw
       
      Ah ok c'est vrai dsl, c'est pas clair..

      Pcq en fait j'ai ca comme msg d'erreur.

      Notice: Undefined variable: _SESSION in C:\Documents and Settings\toto\Bureau\MonDossier\Mapage.php on line 33


      et à line 33 on a notre fameuse requête :
      $query = "SELECT * FROM users WHERE pseudo='".$_SESSION['login']."'";


      Mais c'est réglé, maintenant je pense que c'est ma boucle qui foire pcq mm quand l'util a "1" dans le champs "droits" de ma BDD, et il m'affiche

      "Vous ne disposez pas des droits nécessaires à la suppression de vidéos
      Contactez votre administrateur, ou redirigez vous sur la page principale."

      Autrement dit, apparement il ne verifie pas si l'utilisateur connecté a les droits ou pas dans la boucle, ce passe directement au else. A voire, je vais jetter un oeil.

      Merci a vous, et vos retours sont les bienvenus.
      0
  9. Alain_42 Messages postés 5413 Statut Membre 904
     
    if(isset($_post['toto']))
    {
    if($res['droits'] == 1)
    {
    $sqlDR = mysql_query($sqlD) or die ("erreur".mysql_error());
    //Exécution de la requête.
    $res = mysql_query($query) or die ("erreur".mysql_error());


    erreurs dans cette partie:
    post doit être en Majuscules
    $_POST['toto']
    c'est une variable php donc la casse est importante

    ensuite tu fais le test if($res['droits'] == 1) AVANT de faire la requette qui lit les droits $res

    if(isset($_POST['toto'])) 
    { 
    $res = mysql_query($query) or die ("erreur".mysql_error()); 
    if($res['droits'] == 1) 
    { 
    //Exécution de la requête delete 
    $sqlDR = mysql_query($sqlD) or die ("erreur".mysql_error()); 
    ........ 
    
    
    0