Aller au contenu

Insérer le résultat d'une boucle for dans une variable


Sujets conseillés

Posté

Bonjour,

je suis actuellement entrain de créer un formulaire de création dynamique de CV en XML, mais je rencontre un soucis sur lequel je bloque depuis maintenant 1 semaine.

J'ai tout d'abord mon formulaire dans lequel la personne va renseigner ses informations. Arrivé au moment de rentrer ses diplômes obtenus par exemple, la personne choisi tout d'abord le nombre de diplômes qu'elle a obtenu grâce à un SELECT rendu dynamique en le combinant avec du javascript. Ce qui fait que si la personne choisi 2, il y aura 2 champs de saisie d'information concernant le diplôme qui apparaitront et ainsi de suite.

Une fois que la personne aura renseigné toutes ses informations, elle va valider le formulaire qui va donc traiter les informations. C'est là que je vais commencer à bloquer un peu.

Les variables simples pas de problème je les récupères et j'arrive à les insérer sans aucun soucis.

Mais quand j'essaie de récupérer les variables dynamique, c'est à dire celles qui sont en rapport avec le nombre de diplômes rensiegnés, c'est un peu plus compliqué.

Dans la partie diplômes, je demande de renseigner l'année d'obtention, l'intitulé du diplôme ainsi que la ville d'obtention.

Dans mon formulaire, le nom des input était dynamique de façon à avoir anneeObtDiplome1, intituleDiplome1 villeObtention1, anneeObtDiplome2, intituleDiplome2 villeObtention2 si la personne à choisi de renseigner 2 diplômes.

Pour les récuperer comme ça j'ai fait une boucle FOR qui démarre donc à 0 et qui va jusqu'au nombre de diplômes choisis où l'on récupèrera les noms de variables dynamiques.

voila le code la partie en question pour récuperer

CODE
for ($i=0; $i<=$nb_diplome; $i++)

{

$anneeobtention = $_POST["anneeObtDiplome$i"];

$intitulediplome = $_POST["intituleDiplome$i"];

$villeobtention = $_POST["villeObtention$i"];

$diplome = "<diplome>

<annee_obtention>$anneeobtention</annee_obtention>

<intitule_diplome>$intitulediplome</intitule_diplome>

<ville_obtention>$villeobtention</ville_obtention>

</diplome>";

echo $diplome;

}

J'ai mis les echo afin de savoir si il les récupère bien et c'est le cas, les données sont bien récupérés.

Par contre une fois que tout est récupéré, je crée une varibale PHP qui va contenir tout le code de mon XML et dans lequel je vais y insérer toutes les données recueillis. Par contre c'est à ce niveau que je pêche car je ne sais pas comment réussir à intégrer dynamiquement toutes les données des diplômes.

Dans mon XML j'ai donc la balise générale qui va contenir tous les diplômes et il faut donc que si j'ai renseigné 2 diplômes, qu'il y ai 2 balises de diplômes qui se crées. Je m'explique : j'ai ma balise XML générale

<diplomes>

</diplomes>

Si j'ai renseigné 2 diplômes il faudra que j'ai

<diplomes>

<diplome>

<annee_obtention>2005</annee_obtention>

<intitule_diplome>Baccalauréat</intitule_diplome>

<ville_obtention>Sarreguemines</ville_obtention>

</diplome>

<diplome>

<annee_obtention>2007</annee_obtention>

<intitule_diplome>DUT SRC</intitule_diplome>

<ville_obtention>Haguenau</ville_obtention>

</diplome>

</diplomes>

et là j'ai des difficultés à trouver comment rentrer dynamiquement tout ça. En fait je pense qu'il faudra faire une autre boucle FOR qu'il faudrait ajouter, mais je ne sais pas comment insérer une boucle FOR dans une variable.

Mes explications sont peut être un peu confuses et je m'en excuse, je vais vous montrer le code qui parlera surement mieux.

Le formulaire !!

CODE
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script language="javascript" type="text/javascript">

function affiche_text_reponse(formulairecv) {

var Obj = document.getElementById( 'D_INPUT'); // Recup du DIV

var Html = ""; // le nouveau contenu

var nb_rep = eval(formulairecv.nb_diplome.value);

for (i=1; i<=nb_rep; i++) {

Html += "<br/><br/><fieldset><legend>Information Diplome"+i+"</legend><table><tbody><tr><td>Année dobtention:</td><td><input name='anneeObtDiplome"+i+"' size='20' type='text'></td></tr><tr><td><br></td></tr><tr><td>Intitulé du diplôme:</td><td><input name='intituleDiplome"+i+"' size='20' type='text'></td></tr><tr><td>Ville d'obtention:</td><td><input name='villeObtention"+i+"' size='20' type='text'></td></tr></tbody></table></fieldset><br/>";}

Obj.innerHTML = Html; // ecriture dans le DIV

}

</script>

<script language="javascript" type="text/javascript">

function affiche_languep(formulairecv) {

var Obj = document.getElementById( 'languep1'); // Recup du DIV

var Html2 = ""; // le nouveau contenu

var languep2 = eval(formulairecv.languep.value);

for (i=1; i<=languep2; i++) {

Html2 += "<br/><br/><table><tbody><tr><td>Langue parlée "+i+" : </td><td><input name='langue_parlee"+i+"' size='20' type='text'></td></tr></tbody></table><br/>";}

Obj.innerHTML = Html2; // ecriture dans le DIV

}

</script>

<script language="javascript" type="text/javascript">

function affiche_languee(formulairecv) {

var Obj = document.getElementById( 'languee1'); // Recup du DIV

var Html3 = ""; // le nouveau contenu

var languee = eval(formulairecv.languee.value);

for (i=1; i<=languee; i++) {

Html3 += "<br/><br/><table><tbody><tr><td>Langue écrite "+i+" : </td><td><input name='langue_ecrite"+i+"' size='20' type='text'></td></tr></tbody></table><br/>";}

Obj.innerHTML = Html3; // ecriture dans le DIV

}

</script>

<script language="javascript" type="text/javascript">

function affiche_languel(formulairecv) {

var Obj = document.getElementById( 'languel1'); // Recup du DIV

var Html4 = ""; // le nouveau contenu

var languel = eval(formulairecv.languel.value);

for (i=1; i<=languel; i++) {

Html4 += "<br/><br/><table><tbody><tr><td>Langue lue "+i+" : </td><td><input name='langue_lue"+i+"' size='20' type='text'></td></tr></tbody></table><br/>";}

Obj.innerHTML = Html4; // ecriture dans le DIV

}

</script>

</head>

<body>

<div>

<p style="color: rgb(255, 0, 0);" align="center">

<u>

FORMULAIRE DE CREATION DE CV

</u>

</p>

<form name="FormulaireCV" method="post" action="gen_xml.php5" target="_blank" onsubmit='return window.confirm("Ces informations seront envoyées vers une page externe. \nVoulez-vous continuer ?");'>

<fieldset>

<legend>Donnée personnelle</legend>

<br>

<table border="0">

<tbody><tr>

<td>

<label>

Intitulé du Poste Recherché:

</label>

</td>

<td>

<input name="titreCV" size="20" type="text">

</td>

</tr>

<tr><td><br></td></tr>

<tr>

<td>

<label>

Civilité :

</label>

</td>

<td>

<input name="sivilite" size="20" value="M" checked="checked" type="radio">M

<input name="sivilite" size="20" value="Mme" type="radio">Mme

<input name="sivilite" size="20" value="Mlle" type="radio">Mlle

</td>

</tr>

<tr><td><br></td></tr>

<tr>

<td>

<label>

Nom :

</label>

</td>

<td>

<input name="nom" size="20" type="text">

</td>

</tr>

<tr><td><br></td></tr>

<tr>

<td>

<label>

Prénom :

</label>

</td>

<td>

<input name="prenom" size="20" type="text">

</td>

</tr>

<tr><td><br></td></tr>

<tr>

<td>

<label>

Age:

</label>

</td>

<td>

<input name="age" size="20" type="text">

</td>

</tr>

<tr><td><br></td></tr>

<tr>

<td>

N° de rue:

</td>

<td>

<input name="numRue" size="20" type="text">

</td>

</tr><tr>

</tr><tr><td><br></td></tr>

<tr>

<td>

Rue:

</td>

<td>

<input name="rue" size="20" type="text">

</td>

</tr>

<tr><td><br></td></tr>

<tr>

<td>

<label>

Ville :

</label>

</td>

<td>

<input name="vile" size="20" type="text">

</td>

</tr>

<tr><td><br></td></tr>

<tr>

<td>

<label>

Code Postal:

</label>

</td>

<td>

<input name="cp" size="20" type="text">

</td>

</tr>

<tr><td><br></td></tr>

<tr>

<td>

<label>

Pays :

</label>

</td>

<td>

<input name="pays" size="20" type="text">

</td>

</tr>

<tr><td><br></td></tr>

<tr>

<td>

<label>

Téléphone :

</label>

</td>

<td>

<input name="tel" size="20" type="text">

</td>

</tr>

<tr><td><br></td></tr>

<tr>

<td>

<label>

E-mail :

</label>

</td>

<td>

<input name="mail" size="20" type="text">

</td>

</tr>

<tr><td><br></td></tr>

<tr>

<td>

<label>

Site Web :

</label>

</td>

<td>

<input name="web" size="20" type="text">

</td>

</tr>

</tbody></table>

</fieldset>

<br>

<fieldset>

<legend>

Diplome:

</legend>

<fieldset>

<legend>Nombre de diplômes obtenus</legend>

<select id="nb_diplome" name="nb_diplome" onChange="affiche_text_reponse(form)">

<?php

for ($i=0; $i<=5; $i++)

{

echo"<option id='$i' value='$i'>$i</option>";

}

?>

</select>

</fieldset>

<div id="D_INPUT" name="D_INPUT"></div>

</fieldset>

<br>

<fieldset>

<legend>

Savoir faire:

</legend>

<fieldset>

<legend>Nombre langues parlées</legend>

<select id="languep" name="languep" onChange="affiche_languep(form)">

<?php

for ($i=0; $i<=5; $i++)

{

echo"<option id='$i' value='$i'>$i</option>";

}

?>

</select>

<div id="languep1" name="languep1"></div>

</fieldset>

<fieldset>

<legend>Nombre langues écrites</legend>

<select id="languee" name="languee" onChange="affiche_languee(form)">

<?php

for ($i=0; $i<=5; $i++)

{

echo"<option id='$i' value='$i'>$i</option>";

}

?>

</select>

<div id="languee1" name="languee1"></div>

</fieldset>

<fieldset>

<legend>Nombre langues lues</legend>

<select id="languel" name="languel" onChange="affiche_languel(form)">

<?php

for ($i=0; $i<=5; $i++)

{

echo"<option id='$i' value='$i'>$i</option>";

}

?>

</select>

<div id="languel1" name="languel1"></div>

</fieldset>

</fieldset>

<br>

<fieldset>

<legend>

Expériences Professionnelles:

</legend>

<table>

<tbody><tr>

<td>

Nom entreprise:

</td>

<td>

<input name="nomEntrep" size="20" type="text">

</td>

</tr>

<tr><td><br></td></tr>

<tr>

<td>

Date de début:

</td>

<td>

<input name="dateDeb" size="20" type="text"> (mm/aaaa)

</td>

</tr>

<tr><td><br></td></tr>

<tr>

<td>

Date de fin:

</td>

<td>

<input name="dateFin" size="20" type="text"> (mm/aaaa)

</td>

</tr>

<tr><td><br></td></tr>

<tr>

<td>

Ville:

</td>

<td>

<input name="villeEntrep" size="20" type="text">

</td>

</tr>

<tr><td><br></td></tr>

<tr>

<td>

Description:

</td>

<td>

<textarea rows="10" cols="50"> </textarea>

</td>

</tr>

</tbody></table>

</fieldset>

<br>

<fieldset>

<legend>

Travaux réalisés:

</legend>

<table>

<tbody><tr>

<td>

Titre:

</td>

<td>

<input name="nomEntrep" size="20" type="text">

</td>

</tr>

<tr><td><br></td></tr>

<tr>

<td>

Année de la réalisation:

</td>

<td>

<input name="dateDeb" size="20" type="text">

</td>

</tr>

<tr><td><br></td></tr>

<tr>

<td>

Description:

</td>

<td>

<textarea rows="10" cols="50"> </textarea>

</td>

</tr>

</tbody></table>

</fieldset>

<br>

<fieldset>

<legend>

Divers:

</legend>

<table>

<tbody><tr>

<td>

Nom:

</td>

<td>

<input name="nomEntrep" size="20" type="text">

</td>

</tr>

<tr><td><br></td></tr>

<tr>

<td>

Description:

</td>

<td>

<textarea rows="5" cols="30"> </textarea>

</td>

</tr>

</tbody></table>

</fieldset>

<br/><br/><br/>

<fieldset style="text-align:center">

<legend>Envoyer votre CV</legend>

<input type="submit" value="Valider votre CV" />

<input type="reset" value="Annuler la saisie" />

</fieldset>

</form>

</div>

</body>

</html>

Le code qui va générer mon XML

CODE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns=&quot;http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Document sans titre</title>

</head>

<body>

<?php

$title = $_POST["titreCV"];

$civilite = $_POST["civilite"];

$nom = $_POST["nom"];

$prenom = $_POST["prenom"];

$age = $_POST["age"];

$numRue = $_POST["numRue"];

$rue = $_POST["rue"];

$ville = $_POST["ville"];

$cp = $_POST["cp"];

$pays = $_POST["pays"];

$tel = $_POST["tel"];

$mail = $_POST["mail"];

$web = $_POST["web"];

$nb_diplome = $_POST["nb_diplome"];

$r = 0;

for ($i=0; $i<=$nb_diplome; $i++)

{

$anneeobtention = $_POST["anneeObtDiplome$i"];

$intitulediplome = $_POST["intituleDiplome$i"];

$villeobtention = $_POST["villeObtention$i"];

$diplome = "<diplome>

<annee_obtention>$anneeobtention</annee_obtention>

<intitule_diplome>$intitulediplome</intitule_diplome>

<ville_obtention>$villeobtention</ville_obtention>

</diplome>";

echo $diplome;

}

$vide = "";

/*if ( $title == $vide or $link == $vide or $date == $vide){

Echo "<b>Veuillez remplire toute les information demander</b><br><br>

<a href=\"form.php\">Retour</a>";

} else {

Echo "$title <br> $link <br> $date";*/

$monxml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>

<cvs>

<cv>

<titre_cv>$title</titre_cv>

<info_perso>

<civilite>$civilite</civilite>

<nom>$nom</nom>

<prenom>$prenom</prenom>

<age>$age</age>

<adresse>

<numero>$numRue</numero>

<rue>$rue</rue>

<ville code_postal='$cp'>$ville</ville>

<pays>$pays</pays>

</adresse>

<numero_telephone>$tel</numero_telephone>

<email>$mail</email>

<site_web>$web</site_web>

</info_perso>

<diplomes>

//C'EST À CE NIVEAU QU'IL FAUT QUE JE PUISSE INSERER LES BALISES DU DIPLOMES ET JE NE SAIS VRAIMENT PAS COMMENT FAIRE

</diplomes>

<formation>

<annee_debut></annee_debut>

<annee_fin></annee_fin>

<nom_formation></nom_formation>

<nom_etbalissement></nom_etbalissement>

</formation>

<savoir_faire>

<langues_parlee>

<nom_parlee></nom_parlee>

</langues_parlee>

<langues_ecrites>

<nom_ecrites></nom_ecrites>

</langues_ecrites>

<competence_metier>

<nom_competence></nom_competence>

</competence_metier>

</savoir_faire>

<experience_pro>

<nom_entreprise debut='' fin=''></nom_entreprise>

<ville></ville>

<description></description>

<!--<mois_debut></mois_debut>

<annee_debut></annee_debut>

<mois_fin></mois_fin>

<annee_fin></annee_fin>-->

</experience_pro>

<travaux_realises>

<contenu_travaux>

<titre_travaux>200</titre_travaux>

<annee_travaux></annee_travaux>

<description></description>

</contenu_travaux>

</travaux_realises>

<divers>

<contenu>

<nom></nom>

<description></description>

</contenu>

</divers>

</cv>

</cvs>";

file_put_contents("news2.xml",$monxml);

echo'<script language="Javascript">

alert("CV créé avec succès !");

window.location.replace("news2.xml");

</script>';

//}

?>

</body>

</html>

J'ai volontairement omis de saisir les variables dans la fin du document car cela fonctionnera sur le même système que les diplômes. Donc si il y a possibilité de résoudre les diplômes, ça débloquera le reste du document aussi puisque l'on fonctionnera sur le même principe.

Je vous remercie d'avance en espérant que quelqu'un réussira à m'aiguiller, car là je désespère.

Merci

Arnaud S.

Posté

Salut,

En fait il suffit de concatener tes resultats dans ta variable diplome et le tour est joue :

for ($i=0; $i<=$nb_diplome; $i++)
{
$anneeobtention = $_POST["anneeObtDiplome$i"];
$intitulediplome = $_POST["intituleDiplome$i"];
$villeobtention = $_POST["villeObtention$i"];

// Le point avant le = concatene la chaine avec la valeur de la variable
$diplome .= "<diplome>
<annee_obtention>$anneeobtention</annee_obtention>
<intitule_diplome>$intitulediplome</intitule_diplome>
<ville_obtention>$villeobtention</ville_obtention>
</diplome>";

}

Et ensuite dans le code qui genere ton xml :

<diplomes>
//C'EST À CE NIVEAU QU'IL FAUT QUE JE PUISSE INSERER LES BALISES DU DIPLOMES ET JE NE SAIS VRAIMENT PAS COMMENT FAIRE
$diplome
</diplomes>

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...