[php] if et else ne font pas trop leurs boulo

Résolu
fabrice11901 Messages postés 787 Statut Membre -  
crabs Messages postés 909 Statut Membre -
Bonjour
Je fais actuellement un script de news letter tout est finis, mais je fais un script permettant aux membres de se déinscrire.
Mon problème c'est qu'après la requete delete... je fais if($result) { echo suprimé} else { echo pas bonne adresse e-mail} le problème que si l'adresse e-mail existe ou pas le script dis toujours qu'elle a bien été supprimer de plus si je ne met pas dans le formulaire l'adresse à suprimer, c'est toujours le if "adresse e-mail supprimé" qui s'affiche
ps : la requete fonctionne par contre bien c'est juste le if et else qui bug :)
voici mon code php :

<? $email=$_POST['email'];?>
<? $dbc = @mysql_connect ("localhost", "zone_zone", "*****");

if(!mysql_errno($dbc)) {
  mysql_select_db("zone_bdd");

  $query = "DELETE FROM infos WHERE email='$email'";
  $result = mysql_query($query);
if($result) { echo "Merci, votre adresse e-mail a été supprimé de la base de donnée, vous ne recevrez plus d'informations du site"; } else { echo "Désolé, mais votre adresse e-mail n'a pas été supprimée. Vérifiez que vous avez bien entré la bonne"; }} mysql_close(); ?>


--
C'est bizarre, on en apprend tous les jours même quand on ne s'informe pas !!!!

merci
Configuration: carte mere asus k8n4e, processeur : sempron 3300+, disque dur 80go mémoire : 512...

11 réponses

  1. smellems Messages postés 135 Statut Membre 46
     
    Salut,
    le problème c'est que la requète DELETE de mysql fonctionne toujours même si le WHERE n'est pas =. sauf que 0 row sont affecté.

    essais comme ça:

    if ($results and mysql_num_rows($results))
    {
    ...
    }

    bonne chance
    0
  2. fabrice11901 Messages postés 787 Statut Membre 64
     
    en changeant le if($result... j'obtiens warning mysql_num_rows...
    code :

    <? $email=$_POST['email'];?>
    <? $dbc = @mysql_connect ("localhost", "zone_zone", "****");
    
    if(!mysql_errno($dbc)) {
      mysql_select_db("zone_bdd");
    
      $query = "DELETE FROM infos WHERE email='$email'";
      $result = mysql_query($query);
    if($result and mysql_num_rows($result)) { echo "Merci, votre adresse e-mail a été supprimé de la base de donnée, vous ne recevrez plus d'informations du site"; } else { echo "Désolé, mais votre adresse e-mail n'a pas été supprimée. Vérifiez que vous avez bien entré la bonne"; }} mysql_close(); ?>

    0
  3. smellems Messages postés 135 Statut Membre 46
     
    Salut,

    "warning mysql_num_rows... " ??? quoi?

    est-ce que l'erreur dit que ton $result n'est pas valide?

    si je ne sais pas c'est quoi l'erreur c'est difficile de comprendre...

    mais ton code semble bon...
    0
  4. fabrice11901 Messages postés 787 Statut Membre 64
     
    Re
    j'ai le message suivant que l'e-mail existe ou pas dans la bdd :

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/zone/domains/zone-mobile.net/public_html/suprime_email.php on line 9
    Désolé, mais votre adresse e-mail n'a pas été supprimée. Vérifiez que vous avez bien entré la bonne

    d'où cela vient-il?
    merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. crabs Messages postés 909 Statut Membre 507
     
    Salur,
    Dans le cas d'un update, delete, ... il faut utiliser mysql_affected_rows().
    Un delete si il efface aucune ligne, ne provoquera pas d'erreur.
    Un lien vers la doc en français :http://fr3.php.net/manual/fr/function.mysql-affected-rows.php
    A+, crabs
    0
  7. fabrice11901 Messages postés 787 Statut Membre 64
     
    salut
    c'est toujours presque ole même message d'erreur :
    Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in /home/zone/domains/zone-mobile.net/public_html/suprime_email.php
    on line 9
    Désolé, mais votre adresse e-mail n'a pas été supprimée. Vérifiez que vous avez bien entré la bonne

    voici le code :
    <? $email=$_POST['email'];?>
    <? $dbc = @mysql_connect ("localhost", "zone_zone", "*****");
    
    if(!mysql_errno($dbc)) {
      mysql_select_db("zone_bdd");
    
      $query = "DELETE FROM infos WHERE email='$email'";
      $result = mysql_query($query);
    if($result and mysql_affected_rows($result)) { echo "Merci, votre adresse e-mail a été supprimé de la base de donnée, vous ne recevrez plus d'informations du site"; } else { echo "Désolé, mais votre adresse e-mail n'a pas été supprimée. Vérifiez que vous avez bien entré la bonne"; }} mysql_close(); ?>

    y a un truc qui me gène est-ce qu'on est obliger de mettre if($result and...? parce que if(mysql_... ne sufirait pas?
    Puis pour cette erreur là je my perd...

    0
  8. crabs Messages postés 909 Statut Membre 507
     
    Salut,
    Regardes bien la doc de msql_affected_rows(). On ne passe le resultat du
    mysql_query() mais l'indetifiant de la connection retoruné par mysq_connect().
    Cet identifiant est facultatif si tu n'a qu'une connexion ouverte.

    Sinon si tu veux un site agréable pour les surfeurs, il faut inévitablement
    que tout les cas d'erreur soit traités. Le serveur mysql de ton hébergeur peut
    avoir de soucis, donc il faudra prévenir que l'action n'est pas ok.

    A+, crabs
    0
  9. fabrice11901 Messages postés 787 Statut Membre 64
     
    donc dans mon cas, mon code est le bon mais cela viendrai de php installer sur le serveur de mon hébergeur?
    0
  10. crabs Messages postés 909 Statut Membre 507
     
    Salut,
    Perso, j'écrirai un truc du genre
    $result = mysql_query($query);
    if ( ( $result == true ) && ( mysql_affected_rows() > 0 ) )
        {
        echo "Merci, votre adresse e-mail a été supprimé de la base de donnée, vous ne recevrez plus d'informations du site";
        }
    else
        { echo "Désolé, mais votre adresse e-mail n'a pas été supprimée. Vérifiez que vous avez bien entré la bonne";
        }
    

    A+, crabs
    0
  11. fabrice11901 Messages postés 787 Statut Membre 64
     
    re
    merci c'est bon ça marche !
    mais ça aurait quand même du fonctionner avec l'autre code non?
    0
  12. crabs Messages postés 909 Statut Membre 507
     
    Salut,
    Dans tous les cas, dans ton code, mysql_affected_rows($result) ne peut
    pas fonctionner car $result n'est pas un identifiant de connexion mais le
    résultat d'une requête.
    A+, crabs
    0