Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 02/07/2007, 20h17   #1
Invité de passage
 
Inscription : juin 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 13
Points : 2
Points : 2
Par défaut [SQL] Conditions dans une requête SQL

J'ai un petit souci, car je crée un système de profils et lors de la modifiaction d'un profil, je pensais mettre ce bout de code, mais hélas, il ne fonctionne pas comme je l'avais prévu.
Le problème est que je ne pense pas que l'on puisse insérer des conditions dans une requète SQL.

Pourriez-vous jetter un oeil à mon script et me donner une solution ou une alternative à mon problème.

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
$modif_nom = mysql_real_escape_string(htmlentities($_POST['nom'], ENT_QUOTES));
$modif_prenom = mysql_real_escape_string(htmlentities($_POST['prenom'], ENT_QUOTES));
$modif_localisation = mysql_real_escape_string(htmlentities($_POST['localisation'], ENT_QUOTES));
$modif_hobbies = mysql_real_escape_string(htmlentities($_POST['hobbies'], ENT_QUOTES));
 
$sql_update_profil = "UPDATE profils SET ".
if($modif_nom != NULL)
{
        echo " nom='".$modif_nom."'";
}
if($modif_prenom != NULL)
{
	echo " prenom='".$modif_prenom."'";
}
if($modif_localisation != NULL)
{
	echo " localisation='".$modif_localisation."'";
}
if($modif_hobbies != NULL)
{
	echo " hobbys='".$modif_hobbies."'";
}
." WHERE login='".$login."'";
mysql_query($sql_update_profil);
Merci d'avance
Cordialement, NeO666Linux
NeO666Linux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2007, 21h03   #2
Membre Expert
 
Avatar de guigui5931
 
guillaume defrain
Inscription : avril 2006
Messages : 1 667
Détails du profil
Informations personnelles :
Nom : guillaume defrain
Âge : 25
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : avril 2006
Messages : 1 667
Points : 2 099
Points : 2 099
Hou à c'est bizard ce que tu as écris tu commence par mettre ta requete dans une variable et tu fais des affichages en même temps...
TU devrais tout concaténer dans ta variable $sql_update_profil
__________________
autant l'hiver éclate que l'hétéroclite
le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre
guigui5931 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2007, 21h13   #3
Invité de passage
 
Inscription : juin 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 13
Points : 2
Points : 2
Merci pour ta réponse mais, le problème que j'ai rencontré est que si les champs nom, prenom, ... sont vides, la requète sql plante.
Donc j'ai voulu faire des conditions qui si la variable contient quelque chose, elle affiche le champs a modifier (champ='$variable').

Mais bon, pour tout vous dire, là je suis un peu perdu.

Merci d'avance
NeO666Linux
NeO666Linux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2007, 21h24   #4
Membre Expert
 
Avatar de guigui5931
 
guillaume defrain
Inscription : avril 2006
Messages : 1 667
Détails du profil
Informations personnelles :
Nom : guillaume defrain
Âge : 25
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : avril 2006
Messages : 1 667
Points : 2 099
Points : 2 099
Je pense qu'un truc comme ça doit marcher
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
 
$modif_nom = mysql_real_escape_string(htmlentities($_POST['nom'], ENT_QUOTES));
$modif_prenom = mysql_real_escape_string(htmlentities($_POST['prenom'], ENT_QUOTES));
$modif_localisation = mysql_real_escape_string(htmlentities($_POST['localisation'], ENT_QUOTES));
$modif_hobbies = mysql_real_escape_string(htmlentities($_POST['hobbies'], ENT_QUOTES));
 
$condition=false;				
$sql_update_profil = "UPDATE profils SET  ";
if($modif_nom != NULL)
{
        $sql_update_profil .=" nom='".$modif_nom."',";
        $condition=true;
}
if($modif_prenom != NULL)
{
	$sql_update_profil .=" prenom='".$modif_prenom."';";
        $condition=true;
}
if($modif_localisation != NULL)
{
	$sql_update_profil .=" localisation='".$modif_localisation."';";
        $condition=true;
}
if($modif_hobbies != NULL)
{
	$sql_update_profil .=" hobbys='".$modif_hobbies."';";
        $condition=true;
}
 
if ($condition==true)
{
$sql_update_profil=substr($sql_update_profil,0,strlen($sql_update_profil)-2);//pour enlever la dernière virgule
$sql_update_profil .=" WHERE login='".$login."'";
mysql_query($sql_update_profil);
}
__________________
autant l'hiver éclate que l'hétéroclite
le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre
guigui5931 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2007, 22h35   #5
Invité de passage
 
Inscription : juin 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 13
Points : 2
Points : 2
Oui ! Merci beaucoup, ça fonctionne parfaitement !
Merci pour ton aide en tout cas.

A bientôt
NeO666Linux
NeO666Linux 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 21h04.


 
 
 
 
Partenaires

Hébergement Web