Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/03/2008, 10h25   #1
Invité régulier
 
Inscription : mars 2006
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 78
Points : 7
Points : 7
Par défaut delete par lien

salut tout le monde


j'aurais une question portant sur le delete dans la base.

je veux pouvoir supprimer tous les devis d'un client(les devis étant en fait situés dans ma table commandes)

mais ça ne supprime pas! des que je clique sur le lien de supprimer tous les devis, "page web non trouvé"... alors voila mon script pour ceux qui voudront bien prendre 5 minutes de leur temps

Code :
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
39
40
41
<?php session_start();
require "conf.php";
?>
 
mysql_connect("localhost", "root","");
mysql_select_db("aviatec");
 
if(isset($_GET['allsupprim']))
{
mysql_query("DELETE FROM commandes WHERE id_membre=". $_GET['allsupprim']);
}
 
 
$requete=mysql_query("Select * from commandes where id_membre ='".$_GET['devis']."'");
if(mysql_num_rows($requete)!=0)
{
?>
<a href="infos_commmande.php?allsupprim=<?php echo $_GET['devis']; ?>"onClick="return confirm('Etes vous sûr de vouloir effectuer cette action?');">supprimer tous les devis</a><?
while( $req=mysql_fetch_array($requete) )
{
    //je realise mon script
$id_commande =  $req['id'];
$id_id_commande = $req['id_membre'];
$date_commande = $req['date'];
$heure_commande = $req['heure'];
//$designation_commande = $req['designation'];
//$qte_commande = $req['qte'];
 
}?>
<a  href="memberlist.php"><< Retour liste membres</a><?php	
}
else
{
?>
 ce client n'a pas encore envoyé de devis<br><br><a  href="memberlist.php"><< Retour liste membres</a>
 <?php
}
 
?>
</body>
</html>
il faut savoir que $_GET['devis'] est le résultat du lien
<a href="infos_commande.php?devis=<?php echo $id; ?>">
ou $id est l'id du membre

une solution?
cyril3d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 10h31   #2
Membre éclairé
 
Développeur Web
Inscription : septembre 2004
Messages : 352
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : septembre 2004
Messages : 352
Points : 396
Points : 396
Code :
<a href="infos_commmande.php?allsupprim=<?php echo $_GET['devis']; ?>"onClick="return confirm('Etes vous sûr de vouloir effectuer cette action?');">supprimer tous les devis</a>
infos_commande.php plutôt non ?
Chengj est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 10h32   #3
Invité régulier
 
Inscription : mars 2006
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 78
Points : 7
Points : 7
bah...c est ce que j ai mis non?

<a href="infos_commmande.php?allsupprim=<?php echo $_GET['devis']; ?>"onClick="return confirm('Etes vous sûr de vouloir effectuer cette action?');">supprimer tous les devis</a>
cyril3d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 10h36   #4
Rédacteur/Modérateur
 
Avatar de Aquanum
 
Homme Yoann Sculo
Ingénieur Linux Embarqué
Inscription : janvier 2006
Messages : 564
Détails du profil
Informations personnelles :
Nom : Homme Yoann Sculo
Âge : 25
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Ingénieur Linux Embarqué
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : janvier 2006
Messages : 564
Points : 1 381
Points : 1 381
Et si tu essayes:
Code :
1
2
3
 
$sql = "DELETE FROM commandes WHERE id_membre=". $_GET['allsupprim'];
echo $sql;
et que tu exécute ça dans phpMyAdmin? est-ce que ça marche?

Sinon je te conseillerais de protéger $_GET['allsupprim'], vérifier que c'est bien un entier et l'échapper. C'est une énorme faille de sécu que tu as là ^^
Aquanum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 10h41   #5
Membre éclairé
 
Développeur Web
Inscription : septembre 2004
Messages : 352
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : septembre 2004
Messages : 352
Points : 396
Points : 396
Tu as dit ça :

Citation:
<a href="infos_commande.php?devis=<?php echo $id; ?>">
Alors que dans ton code, tu fais appel à une page infos_commmande.php ...
Chengj est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 10h45   #6
Invité régulier
 
Inscription : mars 2006
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 78
Points : 7
Points : 7
merci aquanum pour tes conseils de securite


mais heuuu...je vois toujours pas ce que Chengj veut me dire
cyril3d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 10h50   #7
Membre éclairé
 
Développeur Web
Inscription : septembre 2004
Messages : 352
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : septembre 2004
Messages : 352
Points : 396
Points : 396
Bah "page web non trouvé", ça veut tout dire. Tu pointes sur une page inexistante x).

Et si tu remplaçais :
Code :
<a href="infos_commmande.php?allsupprim=<?php echo $_GET['devis']; ?>
Par :
Code :
<a href="infos_commande.php?allsupprim=<?php echo $_GET['devis']; ?>
?
Chengj est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 10h51   #8
Rédacteur/Modérateur
 
Avatar de Aquanum
 
Homme Yoann Sculo
Ingénieur Linux Embarqué
Inscription : janvier 2006
Messages : 564
Détails du profil
Informations personnelles :
Nom : Homme Yoann Sculo
Âge : 25
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Ingénieur Linux Embarqué
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : janvier 2006
Messages : 564
Points : 1 381
Points : 1 381
Chengj se réfère à la fin de ton message où tu dis:
Citation:
il faut savoir que $_GET['devis'] est le resultat du lien
<a href="infos_commande.php?devis=<?php echo $id; ?>">
ou $id est l'id du membre
Aquanum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 10h54   #9
Rédacteur/Modérateur
 
Avatar de Aquanum
 
Homme Yoann Sculo
Ingénieur Linux Embarqué
Inscription : janvier 2006
Messages : 564
Détails du profil
Informations personnelles :
Nom : Homme Yoann Sculo
Âge : 25
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Ingénieur Linux Embarqué
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : janvier 2006
Messages : 564
Points : 1 381
Points : 1 381
Ah oui en effet, commande avec 3 m ^_^ ... normal que ça ne marche pas *siffle*
Aquanum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 10h56   #10
Invité régulier
 
Inscription : mars 2006
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 78
Points : 7
Points : 7
...

...


merci! j'avais pas vu les 3 m


par contre maintenant j'ai un message d'erreur...


Notice: Undefined index: devis in C:\Program Files\EasyPHP 2.0b1\www\panierachat\exemplepanier\admin\infos_commande.php on line 35

et a la ligne 35 y a:
$requete=mysql_query("Select * from commandes where id_membre ='".$_GET['devis']."'");
cyril3d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 11h02   #11
Rédacteur/Modérateur
 
Avatar de Aquanum
 
Homme Yoann Sculo
Ingénieur Linux Embarqué
Inscription : janvier 2006
Messages : 564
Détails du profil
Informations personnelles :
Nom : Homme Yoann Sculo
Âge : 25
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Ingénieur Linux Embarqué
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : janvier 2006
Messages : 564
Points : 1 381
Points : 1 381
Déjà tu n'as pas besoin de mettre de ' autour de $_GET['devis'] c'est un entier.
Et ensuite $_GET['devis'] ne semble pas exister.
Fais un echo $_GET['devis']; pour en avoir le coeur net. Et si rien ne s'affiche il faut regarder plus en amont.
Aquanum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 11h04   #12
Membre éclairé
 
Développeur Web
Inscription : septembre 2004
Messages : 352
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : septembre 2004
Messages : 352
Points : 396
Points : 396
Il faudrait peut-être ajouter "devis" en paramètre sur ton lien de suppression, non ? ^^
Chengj est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 11h08   #13
Membre Expert
 
Avatar de darkstar123456
 
Inscription : mars 2008
Messages : 1 180
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Belgique

Informations forums :
Inscription : mars 2008
Messages : 1 180
Points : 1 357
Points : 1 357
Envoyer un message via Skype™ à darkstar123456
C'est normal en fait, car tu ne vérifies pas sir $_GET["devis"] est défini.

Donc il va effectuer une suppression et vouloir ensuite afficher le reste de la page. Rajoute une condition isset($_GET["devis"]) avant ta requête comme ceci :

Code :
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
 
if( isset($_GET["devis"]) ) {
$requete=mysql_query("Select * from commandes where id_membre ='".$_GET['devis']."'");
if(mysql_num_rows($requete)!=0)
{
?>
<a href="infos_commmande.php?allsupprim=<?php echo $_GET['devis']; ?>"onClick="return confirm('Etes vous sûr de vouloir effectuer cette action?');">supprimer tous les devis</a><?
while( $req=mysql_fetch_array($requete) )
{
//je realise mon script
$id_commande = $req['id'];
$id_id_commande = $req['id_membre'];
$date_commande = $req['date'];
$heure_commande = $req['heure'];
//$designation_commande = $req['designation'];
//$qte_commande = $req['qte'];
 
}?>
<a href="memberlist.php"><< Retour liste membres</a><?php
}
else
{
?>
ce client n'a pas encore envoyé de devis<br><br><a href="memberlist.php"><< Retour liste membres</a>
<?php
}
}
darkstar123456 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 11h09   #14
Invité régulier
 
Inscription : mars 2006
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 78
Points : 7
Points : 7
je sais que $_GET['devis'] existe car dans mon script complet je peux effacer devis par devis(un par un) et ce code marche. Etant donné que là aussi j'utilise $_GET['devis'] je sais que ça marche:

Code :
<a href="infos_commande.php?supprimer=<?php echo $id_commande; ?>" onClick="return confirm('Etes vous sûr de vouloir effectuer cette action?');">Supprimer le devis</a>
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (isset($_GET['supprimer']))
{	
	$recherche = mysql_query ("SELECT * FROM membre ORDER BY id");
$var = mysql_fetch_array ($recherche); 
	$id = $var['id'];
$requete=mysql_query("Select * from commandes where id_membre =".$id);
$req=mysql_fetch_array($requete);
$id_commande =  $req['id'];
 
	mysql_query('DELETE FROM article_commande WHERE id_commandes='.$id_commande);
 
	 mysql_query('DELETE FROM commandes WHERE id='. $_GET['supprimer']);
	echo'<a href="memberlist.php">retour</a>';	
}
cyril3d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 11h11   #15
Membre Expert
 
Avatar de darkstar123456
 
Inscription : mars 2008
Messages : 1 180
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Belgique

Informations forums :
Inscription : mars 2008
Messages : 1 180
Points : 1 357
Points : 1 357
Envoyer un message via Skype™ à darkstar123456
Tu sais que ca marche ? Tu sais que tu utilises $_GET["devis"] ? Bon, lis un peu ce qu'on écrit...

Tu n'as pas de $_GET["devis"] . Le code que tu viens de mettre ne fait que prouver ce que NOUS disons...
darkstar123456 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 11h13   #16
Membre éclairé
 
Développeur Web
Inscription : septembre 2004
Messages : 352
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : septembre 2004
Messages : 352
Points : 396
Points : 396
Vu que tu retournes sur la même page, ne serait-il pas judicieux de faire cela :
Code :
<a href="infos_commande.php?supprimer=<?php echo $id_commande; ?>&amp;devis=<?php echo $id; ?>" onClick="return confirm('Etes vous sûr de vouloir effectuer cette action?');">Supprimer le devis</a>
?

J'ai mis $id par défaut, à toi remplacer la bonne variable.
Chengj est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 11h15   #17
Rédacteur/Modérateur
 
Avatar de Aquanum
 
Homme Yoann Sculo
Ingénieur Linux Embarqué
Inscription : janvier 2006
Messages : 564
Détails du profil
Informations personnelles :
Nom : Homme Yoann Sculo
Âge : 25
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Ingénieur Linux Embarqué
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : janvier 2006
Messages : 564
Points : 1 381
Points : 1 381
En effet, "Undefined index: devis" veut dire que devis n'est pas défini et que le script n'arrive pas à trouver l'index devis dans le tableau $_GET. Donc $_GET["devis"] n'existe pas.

Fais ce que darkstar123456 et Chengj te disent et ça marchera
Aquanum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 11h18   #18
Invité régulier
 
Inscription : mars 2006
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 78
Points : 7
Points : 7
MERCI




CA MARCHE



merci beaucoup de vos nombreux conseils:une fois rassemblés,ils forment un coktail explosifs

encore merci tout marche!
cyril3d est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h45.


 
 
 
 
Partenaires

Hébergement Web