IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Il refuse de "delete"


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 52
    Points : 28
    Points
    28
    Par défaut Il refuse de "delete"
    je plante de décor:

    J'ai 2 tables dans la meme bdd.
    La seconde récupère un élément de la 1ère table et j'y rajoute 2 champs en plus.

    table 1: a,b,c,d,e
    table 2: c,f,g


    Le détail:

    J'aimerais effacer sur ces 2 tables, tous les champs correspondant à un critère par rapport au champs en commun.

    Enregistrement 1:
    table 1: a,b,c,d,e
    table 2: c,f,g

    Enregistrement 2:
    table 1: a,b,c,d,e
    table 2: c,f,g

    Enregistrement 3:
    table 1: a,b,c,d,e
    table 2: c,f,g

    Enregistrement 4:
    table 1: a,b,c,d,e
    table 2: c,f,g

    Enregistrement 5:
    table 1: a,b,c,d,e
    table 2: c,f,g

    le champs C de l'enregistrement 4 correspond à un critère de "delete".

    Donc, j'aimerais effacer l'enregistrement 4 sur les 2 tables.


    Le problème : En lancant la page, je n'ai pas de message d'erreur mais le delete ne s'effectue pas. J'ai vérifié dans la bdd.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    mysql_connect("localhost","root","");
    mysql_select_db("mabdd");
    $j=date("z")+1; // je sais que ce n'est pas comme ça que l'on écrit cette ligne là.
    $reponse = mysql_query("SELECT * FROM messagememe");
     
    while ($donnees = mysql_fetch_array($reponse))
    {
    $k = $donnees['jour'];
    $d = $donnees['messmeme'];
     
    if ($k<$j)
     
    {
    mysql_query("DELETE FROM messagememe where messmeme==$d");
    mysql_query("DELETE FROM bdmessages where mess==$d");
    }
     
    }
     
     
    mysql_close();
    ?>
    Savez-vous m'aider ?

  2. #2
    Membre éclairé
    Avatar de efficks
    Inscrit en
    Septembre 2005
    Messages
    712
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 712
    Points : 776
    Points
    776
    Par défaut
    Premièrement, quel est ton serveur de base de données! Je veux bien t'aider mais...

    Essaye ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM messagememe where messmeme=$d
    (Un seul = dans la requête!)
    Avant de poster : FAQ, tutos, rechercher, google, ... Après :
    Merci

  3. #3
    Membre éclairé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Points : 878
    Points
    878
    Par défaut
    Ce n'est pas trop le forum approprié peut être aurait-il été plu sjudicieux d'aller dans le forum Mysql.

    essai plutot

    DELETE FROM `messagememe` Where `messmeme`='$d';

    (fait attention au ` et ' )
    manganimes (en construction) -
    zemanga

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 52
    Points : 28
    Points
    28
    Par défaut
    mon propre pc (je le fais en localhost) pour l'instant.

    merci pour ton aide.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 52
    Points : 28
    Points
    28
    Par défaut
    j'ai testé mais rien à faire... enfin, rien à deleter ! :'(

  6. #6
    Membre actif

    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 264
    Points
    264
    Par défaut
    1- J'ai rien compris à la question, c'est sans doute clair dans ta tête, mais pas dans ton post.

  7. #7
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Bon, désolé pour le cafouillage de forums mais si tu nous disais quelle est la requête exacte envoyée à MySQL (donc la valeur de la variable $d) on y verrait beaucoup plus clair
    Pensez au bouton

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 52
    Points : 28
    Points
    28
    Par défaut
    mon site : www.messagespourtoi.be

    faites : "composer" et suivez les instructions, vous allez comprendre mon problème. Au bout de 1 semaine, le message s'efface dans ma bdd.

    dans ma bdd, je trouve le jour d'aujourd'hui. Je rajoute 8 jours et ce numéro je l'ajoute dans ma bdd ($a).

    Les jours avancent...

    Le 8ème jour, je vais donc trouver un message qui est vieux de 8 jours dans ma bdd. Bref, je vais le deleter car il ne peut rester que 8 jours (je l'ai décidé).

    Je delete, tant le message que la référence (et d'autres info interne) de ce message-là sur les 2 tables.

    ma requete sert donc à trouver tous les enregistrements dont le chiffre de jour = 8 ... si oui, va effacer sur les 2 tables toutes les info's s'y concernant.

    est-ce + clair ??

  9. #9
    Membre éclairé
    Avatar de efficks
    Inscrit en
    Septembre 2005
    Messages
    712
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 712
    Points : 776
    Points
    776
    Par défaut
    Tu ne devrais pas enregistrer la date à laquelle tu souhaites effecer, mais bien la date à laquelle la ligne a été enregistrée. Cela te permettra de changer facilement la requête DELETE si tu souhaite changer le nombre de jour pour effacer. Suggestion!

    Ta colonne date, elle est dans quel format? Car si elle contient une date et une heure. Tu demande de supprimer les enregistrements qui correspondent à une date heure. Peut-être juste enregistrer la date. Ce n'est qu'une piste que je lance.

    Dernièrement, effectivement, ton post est dans le mauvais forum.
    Avant de poster : FAQ, tutos, rechercher, google, ... Après :
    Merci

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 52
    Points : 28
    Points
    28
    Par défaut
    ma colonne date n'est en fait qu'une colonne chiffre car j'utilise $j=date("z") et donc, no prob pour le format.

    dans ma bdd, ma colonne "jour" est en "varchar".

  11. #11
    Membre éclairé
    Avatar de efficks
    Inscrit en
    Septembre 2005
    Messages
    712
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 712
    Points : 776
    Points
    776
    Par défaut
    Pourquoi n'utilises-tu pas les formats de date founis par MySQL?
    Avant de poster : FAQ, tutos, rechercher, google, ... Après :
    Merci

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo