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 :

delete fonctionnant en local mais pas sur site distant [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 23
    Points : 20
    Points
    20
    Par défaut delete fonctionnant en local mais pas sur site distant
    Bonjour,
    je me heurte à un petit problème avec l'ordre delete
    J'ai une table tb_hotel dans ma base de données
    Je fais un delete d'un enregistrement de cette table, enregistrement identifié par sa clé $cleHot = 20;
    En local l'enregistrement dont la clé = 20 est bien supprimé;
    Par contre sur le site distant d'un hébergeur, cet enregistrement n'est pas supprimé et aucun message n'est signalé;
    voici le script que j'ai volontairement réduit à sa plus simple expression pour mieux cerner le problème:

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mysql_select_db($database_connectYieldProduc, $connectYieldProduc);
        $cleHot=20;
        $query_SupHot = "DELETE FROM bd_yieldproduc.tb_hotel WHERE tb_hotel.cleHotel = '$cleHot' ";
        $supprim = mysql_query($query_SupHot, $connectYieldProduc);

    Je ne vois pas pourquoi sur le site de l'hébergeur ce script ne supprime rien
    alors que j'ai vérifié avec PHPADMIN que dans ma base installée sur le site distant de l'hébergeur, cet enregistrement existe dans la table tb_hotel.

    Merci à l'avance de bien vouloir examiner mon problème.

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 911
    Points : 6 032
    Points
    6 032
    Par défaut
    Le commit est-il fait?

    N'y aurait-il pas une option auto-commit sous phpadmin ?

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Ton problème n'est probablement pas dû à ça mais j'ai quelques remarques sur ton code...

    1) Si, comme il semble d'après l'affectation de valeur à la variable $cleHot, la colonne cleHotel est de type entier, alors inutile de mettre la variable entre apostrophes dans la requête.

    2) Puisque tu sélectionnes déjà la BDD par mysql_connect, inutile de repréciser cette BDD dans la requête.

    3) De même, puisque tu DELETE FROM tb_hotel, inutile de répéter le nom de la table dans le WHERE.

    4) Ajoute une capture d'erreur de MySQL pour mieux détecter d'où vient le problème

    Ton code allégé devient celui-ci :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    mysql_select_db($database_connectYieldProduc, $connectYieldProduc);
    $cleHot=20;
    $query_SupHot = "
      DELETE FROM tb_hotel 
      WHERE cleHotel = $cleHot
    ";
    $supprim = mysql_query($query_SupHot, $connectYieldProduc) or die(mysql_error);
    Assure toi quand même que la variable $database_connectYieldProduc a bien la bonne valeur et que cette BDD existe avec ce nom sur le serveur.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 23
    Points : 20
    Points
    20
    Par défaut delete fonctionnant en local mais pas sur site distant Répondre à la discussion
    j'ai oublié de spécifier que ma base de données est en MyIsam
    Pour le MyIsam l'ordre commit est-il utilisable car je ne suis pas en mode transactionnel.
    Par ailleurs je dois préciser à supposer que la mise à jour ce soit effectuée en différé, 24h après l'intruction delete, l'enregistrement devrait être supprimé alors que ce n'est pas le cas.

    A l'attention de CinePhil:
    merci pour tes conseils, j'en prends acte.

    Merci à tous de vous occuper de mon problème

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut
    Est-ce que le user utilisé par ta connexion mysql distante a les droits de DELETE sur la table/base en question ?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 23
    Points : 20
    Points
    20
    Par défaut delete fonctionnant en local mais pas sur site distant
    Bonjour,
    j'ai suivi vos conseils et rajouté la fonction "or die mysql_error" et dans ce cas est apparu le message erreur "delete: command denied to user
    'dbo344884133' ".
    Pensant à un problème de privilège j'ai alors rajouté l'instruction SQL "Grant SELECT, INSERT, UPDATE, DELETE ON TABLE tb_hotel TO dbo344884133 ";
    Après soumission de cette page corrigée le message suivant apparait:
    Grant command denied to user 'dbo344884133' ".

    Je ne comprends pas car la création d'enregistrement dans la même table (par l'instruction insert) fonctionne dans la base sur le site distant.

    Rappel du code soumis provoquant le message erreur:


    mysql_select_db($database_connectYieldProduc, $connectYieldProduc);
    //
    $cleHot=19;
    $query_Autoris = "
    GRANT SELECT, INSERT, UPDATE, DELETE
    ON TABLE tb_hotel
    TO dbo344884133
    ";
    mysql_query($query_Autoris, $connectYieldProduc) or die("erreur lors de l'autorisation : " . mysql_error()) ;
    $query_SupHot = "
    DELETE FROM bd_yieldproduc.tb_hotel WHERE cleHotel = $cleHot
    ";
    $supprim = mysql_query($query_SupHot, $connectYieldProduc) or die("erreur lors du delete : " . mysql_error()) ;
    //

    Si vous avez une idée je suis preneur;
    Merci d'avance

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Ce n'est pas à l'application de donner des privilèges sur les tables mais à l'administrateur de la BDD directement dans le SGBD.

    delete: command denied to user 'dbo344884133'
    Ton premier message indique que ta requête DELETE est refusée parce que l'utilisateur 'dbo344884133' n'a pas le droit de faire un DELETE.

    Comme il s'agit probablement de l'utilisateur MySQL de l'application cliente, lui faire exécuter la requête GRANT ne changera rien car il n'en a pas le droit non plus, ce que confirme le second message :
    Grant command denied to user 'dbo344884133'
    Si tu es administrateur de la BDD, il faut que tu fasses la commande GRANT directement dans MySQL en y étant connecté avec un utilisateur qui a le privilège GRANT. Ensuite, ta requête DELETE dans ton code php fonctionnera normalement.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 23
    Points : 20
    Points
    20
    Par défaut delete fonctionnant en local mais pas sur site distant
    merci pour toutes ces infos qui vont me servir ultérieurement.
    mais en fait je suis navré et je viens de m'apercevoir de mon erreur: c'est vraiment trop bête de vous avoir fait tant cogiter.

    en fait pour les ordres select et insert que j'utilise dans mes pages php, je ne nomme jamais le nom de ma base; la connection est faite en début de page par un script connection;
    par contre dans le delete j'ai la table tb_hotel dans laquelle je supprime des enregistrements est nommée en la faisant précéder du nom de la base; et c'est ce nom de base qui est faux dans le site distant;
    j'ai donc juste nommé le nom de ma table en étant préalablement connecté sur la bonne base et le delete a fonctionné.

    je suis confus de vous avoir dérangé pour une erreur aussi stupide et vous remercie encore du temps que vous m'avez consacré.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Requête DELETE fonctionne en local mais pas sur le serveur
    Par abc.xyz dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 06/07/2015, 11h08
  2. [IIS 7] le site web fonctionne en local mais pas sur le net
    Par tortuegenie dans le forum IIS
    Réponses: 0
    Dernier message: 09/11/2012, 11h16
  3. Réponses: 1
    Dernier message: 29/05/2012, 10h36
  4. Réponses: 4
    Dernier message: 31/12/2008, 14h47
  5. AJAX : Fonctionne en local mais pas sur serveur distant ?
    Par jejefeds dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 19/06/2007, 14h26

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