Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/01/2011, 18h21   #1
Membre du Club
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 45
Points : 45
Par défaut Génération d'un fichier xml

Bonjour à tous,

je veux commencer par un exemple simple afin de savoir comment ça marche pour générer un fichier xml,

Voilà j'ai 2 champs nom_user et prenom_user je veux remplir ces deux champs et quand je clique sur valider, je veux qu'un fichier xml soit généré.

Merci bcp d'avance
maserati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 18h56   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par maserati Voir le message
Bonjour à tous,

je veux commencer par un exemple simple afin de savoir comment ça marche pour générer un fichier xml,

Voilà j'ai 2 champs nom_user et prenom_user je veux remplir ces deux champs et quand je clique sur valider, je veux qu'un fichier xml soit généré.

Merci bcp d'avance
et un xml de quelle forme ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 20h07   #3
Membre du Club
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 45
Points : 45
le plus simple possible
maserati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 20h28   #4
Membre confirmé
 
Inscription : juillet 2008
Messages : 407
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 407
Points : 289
Points : 289
Pour faire simple alors:

considérons que t'as le formulaire suivant:

Code :
1
2
3
4
5
<form action="generer_xml.php" method='post'>
Nom: <input type='text' name='nom_user' />
Prénom: <input type='text' name='prenom_user' />
<input type='submit' />
</form>
Ensuite, du côté du fichier generer_xml.php, tu récupères tes données que tu exportes à la volée en XML:
Code :
1
2
3
4
5
6
7
8
9
10
 
<?php 
header("Content-type: text/xml");
echo ('<result>');
echo ('<user');
echo ('<nom_user>'. $_POST['nom_user']. '</nom_user>');
echo ('<nom_user>'. $_POST['prenom_user']. '</prenom_user>');
echo ('</user>');
echo ('</result>');
?>
On va dire que c'est simpliste.
L'idéal, c'est d'utiliser SimpleXML.
b_zakaria est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 15h12   #5
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Le fichier generer_xml.php pourrait ressemble à

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
//création d'un document XML
$documentXML = new DOMDocument();
$documentXML->formatOutput = true; 
 
//création de l'élément racine
$elementRacine = $documentXML->createElement( 'list' );
 
//création de l'élément nom et prenom
$nomElement = $doc->createElement( 'nom', $_POST['nom_user'] );
$prenomElement = $doc->createElement( 'prenom', $_POST['prenom_user'] )
 
$elementRacine->appendChild( $nomElement );
$elementRacine->appendChild( $prenomElement );
 
$documentXML->appendChild( $elementRacine );
 
//affichage au navigateur
$documentXML->saveXML();
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/01/2011, 01h52   #6
Membre du Club
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 45
Points : 45
Par défaut formulaire php vers fichier XML

Bonjour,

Je voudrais envoyer directement dans un fichier xml le contenu des données du formulaire de ma page php. j'ai trouvé ce code, mais quand je l'execute il me dit 'XML enregistrer" et je sais pas où il met le fichier person.xml

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
<?php
             if ( ! empty($_POST) ) {
             $xml = '<?xml version="1.0" ... ?>' ;
             $xml .= '<person>' ;
             $xml .= '<name>' . htmlentities($_POST['name']) . '</name>' ;
             $xml .= '<surname>' . htmlentities($_POST['surname']) . '</surname>' ;
             $xml .= '</person>' ;
             file_put_contents('person.xml', $xml) ;
             echo '<p>XML enregistré !</p>' ;
}
?>
mon formulaire:
Code :
1
2
3
4
5
<form method="post" action=""> 
  <input type="text" name="name"> 
  <input type="text" name="surname"> 
  <input type="submit" value="Go" />
</form>
merci
maserati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 02h34   #7
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,

Il ne se trouve pas dans le même répertoire que le script PHP ?

Edit:
Même si une erreur se produit, le message s'affiche.

Tentes à nouveau avec
Code :
error_reporting(E_ALL);
Pour voir l'erreur... (problême de droit d'écriture à mon avis).

Ou avec ce code...
Code php :
1
2
3
4
5
 
if(@file_put_contents('person.xml', $xml))
	echo '<p>XML enregistré !</p>' ;
else
	echo '<p>Erreur ! XML non enregistré !</p>' ;
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/01/2011, 21h49   #8
Membre du Club
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 45
Points : 45
Par défaut Boucle / formulaire

Bonjour,

ce code est pour créer un seul formulaire
Code :
1
2
3
4
5
6
7
<form method="post" action="">
 
  <input type="text" name="name">
  <input type="text" name="surname">
  <input type="submit" value="Go" />
 
</form>
Moi je veux faire une boucle pour créer par exemple 20 ligne de champs name et surname.

Pouvez vous montrer comment le faire svp.
maserati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 21h54   #9
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Un simple boucle for() qui repete tes lignes.

La seule astuce consiste a nommer tes champs en tableau :
Code :
1
2
<input type="text" name="name[]">
  <input type="text" name="surname[]">
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 21h57   #10
Membre du Club
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 45
Points : 45
comme ça ?

Code :
1
2
3
4
5
6
7
8
9
10
 
for($i=0; $i < 7 ; $i++){
<form method="post" action="">
 
  <input type="text" name="name[]">
  <input type="text" name="surname[]">
  <input type="submit" value="Go" />
 
</form>
}
maserati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 22h05   #11
Membre du Club
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 45
Points : 45
c bon ça marche avec ça:
Code :
1
2
3
4
5
6
7
8
 
<form method="post" action="">
<?php for($i=0; $i < 7 ; $i++){ ?>
 
   <input type="text" name="name[$i]">
  <input type="text" name="surname[$i]">
<?php } ?>
</form>
Merci beaucoup.
maserati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 22h23   #12
Membre du Club
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 45
Points : 45
Par défaut Boucle / XML

Bonjour à tous,

j'ai un formulaire qui se crée automatiquement avec le code suivant:
Code :
1
2
3
4
5
6
7
8
<form method="post" action="">
<?php for($i=0; $i < 2 ; $i++){ ?>
 
   <input type="text" name="name">
  <input type="text" name="surname">
<?php } ?>
  <input type="submit" value="Go" />
</form>
Puis j'ai un code xml qui transfert les données vers un fichier XML person, qui ne marche pas quand j'ai rajouté la boucle (avant il marchait juste avec un seul champs )
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
             if ( ! empty($_POST) ) {
             $xml = '<?xml version="1.0" ... ?>' ;
           for($i=0; $i < 2 ; $i++){
             $xml .= '<person>' ;
             $xml .= '<name>' . htmlentities($_POST['name[$i]']) . '</name>' ;
             $xml .= '<surname>' . htmlentities($_POST['surname[$i]']) . '</surname>' ;
             $xml .= '</person>' ;
            }
             if(@file_put_contents('person.xml', $xml))
	echo '<p>XML enregistré !</p>' ;
else
	echo '<p>Erreur ! XML non enregistré !</p>' ;
            error_reporting(E_ALL);
 
}
?>
Voici ce que je trouve dans mon fichier XML
Code :
<?xml version="1.0" ... ?><person><name></name><surname></surname></person><person><name></name><surname></surname></person>
Pouvez vous m'aider à trouver une solution
maserati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 22h40   #13
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Ton tableau est comme ça :
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 22h49   #14
Membre du Club
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 45
Points : 45
j'ai modifié mon code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
           if ( ! empty($_POST) ) {
             $xml = '<?xml version="1.0" ... ?>' ;
           for($i=0; $i < 2 ; $i++){
             $xml .= '<person>' ;
             $xml .= '<name>' . htmlentities($_POST['name'][$i]) . '</name>' ;
             $xml .= '<surname>' . htmlentities($_POST['surname'][$i]) . '</surname>' ;
             $xml .= '</person>' ;
            }
             if(@file_put_contents('person.xml', $xml))
	echo '<p>XML enregistré !</p>' ;
else
	echo '<p>Erreur ! XML non enregistré !</p>' ;
            error_reporting(E_ALL);
 
}
?>
et j'ai toujours rien dans mon fichier XML.

Code :
<?xml version="1.0" ... ?><person><name></name><surname></surname></person><person><name></name><surname></surname></person>
maserati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 22h50   #15
Membre chevronné
 
Avatar de micetf
 
Homme Fred
Professeur des Ecoles
Inscription : mai 2009
Messages : 503
Détails du profil
Informations personnelles :
Nom : Homme Fred
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Professeur des Ecoles
Secteur : Enseignement

Informations forums :
Inscription : mai 2009
Messages : 503
Points : 701
Points : 701
Bonjour,
Il faut passer par des tableaux côté html (name="name[]") que tu récupères dans un tableau php $_POST['name'][].
Ce qui donne pour le formulaire :
Code HTML :
1
2
3
4
5
6
7
8
9
10
11
<form method="post" action="">
<?php 
for($i=0; $i < 2 ; $i++){ 
?>
	<input type="text" name="name[]">
	<input type="text" name="surname[]">
<?php 
} 
?>
	<input type="submit" value="Go" />
</form>
et pour son traitement :
Code PHP :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
 if ( ! empty($_POST) ) {
	$xml = '<?xml version="1.0" ... ?>' ;
	for($i=0; $i < 2 ; $i++){
		$xml .= '<person>' ;
		$xml .= '<name>' . htmlentities($_POST['name'][$i]) . '</name>' ;
		$xml .= '<surname>' . htmlentities($_POST['surname'][$i]) . '</surname>' ;
		$xml .= '</person>' ;
	}
if(@file_put_contents('person.xml', $xml))
	echo '<p>XML enregistré !</p>' ;
else
	echo '<p>Erreur ! XML non enregistré !</p>' ;
error_reporting(E_ALL);
}
MiCetF
micetf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 22h55   #16
Membre du Club
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 45
Points : 45
Oui enfin ça marche merci beaucoup pour vos réponses
maserati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 23h51   #17
Membre du Club
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 45
Points : 45
Bonjour,

j'ai un champs dans lequel l'utilisateur rentre un chiffre,

Code :
1
2
3
4
<form method="post" action="">
   <input type="text" chiffre="chiffre">
    <input type="submit" value="Go" />
</form>
Je veux stocker dans une variable (globale) ce que l'utilisateur met dans ce champs, qui sera utiliser dans une autre page phtml.

Merci
maserati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 02h01   #18
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
C'est plutôt l'attribut name...
Code html :
<input type="text" name="chiffre" />

Pour transporter des variables de page en page, nous avons les Sessions et cookies en PHP.

On doit démarrer les sessions au début du script (avant tout affichage) afin de pouvoir accéder au tableau $_SESSION.

Traitement du formulaire
Code php :
1
2
3
4
5
6
7
8
9
 
// Démarrage de la session
session_start();
 
// Récuperation du nombre ou 0 si non saisi
$chiffre=(isset($_POST['chiffre']))?$_POST['chiffre']):0;
 
// Mémorisation du nombre dans le tableau $_SESSION
$_SESSION['chiffre']=$chiffre;

Page quelconque ayant besoin de la variable.
Code php :
1
2
3
4
5
6
<?php
// Démarrage de la session
session_start();
 
// Récuperation du nombre préalablement sauvegardé
$chiffre=(isset($_SESSION['chiffre']))?$_SESSION['chiffre']):0;
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 14h35   #19
Membre du Club
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 45
Points : 45
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<html><body>
<form method="post" action="xml">
Nombre : <input type="text" name="chiffre" size="12"><br>
<input type="submit" value="OK">
</form>
<?php
//$number = $_POST['number'];
 
        // Démarrage de la session
session_start();
// Récuperation du nombre ou 0 si non saisi
$chiffre=(isset($_POST['chiffre']))?$_POST['chiffre']):0;
 
// Mémorisation du nombre dans le tableau $_SESSION
$_SESSION['chiffre']=$chiffre;
?>
                </body></html>
Il y a une erreur au niveau de
Code :
$chiffre=(isset($_POST['chiffre']))?$_POST['chiffre']):0;
il me dit Syntaxe error, expected instance of ....
maserati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 14h44   #20
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
of ... ?

Le session_start() doit etre placé au début du fichier.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h10.


 
 
 
 
Partenaires

Hébergement Web