Menu déroulant à choix multiple: comment faire une variable

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 : Menu déroulant à choix multiple: comment faire une variable

par ouckileou » 05 août 2005, 09:41

non pas de danger O:)
Je n'ai jamais rencontré d'homme si ignorant qu'il n'eut quelque chose à m'apprendre.

Re: MERCI BEAUCOUP

par Cyrano » 05 août 2005, 08:52

Whaou j'avais compris ça ! Mais tu l'expliques bien mieux ;)
Arrête ça, ouckileou va nous faire un gonflage de chevilles, il sera plus tenable après :langue:

par ouckileou » 05 août 2005, 08:48

j'étais déjà parti :lol:

pense au [Résolu]

MERCI BEAUCOUP

par noan59 » 05 août 2005, 01:25

Whaou j'avais compris ça ! Mais tu l'expliques bien mieux ;)

Voici donc le code final pour mon problème initial :
<?php 
// vérifions que la variable a été transmise 
$tabLangages = (isset($_POST['entreprise']))?$_POST['entreprise']:null; 
$total = '';  // initialisation de la variable

// bouclons sur le tableau qui a été transmis et affichons les valeurs sélectionnées 
if (!empty($tabLangages)) { 
    foreach($tabLangages as $cle=> $valeur) { 
		$total .= $valeur . '/'; 
    } 
} 
?> 
Donc désormais on a une variable $total qui contient toutes les réponses, séparées par un /

Merci beaucoup et bonne nuit ?

par ouckileou » 05 août 2005, 01:18

Je recommente, tes commentaires sont parfois un peu ambigus je voudrais être sûr que tu as compris
<?php
$tabLangages = (isset($_POST['entreprise']))?$_POST['entreprise']:null; // si la variable $_POST['entreprise'] existe, donc uniquement si le formulaire a bien été posté, on met sa valeur dans la variable $tabLangages, sinon on met "null" par défaut
$total = '';  
echo "Voici les langages que vous avez choisi :<br>";

if (!empty($tabLangages)) {  // G compris ça : si la var n'est pas vide alors --> Oui (null est considéré comme vide)
    foreach($tabLangages as $cle => $valeur) {  // on parcourt le tableau, et le contenu de la cellule courante est mis dans la variable $valeur
// $cle récupère elle la valeur de l'indice (0,1,2,3...etc), on ne s'en sert pas ici
        $total .= $valeur;  // le point permet de concaténer, c'est à dire de rajouter le contenu de $valeur au contenu déjà dans $total
    }
}
echo $total;
?>

Re: BINGO !

par ouckileou » 05 août 2005, 01:13

A quoi ça sert d'initialiser : on lui dit que la variable ne contient q du vide ok, mais prquoi ?[/quote]

pour l'intialiser justement ;)

dans la plupart des langages, tu devrais la déclarer.
C'est à dire : donner un nom à la variable, lui donner un type (entier, chaine de caractères, et lui donner une valeur de départ)

En PHP pas de déclaration, les variables sont non typées donc on met ce qu'on veut.
L'erreur que tu as eu est une Notice. C'est à dire une remarque, que tu peux choisir de masquer, et avec laquelle ton script fonctionnera quand même.
C'est dans la doc : PHP a rencontré un événement qui peut être un problème, mais peut aussi être normal dans le script. Donc il te le dit mais ne plante pas tout.

Problème : faire un test "if" avec une variable non initialisée
Evénement normal : une concaténation comme tu fais, la première fois cela revient à l'initialiser

Mais c'est mieux de le faire plus proprement, pour ne pas avoir cette notice, à la manière d'autres langages

Dès que tu as une interrogation => www.php.net
la doc officielle y'a rien de mieux pour trouver des réponses

après s'il y a des choses que tu ne comprends pas, tu peux venir ici ;)

Moi ce que j'avais compris :

par noan59 » 05 août 2005, 01:11

<?php 

$tabLangages = (isset($_POST['entreprise']))?$_POST['entreprise']:null; 
$total = '';  // La j'ai compris que l'on créé une var tablangages si elle existe (si elle a bien été importée quoi
echo "Voici les langages que vous avez choisi :<br>"; 

if (!empty($tabLangages)) {  // G compris ça : si la var n'est pas vide alors
    foreach($tabLangages as $cle => $valeur) {  // Je fait un passage en revue du tablo et je donne à chaque ligne une variable valeur 
		$total .= $valeur;  // la variable total concatène toutes les valeurs et le point permet de toutconcaténer puique q c une boucle
    } 
} 
echo $total;
?> 
C'est ça en gros ?

BINGO !

par noan59 » 05 août 2005, 01:03

Voici les langages que vous avez choisi :
0 : entreprise2
1 : entreprise4
entreprise2entreprise4

C'est génial, il ne me reste + qu'a enregistrer cette variable ds ma base SQL ! Super sympa !!!!

Mais j'aimerai trop comprendre mes erreurs pour progresser :

A quoi ça sert d'initialiser : on lui dit que la variable ne contient q du vide ok, mais prquoi ?

par ouckileou » 05 août 2005, 00:59

initialise $total avant de l'utiliser (avant la boucle)
$total = '';
sois plus attentif aux messages d'erreur, il y a la cause de l'erreur dedans, et les 3/4 du temps elle est simple.
ici : "variable indéfinie" ;)

Ouah ça vient bon !!

par noan59 » 05 août 2005, 00:58

Voici le retour :

Voici les langages que vous avez choisi :
0 : entreprise2

Notice: Undefined variable: total in c:\documents and settings\noakin\mes documents\tests_php\test_effacement\script.php on line 10
1 : entreprise4
entreprise2entreprise4 <== Ca c'est bon signe !!!

par contre je cprds pas le undefinevariable je vérifie mais je vois pas ce qui manque

par ouckileou » 05 août 2005, 00:51

"parse error" viet peut-être du fait que le point est collé à $total

le point sert effectivement pour la concaténation, mais c'est bien ce qu'on fait là

ces deux lignes représente EXACTEMENT la même opération :
$total .= $valeur;
$total = $total.$valeur;

j'essaie

par noan59 » 05 août 2005, 00:47

En fait c'est un

--> Parse error: parse error in c:\documents and settings\noakin\mes documents\tests_php\test_effacement\script.php on line 10

En ligne 10 c'est donc q g du mal nommer ma variable : pour moi le point c'est uniquement pour concatener, j'ai tord ? Est ce que je dois pas faire une manip du style je créé une variable par ligne de tableau (par réponse, quoi) avec un truc du style "++"

J'en suis là :
<?php 
// vérifions que la variable a été transmise 
$tabLangages = (isset($_POST['entreprise']))?$_POST['entreprise']:null; 

echo "Voici les langages que vous avez choisi :<br>"; 
// bouclons sur le tableau qui a été transmis et affichons les valeurs sélectionnées 
if (!empty($tabLangages)) { 
    foreach($tabLangages as $cle => $valeur) { 
        echo $cle.' : '.$valeur.'<br>'; 
		$total. = $valeur; 
    } 
} 
echo $total;
?> 

par ouckileou » 05 août 2005, 00:38

oui, j'avais bien compris que tu parlais de ton code comme un code nul, et si je te disais d'essayer c'est que ce n'était pas si "mongol"

sans ironie aucune

puisque le point que tu as enlevé était justement ce qui permettait de concaténer toutes les valeurs dans $total

cela mettait une erreur, mais surement pas à cause de ça

donc réessaye, regarde $total à la fin
et relis l'erreur pour voir d'où elle provient

au fait

par noan59 » 05 août 2005, 00:34

PS : j'ai retiré le . du $total. (ça me semblait une erreur de frappe, non ?) sinon ça me mettait une erreur

OK

par noan59 » 05 août 2005, 00:33

On est d'accord, je dis bien que c moi le mongol... ? Parce q je trouve ça cool de m'aider là dessus...

J'en suis là :
<?php 
// vérifions que la variable a été transmise 
$tabLangages = (isset($_POST['entreprise']))?$_POST['entreprise']:null; 

echo "Voici les langages que vous avez choisi :<br>"; 
// bouclons sur le tableau qui a été transmis et affichons les valeurs sélectionnées 
if (!empty($tabLangages)) { 
    foreach($tabLangages as $cle => $valeur) { 
        echo $cle.' : '.$valeur.'<br>'; 
		$total= $valeur; 
    } 
} 
echo $total;
?> 
Et oh bonheur ça m'affiche ça :

Voici les langages que vous avez choisi :
0 : entreprise1
1 : entreprise2
2 : entreprise3
3 : entreprise4
entreprise4

Je comprends un peu mieux mais je suis tjrs incapable de le résoudre.