Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
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 06/05/2011, 21h26   #1
Invité de passage
 
Inscription : mai 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 5
Points : 1
Points : 1
Par défaut Problème de delete

Bonjour,
Voici mon problème :
Je veux effacer un enregistrement dans une table tous simplement mais ça ne fonctionne pas et je n'ai pas de message d'erreur. Je code en PHP/HTML.
Voici mon code :
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
// On protège la variable "modifier" pour éviter une faille SQL
 
if (isset($_GET['modifier'])) // Si on demande de supprimer un timbre
{
	//connection
	mysql_connect("localhost", "root", "") or exit (mysql_error()); 
	mysql_select_db("variablefrance") or exit (mysql_error());
	$sql  = mysql_query("SELECT max(id_var) FROM variablefrance")or exit (mysql_error());
	WHILE($var1=mysql_fetch_array($sql))
	{
		$idvar_max = $var1[0];//idmax enregistrer dans la table variablefrance
	}
 
	$retour = mysql_query("SELECT annee, pays FROM variablefrance WHERE id_var='$idvar_max'") or exit (mysql_error());
	WHILE($var2 = mysql_fetch_array($retour))
	{
		$annee = $var2[0];
		$pays = $var2[1];
	}
	mysql_close();
	mysql_connect("localhost", "root", "") or exit (mysql_error());//connection au serveur MYSQL
	//connection à la base de donnée du pays
	mysql_select_db("$pays") or exit (mysql_error());
	$_GET['modifier'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier']));
	$num_yt = $_GET['modifier'];
	$retour = mysql_query("SELECT Num_Yvert_et_Tellier FROM `$annee` WHERE Num_Yvert_et_Tellier='$num_YT'") or exit (mysql_error());
	/*WHILE($var2 = mysql_fetch_array($retour))
	{
		$num_YT = $var2[0];
	}*/
	// On place toutes les variables dans des variables simples
	$num_YT = stripslashes($var2['num_yt']);
	$delette = mysql_query ("DELETE FROM `$annee` WHERE Num_Yvert_et_Tellier ='$num_YT'") or die(mysql_error());//probleme voir msg ie 
	//$delette = mysql_query ("DELETE FROM `1871` WHERE Num_Yvert_et_Tellier = '".$num_YT."') or die(mysql_error());//probleme voir msg ie 
	echo $delette;
	//if ($delette) echo "Sup effectué";
	//else echo "sup impossible";
	//echo "Suppression effectué avec succès";
	//require("france.php");
}
Ma commande delete ne fonctionne pas alors que dans le code suivant ça fonctionne.
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
42
43
44
<?php
// On protège la variable "modifier" pour éviter une faille SQL
if (isset($_GET['modifier'])) // Si on demande de supprimer un timbre
{
 
	//connection
	mysql_connect("localhost", "root", "") or exit (mysql_error());//connection au serveur MYSQL
	//connection à la base de donnée pays pour trouver le continent auquel appartient le pays saisie
	mysql_select_db("variable") or exit (mysql_error());
	$sql  = mysql_query("SELECT max(id_var) FROM variable")or exit (mysql_error());
	WHILE($var1=mysql_fetch_array($sql))
		{
			$idvar_max = $var1[0];//continent enregistrer dans la table variable
		}
		$sql2=mysql_query("SELECT continent FROM VARIABLE WHERE id_var='$idvar_max'")or exit (mysql_error());
		WHILE($var1=mysql_fetch_array($sql2))
		{
			$continent = $var1[0];//continent enregistrer dans la table variable
		}
 
		$result = mysql_num_rows($sql);
		IF($result == 1)
		{
			$sql2=mysql_query("SELECT pays FROM VARIABLE WHERE continent='$continent'")or exit (mysql_error());
			WHILE($var1=mysql_fetch_array($sql2))
			{
				$pays = $var1[0];//pays enregistrer dans la table variable
			}
		}		
 
	mysql_close();
	mysql_connect("localhost", "root", "") or exit (mysql_error());//connection au serveur MYSQL
	//connection à la base de donnée pays pour trouver le continent auquel appartient le pays saisie
	mysql_select_db("$continent") or exit (mysql_error());
	$_GET['modifier'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier']));
	$id_timbre = $_GET['modifier'];
	// On récupère les infos du timbre correspondant
	$retour = mysql_query("SELECT id_timbre FROM `$pays` WHERE id_timbre=".$id_timbre."") or exit (mysql_error());
	$donnees = mysql_fetch_array($retour);
	// On place toutes les variables dans des variables simples
	$id_timbre = stripslashes($donnees['id_timbre']);
	$delete=mysql_query ("Delete from `$pays` where id_timbre='$id_timbre'") or die(mysql_error());
	echo "Suppression effectuée avec succès";
	require("recherche.php");
Merci par avance pour votre aide
francois50 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 21h42   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Ton traitement est inutilement compliqué :
Code :
1
2
SELECT annee, pays FROM variablefrance 
ORDER BY id_var DESC LIMIT 1
Il est de plus absurde de connecter/reconnecter à la base à chaque requête.

Tu as un $var2 qui n'est pas défini et sur lequel tu utilises stripslashes() inutilement.

de même ici :
Code :
1
2
$_GET['modifier'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier']));
	$num_yt = $_GET['modifier'];
ton htmlspecialchars est au mieux inutile, au pire néfaste ; et pourquoi ne pas écrire ça en une seule étape ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h41.


 
 
 
 
Partenaires

Hébergement Web