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 :

Remplacer une chaîne vide par NULL


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut Remplacer une chaîne vide par NULL
    Bonjour,
    débutant en PHP, j'ai quelques difficultés sur ce point :
    j'ai créé un formulaire avec différents champs à saisir (tous ne sont pas obligatoires). Les données rentrées sont insérées dans une base de données.
    Je voudrais que les champs vides soient remplacés par un NULL dans le SQL,
    car je souhaite afficher les données sur une page et ça me fait des espaces vides.
    Si quelqu'un peut me donner un coup de main...


    Voici le 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    if (isset($_POST['envoyer'])) {
    	 // déclaration des variables en fonction des champs
    	 $nom = addslashes($_POST['nom']);
    	 $info = $_POST['info'];
    	 $adresse = $_POST['adresse'];
    	 $adresse2 = $_POST['adresse2'];
    	 $cp = $_POST['cp'];
    	 $ville = $_POST['ville'];
    	 $tel = $_POST['tel'];
    	 $fax = $_POST['fax'];
    	 $gsm = $_POST['gsm'];
    	 $categorie = $_POST['categorie'];
    	 $requete = "SELECT DISTINCT categorie.id_categorie FROM categorie, partenaire WHERE categorie.id_categorie = partenaire.id_categorie AND nom_categorie='$categorie'";
    	 $resultat = mysql_query($requete);
    	 while ($ligne = mysql_fetch_array($resultat)) {
    	 $categorie = $ligne[0]; // récupère le num de la catégorie dans la variable à la place du nom
    	 }
    	 if(empty($_POST["info"])) { $info = NULL; } // ça ne marche pas
    if(empty($_POST["gsml"])) { $gsm = NULL; } // idem
    	 // déclaration de la requête
    	 $requete = "INSERT INTO partenaire (
    	 nom_partenaire, 
    	 info_sup_partenaire, 
    	 adresse_partenaire, 
    	 adresse2_partenaire, 
    	 cp_partenaire, 
    	 ville_partenaire,
    	 tel_partenaire,
    	 fax_partenaire,
    	 gsm_partenaire,
    	 id_categorie) 
    	 VALUES (
    	 '$nom', 
    	 '$info', 
    	 '$adresse', 
    	 '$adresse2', 
    	 '$cp', 
    	 '$ville',
    	 '$tel',
    	 '$fax',
    	 '$gsm',
    	 $categorie)";
     
    	// enregistrement du résultat de la requete dans une variable
    	$resultat = mysql_query ($requete);

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Les besoins de presentations ne doivent pas influencer la structure de tes données.
    De toute façon, que tu aies une chaine vide ou un NULL dans ta table, tu obtiendras une chaine vide quand tu voudras l'afficher en PHP.
    C'est à l'affichage que tu dois tester ta valeur et la substituer si besoin.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Voici une solution pour conserver les valeurs NULL quald l'utilisateur ne remplit pas un champ dans un formulaire !
    Les champs non obligatoires ont par valeur par défaut dans MySQL "NULL".

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
     // déclaration de la requête
    	$base="INSERT INTO partenaire";
    	$cols="";
    	 $vals="";
     
    	 $cols .= "nom_partenaire";
    	$vals .= "'" . $nom  . "'";
     
    	 if ($info != '') {
    		$cols .= ", info_sup_partenaire";
    		$vals .= ",'" . $info ."'";	
    	}
     
    	 if ($adresse != '') {
    		$cols .= ", adresse_partenaire";
    		$vals .= ",'" . $adresse ."'";	
    	}
     
    	 if ($adresse2 != '') {
    		$cols .= ", adresse2_partenaire";
    		$vals .= ",'" . $adresse2 ."'";	
    	}
     
    	if ($cp != '') {
    		$cols .= ", cp_partenaire";
    		$vals .= ",'" . $cp ."'";	
    	}
     
    	if ($ville != '') {
    		$cols .= ", ville_partenaire";
    		$vals .= ",'" . $ville ."'";	
    	}
     
    	if ($tel != '') {
    		$cols .= ", tel_partenaire";
    		$vals .= ",'" . $tel ."'";	
    	}
     
    	if ($fax != '') {
    		$cols .= ", fax_partenaire";
    		$vals .= ",'" . $fax ."'";	
    	}
     
    	if ($gsm != '') {
    		$cols .= ", gsm_partenaire";
    		$vals .= ",'" . $gsm ."'";	
    	}
     
    	if ($email != '') {
    		$cols .= ", email_partenaire";
    		$vals .= ",'" . $email ."'";	
    	}
     
    	if ($logo2 != '') {
    		$cols .= ", logo_partenaire";
    		$vals .= ",'" . $logo2 ."'";	
    	}
     
    	if ($web != '') {
    		$cols .= ", web_partenaire";
    		$vals .= ",'" . $web ."'";	
    	}
     
    	$cols .= ", id_categorie";
    	$vals .= ",'" . $categorie ."'";
     
    	$requete = $base . "(" . $cols .") VALUES (" . $vals . ")";

Discussions similaires

  1. Meilleur moyen de remplacer une chaine vide par null
    Par ToniConti dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 02/09/2013, 10h11
  2. [AC-2000] Remplacer une donnée vide par "0"
    Par jeanphiaix dans le forum Access
    Réponses: 9
    Dernier message: 04/02/2013, 21h08
  3. Comment remplacer une case vide par un zero
    Par medibasm dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 10/01/2013, 22h47
  4. Réponses: 5
    Dernier message: 13/12/2006, 16h08
  5. [INSERT / UPDATE] Remplacer une valeur vide par NULL
    Par jissay dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 28/09/2006, 14h15

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