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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

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;

Eléphanteau du PHP | 12 Messages

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
Modifié en dernier par noan59 le 05 août 2005, 00:59, modifié 1 fois.
Johann - Newbie PHP

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

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" ;)

Eléphanteau du PHP | 12 Messages

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 ?
Johann - Newbie PHP

Eléphanteau du PHP | 12 Messages

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 ?
Johann - Newbie PHP

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

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 ;)

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

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;
?>

Eléphanteau du PHP | 12 Messages

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 ?
Johann - Newbie PHP

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

05 août 2005, 08:48

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

pense au [Résolu]

Mammouth du PHP | 19672 Messages

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:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

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.