Insérer une valeur NULL dans une liste déroulante...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Insérer une valeur NULL dans une liste déroulante...

par Aurelian » 20 sept. 2006, 00:48

Mon idée était bonne, j'avais bien malgré moi demandé d'insérerm es données deux fois. J'ai testé tout ça sur une nouvelle page html toute progpre et ça marche nickel.

Merci donc pour la ligne de code à rajouter pour la valeur nulle, c'était tout bête en y repensant. Juste une question de logique, quand on y pense. Va falloir que je fasse un peu de gymnastique de matière grise. :)

Je mets mon problème comme résolu. 8)

par Aurelian » 18 sept. 2006, 23:41

Je pense, je dis bien je pense, avoir compris pourquoi le résultat s'affichait deux fois dans la base de données. Le problème vient en fait de l'action d'insérer les données du formulaire dans la base de données, car à force de modifier le formulaire, je me suis pas rendu compte que j'avais copié cette demande d'insertion de données... deux fois.

J'ai plus trop les yeux ouverts là, mais je refais un test demain soir et promis je tiens au courant. Si l'erreur vient bien de là, désolé pour le dernier mail, je suis une cruche (pour la défense le dimanche soir ça me réussit jamais trop ^^).

Quoiqu'il en soit merci pour votre aide. en insérant un

Code : Tout sélectionner

<option value=""> Choix vide </option>
J'ai une valeur NULL qui s'affiche telle quelle dans la base de données. Preuve que la manip est bonne. :wink:

par Truc » 18 sept. 2006, 23:38

Ah ben oui c'est vrai aussi ... je retourne :ordi:
Mais ceci n'explique pas cela... :?

par zeus » 18 sept. 2006, 23:17

Pas forcément.

Quand tu fait

Code : Tout sélectionner

INSERT INTO table champ1, champs2 VALUES ('', 0)
tu spécifies explicitement que tu veux inséré la chaine vide. Il n'y a aucune raison que NULL soit insérer à la place.

Pour que NULL soit insérer dans la base de données, il faut le spécifier explicitement :

Code : Tout sélectionner

INSERT INTO champs1 VALUES (NULL)

par Truc » 18 sept. 2006, 23:04

Que donne le code source généré ?
Et comment récupères tu la valeur de la liste ?

normalement un
<option value=""> Faire choix </option>
inserera un "null" dans la Base de données s'il est sélectionné :-k

par Aurelian » 18 sept. 2006, 00:52

Salut,
Bienvenue à toi... 1ère fessée... pense à utiliser les balises
 pour ton code  :wink: 

Ce n'est pas tellement un souci de progrmmation mais de logique.
Tu construis la liste dynamiquement avec la boucle php = OK
Donc tout ce qui est dans cette boucle est répeté n fois... tu veux qu'il y ait une option ayant comme valeur 'null' (ou vide, rien) il faut donc ajouter cette option dans la liste (début  par exemple  :wink:  ) 

En fin de boucle tu n'as rien d'autre qu'une liste "normale" HTML... tu saurais y ajouter une option dans cette liste... la liste dynamqieu n'est pas plus compliqué.[/quote]

Tout d'abord merci pour ta réponse. ^^

Heureux d'être accueilli sur ce forum avec une fessée...  :lol:  mais les balises php je les avais pas mises? Ouh la c'est que je dois être un peu crevé...

Ajouter l'option dans la liste. C'est ce que j'ai essayé de faire en ajoutant cette ligne:

[php]<option value="null" selected='selected'>(Aucun)</option>
La liste nouvellement programmée donne donc ceci:
<select name="Acteur" class="Style14">
<option value="null" selected='selected'>(Aucun)</option>
<?php 
do {  
?>
<option value="<?php echo $row_Acteurs['IdActeur']?>" ><?php echo $row_Acteurs['Prenom']." ".$row_Acteurs['Nom']?></option>
<?php
} while ($row_Acteurs = mysql_fetch_assoc($Acteurs));
?>
</select>
Actualisation de page. C'est magnifique, j'ai ma petite option "Aucun" qui apparaît, par défaut qui plus est, la vie est belle. Je fais quelques tests, et je regarde ce que ça fait dans la base de données (j'utilise PHP MyAdmin pour voir mes différentes données insérées). Et là c'est le drame, mes nouvelles entrées sont comptées deux fois!

Je pense savoir d'où vient le problème. J'ai deux variables "option value" l'une à la suite de l'autre. Le problème c'est que je sais pas comment les emboîter, de façon à ce qu'il y ait au final un seul et unique enregistrement...

Faut-il nécessairement que j'intègre dans ma base de données acteurs une valeur nulle? Avant de me donner une seconde fessée, je tiens à préciser que c'est la première fois que j'écris du code de programmation depuis mes essais en langage BASIC qui datent de 1992... Donc merci de votre indulgence ^^'

PS: Pour les balises PHP, j'obtiens ceci lorsque j'essaye de les mettre:

/*php Test PHP /php*/
Rectifié petit bug s'il y a un tag
 (sans l'espace) qui n'est pas fermé (ce qui était le cas dans le message cité)[/color]

par Truc » 18 sept. 2006, 00:32

Salut,
Bienvenue à toi... 1ère fessée... pense à utiliser les balises
 pour ton code  :wink: 

Ce n'est pas tellement un souci de progrmmation mais de logique.
Tu construis la liste dynamiquement avec la boucle php = OK
Donc tout ce qui est dans cette boucle est répeté n fois... tu veux qu'il y ait une option ayant comme valeur 'null' (ou vide, rien) il faut donc ajouter cette option dans la liste (début  par exemple  :wink:  ) 

En fin de boucle tu n'as rien d'autre qu'une liste "normale" HTML... tu saurais y ajouter une option dans cette liste... la liste dynamqieu n'est pas plus compliqué.

Insérer une valeur NULL dans une liste déroulante...

par Aurelian » 18 sept. 2006, 00:18

Bonjour à tous,

Me voilà à mon tour en train de me lancer dans l'aventure de la programmation en PHP. Avant de commencer à programmer mon site, j'essaye de concevoir une série de pages HTML me permettant de mettre à jour ma base de données. J'ai déjà réussi à créer une page permettant d'ajouter un enregistrement, c'est donc bien parti. :)

A un moment donné, j'ai une de mes valeurs qui est présente sous forme de liste déroulante. Dans cette liste apparaissent le nom et prénom d'une personne de la table "Acteurs". Pour sélectionner, pas de souci, sauf que j'aimerais pouvoir sélectionner par défaut une ligne "vierge", équivalant au final à une valeur NULL. Tout simplement parce que cette donnée est facultative dans ma table et que dans le formulaire que j'ai créé, eh bien il y a la première donnée sélectionnée par défaut, quoiqu'on fasse.

Quelqu'un peut-il m'aider à résoudre ce petit problème? Merci d'avance. :wink:

Ci-dessous, la liste déroulante telle que je l'ai écrite.

*****
<select name="Acteur" class="Style14">
<?php 
do {  
?>
<option value="<?php echo $row_Acteurs['IdActeur']?>" ><?php echo $row_Acteurs['Prenom']." ".$row_Acteurs['Nom']?></option>
<?php
} while ($row_Acteurs = mysql_fetch_assoc($Acteurs));
?>
</select>
*****