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. bonsoir,

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

    "DELETE FROM ratings WHERE id='$_GET['id']'";
    0
    1. Inutile, la syntaxe qu'il utilise est correcte aussi.
      0
  2. Si :
    $_GET['id'] = "' or id REGEXP '^[0-9]+$'"; 
    ?
    0
    1. Est-ce que tu es bien connecté à ta base de données ?
      0
      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
        0
        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
          0
          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";
            }
            0
            1. C'est dingue, je viens de donner la soluce, mais ça ne t'empêche pas de poster une ânerie...
              0
              1. 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
                0
                1. Et si tu prenais en compte ce que j'ai dit précédemment ?
                  0
              2. Vous n'avez aucune idée ?
                0
                1. Il faut écrire
                  echo mysql_error()
                  0
              3. 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....
                0
                1. essayes:

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


                  puisque ton champ id est de la forme idxxx
                  0
                  1. SA Y EST ! SA MARCHE !

                    Merci beaucoup !
                    0