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 :

[SQL] Conditions dans une requête SQL


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 7
    Points
    7
    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 : 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
    $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

  2. #2
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    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

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    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

  4. #4
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Je pense qu'un truc comme ça doit marcher
    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
     
    $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

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Oui ! Merci beaucoup, ça fonctionne parfaitement !
    Merci pour ton aide en tout cas.

    A bientôt
    NeO666Linux

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

Discussions similaires

  1. [AC-2010] mettre une condition sur une chaine de caractères dans une requête sql
    Par freeman3869 dans le forum VBA Access
    Réponses: 1
    Dernier message: 05/06/2015, 11h45
  2. Réponses: 1
    Dernier message: 30/03/2012, 12h56
  3. Réponses: 1
    Dernier message: 24/06/2010, 18h31
  4. Nom de champ variable dans une requête SQL
    Par stip dans le forum ASP
    Réponses: 2
    Dernier message: 30/09/2004, 18h02
  5. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38

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