Probléme PHP

Résolu
Bonjour,

J'ai ce script :

<?php
     if(isset($_GET['id']))
       {
  include('../_config-rating.php');
  $sql = 'DELETE FROM ratings WHERE id='.$_GET['id'];
  $req = mysql_query($sql);
  mysql_close();
  if($req == true) {
    echo '<br /><br /><center>Suppression r&eacute;ussie !</center>';
  }
  else
  {
    echo '<br /><br /><center>Erreur lors de la suppression !</center>';
  }
}
else
{
echo "erreur";
}
?>


Malheureusement, avec L'ID, il affiche "Erreur lors de la suppression !"

Pourquoi sa ne marche pas ???
--
Lucas

13 réponses

  1. essayes:

    $sql = "DELETE FROM ratings WHERE id='id".$_GET['id']."'";


    puisque ton champ id est de la forme idxxx
    1. Voila ce que j'ai essayé de faire :
      <?php
      if(preg_match("#^[0-9]+$#", $_GET['id']))
      {
        mysql_connect("localhost", "", "");
        mysql_select_db("");
        $videoid = $_GET['id'];
        $voteid = id;
        $final = $voteid.$videoid;
        $sql = 'DELETE FROM ratings WHERE id='$final;
        $req = mysql_query($sql);
        mysql_close();
        if($req == true) 
        {
          echo '<br /><br /><center>Suppression r&eacute;ussie !</center>';
        }
        else
        {
          echo '<br /><br /><center>Erreur lors de la suppression</center>';
         echo mysql_error();
        }
      }
      else
      {
      echo "erreur";
      }
      ?>


      J'ai remarqué que dans ma table, il y a : id avec en association : id13 et pas directement le numero. Il faut donc que je rajoute le id devant.
      Malheureusement, sa ne marche pas....
      1. Vous n'avez aucune idée ?
        1. Il faut écrire
          echo mysql_error()
      2. J'ai esayé ceci :
        <?php
        if(preg_match("#^[0-9]+$#", $_GET['id']))
        {
          mysql_connect("localhost", "****", "*****");
          mysql_select_db("*****");
          $sql = 'DELETE FROM ratings WHERE id='.$_GET['id'];
          $req = mysql_query($sql);
          mysql_close();
          if(mysql_num_rows($req))
            {
              echo '<br /><br /><center>Suppression réussie !</center>';
            }
          else
          {
            echo '<br /><br /><center>Erreur lors de la suppression !</center>';
            mysql_error();
          }
        }
        else
        {
          echo "erreur";
        }
        ?>


        Mais sa affiche : "Erreur lors de la suppression !"
        et mysql_error(); n'affiche rien
        1. Et si tu prenais en compte ce que j'ai dit précédemment ?
      3. C'est dingue, je viens de donner la soluce, mais ça ne t'empêche pas de poster une ânerie...
        1. essaye avec

          if(mysql_num_rows($req))
          {
          echo '<br /><br /><center>Suppression réussie !</center>';
          }
          else
          {
          echo '<br /><br /><center>Erreur lors de la suppression !</center>';
          mysql_error();
          }
          }
          else
          {
          echo "erreur";
          }
          1. ctype_digit() pour vérifier un entier.

            $req retournera false uniquement si la requête rencontre une erreur.
            mysql_affected_rows() pour connaître le nombre de lignes affectées par ta requête
            1. J'ai un peu modifier mon code, j'ai mis :

              <?php
              if(preg_match("#^[0-9]+$#", $_GET['id']))
              {
                mysql_connect("localhost", "*******", "******");
                mysql_select_db("******");
                $sql = 'DELETE FROM ratings WHERE id='.$_GET['id'];
                $req = mysql_query($sql);
                mysql_close();
                if($req == true) {
                  echo '<br /><br /><center>Suppression r&eacute;ussie !</center>';
                }
                else
                {
                  echo '<br /><br /><center>Erreur lors de la suppression !</center>';
                 mysql_error();
                }
              }
              else
              {
              echo "erreur";
              }
              ?>


              Il me dit suppression réussis mais quand je vérifie, sa n'a pas marché.
              Esque vous savez comment l'on fait pour remettre à zero un Id seulement de ma table ?

              Voici la table :
              CREATE TABLE `ratings` (
                `id` varchar(11) NOT NULL,
                `total_votes` int(11) NOT NULL default 0,
                `total_value` int(11) NOT NULL default 0,
                `used_ips` longtext,
                PRIMARY KEY  (`id`)
              ) TYPE=MyISAM AUTO_INCREMENT=3
              1. bonsoir,

                un problème dans ta requête remplace la par :

                "DELETE FROM ratings WHERE id='$_GET['id']'";
                1. Inutile, la syntaxe qu'il utilise est correcte aussi.