Problème de concaténation de chaine!

bibine125 Messages postés 15 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 12 juillet 2005 - 11 juil. 2005 à 19:14
bibine125 Messages postés 15 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 12 juillet 2005 - 12 juil. 2005 à 11:34
salut à tous !

j'ai problème pour concaténer plusieurs chaine de caractère. en effet
j'aimerai que à chaque fois que je clique sur une option de ma liste
déroulante (elle s'éffectue sur un OnChange d'un formulaire) ,
j'aimerai que cette option soit concaténer dans une chaine , et ainsi
de suite; comme ça je récupère la chaine pour ensuite la traiter plus
loin dans mon code:

voici le code:



<td valign="top" align="left" colspan="3"><?



//la chaine à concaténer , j'ai plusieurs varaible et POST['test'],
mais elle sont dans une //liste déroulante que j'exécute sur un
onchange. je pense que j'ai un problème de boucle.

//à chaque je n'ets qu'une seule valeur de concaténer et pas les anciennes valeurs





$chaineTab .= " / ".$_POST['test'];



//************************************************************************************************

//là je valide l'option que j'ai sélectionnée pour l'afficher



if (isset ($_POST['test']) && !empty ($_POST['test']) && $_POST['test']!='' )

{



$tab=getWord($chaineTab);





if (is_array ($tab))

{




echo'<fieldset><legend>Les
Critères</legend>';

echo'';

echo'Supprimer';

foreach ($tab as $valeur)

echo $valeur;

{CreateLine($valeur);}

echo'
';

echo'</fieldset>

';



}





}



?>

</td>

11 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 juil. 2005 à 08:57
Hello Bibine,



tu as garde les index que j'avais cree pour test lol ?



Ton onchange, encore une fois, il soumet ton formulaire, c'est ca ?

Je ne vois nulle part que tu conserves $chaineTab entre deux
soumissions. Or, quand tu soumets un formulaire, les seules variables
qui survivent sont celles passees en POST (ou GET) dans ce formulaire.
Bref, $chaineTab est remis a zero a chaque soumission. Je crois
que je t'avais montre justement comment conserver $chaineTab (je dis ca
parce que c'est la variable que j'utilise quand je serialise un tableau
ou un objet) : la serialisation, base64_encode() et le passer dans le
formulaire dans un input cache.
0
bibine125 Messages postés 15 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 12 juillet 2005
12 juil. 2005 à 10:09
hi malalam,

j'ai gardé tout les index que tu m'avais crée t'inkiete!



je viens d'essayer ce que tu m'as proposé malalam. le problème c'est
que à chaque fois que je fais un Onchage j'ai la valeur précedente et
non la valeur sélectionnée qui s'affiche. c'est comme si il y avait un
temps de retard (à cause du input caché) , le fichier lit l'ancienne
valeur et la nouvelle valeur est dans le champ caché.lorsque je
sélectionne de nouveau une autre option la valuer précédente
s'affiche.Je voudrai uniquement que lorsque je sélectionne une option
dans ma liste déroulante sur un onchange l'élément sélectonné s'affiche
et non pas le précédent .
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 juil. 2005 à 10:17
Il fait quoi ton onchange, un submit ?
0
bibine125 Messages postés 15 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 12 juillet 2005
12 juil. 2005 à 10:18
oui il fait un submit
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 juil. 2005 à 10:20
Et tu voudrais afficher quoi exactement ? toutes les valeurs selectionnees depuis le debut + la valeur courante ?
Fais voir comment tu fais fonctionner ton code, pas tout le code si c'est long, juste un exemple de onchange, ton inout hidden, comment tu traites les deux et ce que tu affiches.
0
bibine125 Messages postés 15 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 12 juillet 2005
12 juil. 2005 à 10:32
ok

le premier code ou je sélectionne l'option dans le select avec un onchange:





<script language= "JavaScript"><!--

function tester(champ) {

if(champ.selectedIndex>0)

form2.submit()

}

//--></script>



<fieldset><legend>Criteres</legend>



<FORM method="post" name="form2" >

<select name="test" onchange="tester(this)">

<option value=" ">Aucun</option>

<? $i=0;

while(mysql_field_name($result_chp,$i))

{

//affichage des champs

echo'<option';

for($k=0;$k<count($_POST["test"]);$k++)

{

if(mysql_field_name($result_chp,$i)== $_POST["test"][$k])

{

echo "SELECTED";

break;

}

}

echo'>'.mysql_field_name($result_chp,$i).'</option>';

$i++;

}?>

</select>

<? echo $chaineTab;?>">

</form>


</fieldset>






ensuite le code ou je traite(page virgo.php):

<td valign ="top" align="left" colspan="3">

<?

$chaineTab='';

//là je valide l'option que j'ai sélectionnée pour l'afficher

if (isset ($_POST['test']) && !empty ($_POST['test']))

{

if (isset ($_POST['tab']) && !empty ($_POST['tab']))

{



$tab = unserialize (base64_decode ($_POST['tab']));

if (is_array ($tab))

{




echo'<fieldset><legend>Les
Critères</legend>';

echo'';

echo'Supprimer';

foreach ($tab as $valeur)

{CreateLine($valeur);}//fonction qui affiche la ligne avec : nom de l'option,liste déroulante d'opérateur,chp texte

echo'
';

echo'</fieldset>

';



}



}

$tab[] = $_POST['test'];

$chaineTab = base64_encode (serialize ($tab));

}



?>

</td>



</tr>





</table>

</form>

<? include("vierge.php");?>,
0
bibine125 Messages postés 15 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 12 juillet 2005
12 juil. 2005 à 10:33
j'oubliai la page vierge.php est en haut et virgo.php est la pge de traitement
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 juil. 2005 à 10:46
Ok mais il est ou le probleme de concatenation, la-dedans, tu places le 1er code que tu as mis ou, dans tout ca ?
0
bibine125 Messages postés 15 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 12 juillet 2005
12 juil. 2005 à 11:02
j'éxécute d'abord le premier code en haut (de ce ke j'ai envoyé, en
fait le premier formulaire) et ensuite le résultat de ce
formulaire est traité dans le deuxième en bas. j'ai repris le
code que tu ma donné avec la sérialisation des tableaux. Au départ
j'avais crée une fonction qu récupère une chaine de caractère
concaténée et qui renvoie un tableau de valeur : ex je clique sur
username, chainetab='username', je clique sur radacctId, chaine tab
='username','radacctId'; etc... et après je récupère cette chaine et je
la passe dans la fonction qui s'appele getword($chainetab) et la elle
me renvoie un tableau contenant
$wordarray(1=>'username',2=>'radacctId') etc.. voila ensuite je
lis ce tableau dans le code de la page virgo.php au niveau de foreach ($tab as $valeur) {CreateLine($valeur);}.

voila mon problème c'est une solution au problème
de retard dans le onchange avec le input cache mais mon problème c'est
que je ne sais pas comment faire pour concaténer dans chainetab
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 juil. 2005 à 11:22
Je ne sais pas ou tu affiches tes trucs, mais celui qui est a jour, c'est $tab. Tu peux l'afficher lui et tu auras tout, sans retard. La derniere entree est le dernier post effectue.
0
bibine125 Messages postés 15 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 12 juillet 2005
12 juil. 2005 à 11:34
c'est $tab que j'affiche quand je fais foreach ($tab as $valeur) {CreateLine($valeur);}.mais la il y a tjs un retard car $tab est vide au départ; CreateLine($valeur) est l'endroit ou j'affiche la nouvelle ligne
0