Version complète: sur le forum Webmaster Hub : probleme avec mysql
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > SQL
birou
Bonjour!
Voila j'ai un probleme avec ma requete :c'est à dire Lors de la suppression, si le mot en question est sur plusieurs numéros, ça supprime
un seul numéro à la fois, alors qu'il faut tous les supprimer .
Voici une partie du script.
CODE
if(isset($_REQUEST['supprimer']))
        {
            $sql="delete from type_msg_recus where ref_type_msg=".$_REQUEST['ref_type_msg'];
            mysql_query($sql);
            print("<div id=grosse_surbrillance>Synonyme supprim&eacute; avec succ&egrave;s.</div>");
        }
        ?>
.
Merci de votre comprehension
Bourinho
Salut,

cela pourrait peut-être venir de l'absence de guillemets dans ta requête, essaie :
CODE
if(isset($_REQUEST['supprimer']))
        {
            $sql='delete from type_msg_recus where ref_type_msg=\''.$_REQUEST['ref_type_msg'].'\'';
            mysql_query($sql);
            print("<div id=grosse_surbrillance>Synonyme supprimé avec succès.</div>");
        }
        ?>


Sinon, je dois avouer que je ne vois pas...

A+
birou
Merci de répondre !

Non il ne sagit pas des guillemets.
En fait le probleme est que plusieurs mots sont insérés dans la base avec differents numéros et là ma requete supreime un mot a la fois et je voudrai faire une requete qui tous les mots a la fois mais je sais pas comment .
Si vous avez une idée
Bourinho
Salut,

ce que tu me dis, c'est que ça marche si tu fais une boucle avec tout le temps la même requête dedans???

A+
Jeromnimo
En changeant ton ref_type_message=xxxx par ref_type_message IN (xxxx) ?

EDIT : Je crois que j'ai compris de travers ce que tu veux faire... :-/
Tu n'as pas un morceau de ta table sql ? ca serait plus clair :-P
Bourinho
Salut,

t'as essayé en précisant la table dans le WHERE??? Genre comme suit :
CODE
if(isset($_REQUEST['supprimer']))
        {
            $sql="delete from type_msg_recus
                                 where type_msg_recus.ref_type_msg=".$_REQUEST['ref_type_msg'];
            mysql_query($sql);
            print("<div id=grosse_surbrillance>Synonyme supprim&eacute; avec succ&egrave;s.</div>");
        }
        ?>


Je ne sais pas si cela peut changer quelque chose...mais ton problème est tellement bizarre... que je te propose des solutions...bizarres!!! wink.gif

A+

PS : Je viens de lire ce qui suit sur ce site
CITATION
Le seul cas pour lequel cet ordre peut ne pas aboutir est lorsque la suppression viole la contrainte d'intégrité référentielle. Il est en effet absurde de vouloir supprimer un client si les factures relatives à ce client n'ont pas été préalablement supprimées.

Ne serais tu pas dans ce cas par hasard???
birou
+--------------+----------+---------------+------+---------------+----------------------+--------+-----------+-----------+-------------+
| ref_type_msg | type_msg | numeros_appel | smsc | categorie_msg | id_categorie_service | statut | text_info | avec_code | synonyme_de |
+--------------+----------+---------------+------+---------------+----------------------+--------+-----------+-----------+-------------+
| 2074 | test3 | 5002020 | 5 | TELVOT | 294 | 1 | | 1 | a |
| 2072 | test3 | 7455 | 3 | ANNUAIRE | 13 | 1 | | 1 | a |
| 2071 | test3 | 6060 | 4 | TELVOT | 309 | 1 | | 1 | a |
| 2070 | test3 | 5002020 | 5 | TELVOT | 294 | 1 | | 1 | a |
| 2066 | test3 | 5005555 | 2 | ANNUAIRE | 9 | 1 | | 1 | a |
| 2067 | test3 | 6715555 | 1 | ANNUAIRE | 9 | 1 | | 1 | a |
| 2069 | test3 | 5005555 | 2 | ANNUAIRE | 9 | 1 | | 1 | a |
| 2073 | test3 | 6715555 | 1 | ANNUAIRE | 9 | 1 | | 1 | a |
| 2075 | test3 | 6060 | 4 | TELVOT | 309 | 1 | | 1 | a |
| 2068 | test3 | 7455 | 3 | ANNUAIRE | 13 | 1 | | 1 | a |

voici ma table mais je suprimer test3 avec cette requete il le fait un par un alors je vous une requete qui suprime tous a la fois
Jeromnimo
Sauf erreur de ma part, il me semble que c'est sur le champ type_msg que tu dois faire ta suppression, et non sur le champ ref_type_msg ? non ?
birou
En fait j'ai essayé avec le champs type_msg mais cela n'a pas marché .
Bourinho
Salut,

Quand tu dis, ça n'a pas marché, ca renvoit une erreur ou bien ça fait quelquechose mais pas ce que tu veux...(et dans ce cas, qu'est ce que cela fait...)

A+

PS : Je suis de l'avis de Jeromnimo... il va falloir s'occuper du champs type_msg!!! (J'avais même pas fait gaffe à ça...)
Jeromnimo
Si tu pouvais afficher le nombre de lignes affectées par la requete :
http://fr.php.net/manual/fr/function.mysql-affected-rows.php

Histoire de savoir si la requete plante deja, ou si elle passe ?
birou
Vous savez j'ai fait mysql_affected_rows mais il m'envoit une erreur de ce genre
Parse error: parse error, unexpected T_STRING in /usr/local/apache/htdocs/interfaces_admin/administration/php.php on line 85.
J'avais essayé de faire une boucle cela n'a pas marché
Jeromnimo
Si t'as une erreur de ce type, ça veut dire que c'est au niveau php que ca a foiré, donc que t'as oublié un point virgule ou un truc du genre...

Et concernant la question de Bourinho, ta requete a fonctionné ou Mysql t'as renvoyé une erreur ?
birou
sad.gif C a n'a pas fonctionné et quand je fais une boucle ca ne fonctionne pas non plus mais il me renvois une erreur en plus :
Warning:mysql is not valide argu.................. de ce genre
Jeromnimo
Si on avait l'erreur en entier ça serait beaucoup mieux quand même ;-)
Et sinon tu as testé ta requete sur table directement (via PhpMyAdmin par exemple) ? Elle réalise bien ce que tu souhaites ?
birou
Quand je fais sur phpMyAdmin par exemple
delete from type_msg_recus where type_msg='test3';
ca efface tout ca marche nikel par contre dans le fichier ca marche pas .
je sais pl :nonono koi faire nonono.gif
Jeromnimo
Donc ca veut dire que tu as un soucis avec la connexion sql...
Le warning ce serait pas un "invalid ressource link par hasard ?"
Il faut l'erreur complete sinon on y arrivera pas :-P
birou
voila l'erreur qu'il me renvoit :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /usr/local/apache/htdocs/interfaces_admin/administration/php.php on line 86
Jeromnimo
Ce qui veut dire que tu essayes de faire un fetch_array a priori sur une ressource de resultat mysql qui ne contient pas de données (une requete qui renvoie rien quoi...) mais je vois pas pourquoi tu as un tefch_array ???
C'est ta solution avec une boucle c'est ca ?
Bourinho
Salut,

Essaye d'abord sans la variable dans ta requête... Remplace ta variable comme tu l'as fait pour mettre ta requête dans PHPMyAdmin... Si on arrive à faire cela, il suffira de remplacer par la suite... Mais c'est vrai que cela ressemble à un point virgule manquant... ou à des guillemets manquants dans la requête (qu'il faut échapper s'il est nécessaire de le rappeler...)

A+
birou
Oui jerom c la solution avec ma boucle
Jeromnimo
Bien reviens à la solution simple de départ et fait un echo de ta requete, deja pour voir ce que ca donne...
Et derriere le echo tu mets eventuellement un affected_rows pour verifier si ca a fonctionné ou pas....
birou
ca affiche cela:
("Lignes effacées : %d\n", mysql_affected_rows());
apres le echo que j'ai mis
Kent
Bonjour birou,

CODE
$sql="delete from type_msg_recus
                                 where type_msg_recus.ref_type_msg=".$_REQUEST['ref_type_msg'];
            mysql_query($sql);


et si tu mettez un asterisque ?

CODE
$sql="delete * from type_msg_recus
                                 where type_msg_recus.type_msg=".$_REQUEST['ref_type_msg'];
            mysql_query($sql);


si tu mets la clause

CODE
where type_msg_recus.type_msg=".$_REQUEST['ref_type_msg'];


ca ne peut peut pas marché car chaque reference est differente il est donc logique qu'il supprime que celle indiqué ( et donc qu'une seule... ) me trompe-je ?
birou
Merci kent !
J'ai essayé ta requete mais ca n'a rien donnée dsl
birou
JE PENSE QUE LE PROBLEME ET ENTRE LES DEUX REQUETES
CODE
if(isset($_REQUEST['supprimer']))
{
     $sql="delete  from type_msg_recus where ref_type_msg='".$_REQUEST['ref_type_msg']."' order by ref_type_msg";
            mysql_query($sql);
            echo $sql;
            print("<div id=grosse_surbrillance>Synonyme supprim&eacute; avec succ&egrave;s.</div>");
        
        }


et celle là car il vont ensemble
CODE
print("</td><td valign=top>");
                $sql2="select * from type_msg_recus where synonyme_de='".$data['type_msg']."'  group by type_msg";
                $res2=mysql_query($sql2);
                while($data2=mysql_fetch_array($res2))
                    {
                    print($data2['type_msg']." "."<a href=php.php?supprimer=yes&ref_type_msg=".$data2['ref_type_msg']."><img src=../images/icone_supprimer.png alt=Supprimer border=0></a><br>");
                    }
sebyoga
Hum, d'abord si tu fait un echo de $_REQUEST['ref_type_msg'], cela te sorts bien test3 ????

si oui, ta requette doit donner cela :

CODE
if(isset($_REQUEST['supprimer']))
{
     $valeur = $_REQUEST['ref_type_msg'];
     $sql = "DELETE FROM type_msg_recus WHERE type_msg = '$valeur'";
            mysql_query($sql);
            echo $sql;
            print("<div id=grosse_surbrillance>Synonyme supprim&eacute; avec succ&egrave;s.</div>");


En concidérant que "type_msg_recus" est bien le nom de ta table.

Par contre d'ou vient $_REQUEST['ref_type_msg'] ????

Les orders ne servent à rien sur un DELETE, cela ne sert que pour des selects...


Tiens nous au courant smile.gif
birou
Merci a tous ceux qui ont participé a mon post ca marche nickel a_thumbsup_20.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.