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 :

Requête delete non-fonctionnelle [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 69
    Par défaut Requête delete non-fonctionnelle
    Bonjour,

    J'ai une requete delete qui ne fonctionne pas. Je m'explique:

    Premièrement 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    /****
     *
     *  Structure Conditionnelle Delete Movies
     *
     ***/
     
        if (isset($_POST['cmdDeleteTblvisionner']))
            {
                /****
                 *
                 *  REQUETE delete movie visionner
                 *
                 ***/
     
                    if (isset($_POST['chkSelection']))
                        {
                            echo count($_POST['chkSelection']);
                            //Assignation variable $checkedbox
                            foreach ($_POST['chkSelection'] as $checkedbox)
                                {
                                  echo $checkedbox;
                            $RequeteDeleteTblvisionner = "DELETE
                                                          FROM 'tblvisionner'
                                                          WHERE (('tblvisionner'.'IDMovies' = $checkedbox) 
                                                                 AND ('tblvisionner'.'IDUsers' = ".$_SESSION['ID_Users']."))";
     
                            //Assignation de la base de donnée
                            $Dbselectedprojet = mysql_select_db ('dbprojet',$connexion);
     
                            //Envoi de $RequeteDeleteTblvisionner au serveur de données
                            $EnvoiDeletetblvisionner = mysql_query ($RequeteDeleteTblvisionner);
                            echo $Dbselectedprojet;
                            echo $EnvoiDeletetblvisionner;
                                }
     
                        }
     
            }
    Je sais qu'il y a des echos, c'est pour mes tests.

    Donc, le echo de mon count, me renvoi bien le nombre de checkbox coché
    et le echo de $checkedbox me renvoie la valeur de chacune des checkbox, soit le ID du film a delete.

    Donc, la connexion à ma bd (mysql_select_db) me renvoie 1, donc true
    Mysql_query par contre me renvoi rien du tout, et je crois que c'est la mon probleme.

    J'ai testé ma requete sous mysql, et elle fonctionne très bien. Alors je ne comprends pas pourquoi, dans ma feuille php, elle plante. Alors si quelqu'un a une idée, je suis preneur!

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Salut,

    pas de réponse qui me saute au yeux si ce n'est changer cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     $RequeteDeleteTblvisionner = "DELETE
                                                          FROM 'tblvisionner'
                                                          WHERE (('tblvisionner'.'IDMovies' = $checkedbox) 
                                                                 AND ('tblvisionner'.'IDUsers' = ".$_SESSION['ID_Users']."))";
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $RequeteDeleteTblvisionner = "DELETE
                                                          FROM tblvisionner
                                                          WHERE tblvisionner.IDMovies = ".intval($checkedbox)." AND tblvisionner.IDUsers = ".intval($_SESSION['ID_Users'])."";

    j'oubliais, tu as le droit d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query( $somequery ) or die ( mysql_errno()." : ".mysql_error()." --> ".$somesql );
    Enfin, le droit........

    a plus

  3. #3
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Bonsoir,
    J'aurais été plus tenté de mettre les variables entre simples quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $RequeteDeleteTblvisionner = "DELETE FROM tblvisionner WHERE tblvisionner.IDMovies = '$checkedbox' AND tblvisionner.IDUsers = '".$_SESSION['ID_Users']."' ";

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Citation Envoyé par Jumano Voir le message
    Bonsoir,
    J'aurais été plus tenté de mettre les variables entre simples quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $RequeteDeleteTblvisionner = "DELETE FROM tblvisionner WHERE tblvisionner.IDMovies = '$checkedbox' AND tblvisionner.IDUsers = '".$_SESSION['ID_Users']."' ";
    Non justement. Car
    1. il ne protège pas ces variables, donc un bon intval sa ne tue personne.
    2. ce sont des nombres et mysql le comprend très bien ainsi.

    Après chacun voit comme il veut bien sûr, il n'y aucun débat derrière ma réponse.

    a plus

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 69
    Par défaut
    Bon

    J'ai testé et sa fonctionne kaymak, cependant l'autre solution n'est pas fonctionnelle.

    Cependant, j'ai quelques questions:
    1.Que veut dire et que fait: intval
    2.Pourquoi mon echo de mysql_query ne me renvoit toujours pas de réponse?
    3.Si je veux rafraichir ma page après la requete, c'est bien un header que je dois utiliser?

    Merci beaucoup de votre aide, et j'espère que vous pourrez me répondre, car même si présentement tout fonctionne, je ne comprends pas plus le pourquoi.

    Merci...

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Alors, intval c'est une fonction qui force le type de la variable à entier.
    En gros si tu fais

    intval("something") => 0
    intval(15) => 15
    intval("15") => 15

    ect. Il y à une doc si tu veux plus d'explications.

    Pour ta requête le problème venait des guillemets simples autour du nom des tables/champs. En faits, c ne sont pas des guillemets que tu dois mettre mais des `. Ce guillemet sert à protéger les noms de champs pour l'interpréteur de mysql. Ce n'est pas sql standard, donc il ne vaut mieux pas s'en servir, mais dans certains cas c'est bien utile.

    Citation Envoyé par http://www.php.net/manual/fr/function.mysql-query.php
    Pour les autres types de requêtes, UPDATE, DELETE, DROP, etc., mysql_query() retourne TRUE en cas de succès ou FALSE en cas d'erreur.
    Afficher un booleen n'a pas de sens.
    Par contre tu peux faire echo (int)mysql_query("..."); ou intval( mysql_query("...") );
    Typer ton booleen en entier va le trasformer en 0 ou 1, ce qui peut être afficher.
    Cf type juggling.

    3.Si je veux rafraichir ma page après la requete, c'est bien un header que je dois utiliser?
    Oui. Enfin j'imagine.... Ma boule de cristal est un peu out of order ces temps ci.

    bye

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/02/2015, 11h44
  2. [AC-2007] requete DELETE non fonctionnelle ?
    Par atech dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 28/09/2011, 14h36
  3. [AC-2007] Fonction de suppression de requête non fonctionnelle
    Par facedeharicot dans le forum VBA Access
    Réponses: 9
    Dernier message: 26/07/2011, 11h49
  4. Plugin non fonctionnel après requête AJAX
    Par florianlyon dans le forum jQuery
    Réponses: 8
    Dernier message: 05/07/2011, 08h56

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