Précédent   Forum du club des développeurs et IT Pro > PHP > Bibliothèques et frameworks > XML
XML Forum d'entraide sur XML avec PHP. Exemples : SimpleXML, OpenXML... Avant de poster -> FAQ XML, Cours XML et Sources XML
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 11/04/2012, 11h54   #1
Noxiious
Invité de passage
 
Homme Julien Colle
Étudiant
Inscription : avril 2012
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Julien Colle
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2012
Messages : 7
Points : 1
Points : 1
Par défaut Problème avec compteur d'enfant.

Bonjour,

"Comme projet de fin d'étude, nous avons comme consignes de créer une entreprise (matériels et logiciels) et comme toutes entreprises qui se respectent de nos jours elle se doit de posséder un site web !"

Mon problème se pose au niveau des choix que l'on peut faire dans une liste déroulante lors de l'inscription. Comme mon site sera proposé en trois langues différentes, je dispose de 3 fichiers xml pour le français, l'anglais et le néerlandais donc je pensais rentrer les valeurs de ma liste comme enfant et par la suite pour récupérer les valeurs, faire un count() pour avoir une valeur à mes options mais le résultat me fait une belle erreur.

Je n'ai aucune base sur le XML et je vous demanderai donc un peu d'indulgence

Le fichier XML de la langue française (French.xml):
Code :
1
2
3
4
5
6
7
	<function>Fonction</function>
<functions>
	<fun1>Effectuez votre choix…</fun1>
	<fun2>Achats/Approvisionnement</fun2>
	<fun3>Administration</fun3>
	<fun4>Autre</fun4>
</functions>
Le fichier Php avec les paramètres (Params.php):
Code :
1
2
3
4
5
6
 
<?php
define("TRAD_FILE_EN",'English.xml');
define("TRAD_FILE_FR",'French.xml');
define("TRAD_FILE_NL",'Nederland.xml');
?>
Le fichier Php de mon formulaire d'enregistrement (Formulaire.php):
1. Appelle de mon fichier XML
Code :
1
2
3
4
5
6
 
<?php
require_once('Params.php');
$trad = simplexml_load_file(TRAD_FILE_FR);
$xml = $trad->formInscription;
?>
2. Fonction Count
Code :
1
2
3
4
5
6
 
<?php
	foreach($xml->functions->function as $fun){
		echo $fun;
	}
?>
Merci d'avance pour votre aide

Ps: les codes sont en annexes.
Fichiers attachés
Type de fichier : xml French.xml (878 octets, 0 affichages)
Type de fichier : php Formulaire.php (2,6 Ko, 0 affichages)
Type de fichier : php Params.php (127 octets, 0 affichages)
Noxiious est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2012, 12h11   #2
Benjamin Delespierre
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 3 896
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 25
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 3 896
Points : 8 603
Points : 8 603
Quelle est l'erreur concrètement ?
__________________
On vous a menti
PHP, Injection de dépendances et composants
La POO en PHP en 10 minutes pour moins
Suivez-moi sur GitHub et Twitter

N'oubliez pas de vous servir des bouttons , et
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2012, 13h45   #3
Noxiious
Invité de passage
 
Homme Julien Colle
Étudiant
Inscription : avril 2012
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Julien Colle
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2012
Messages : 7
Points : 1
Points : 1
Au début il mettait que la valeur contenue dans foreach() était incorrecte, après modification, je n'ai plus rien qui s'affiche.

Donc, il m'affiche bien "Fonction :" mais ensuite il ne m'affiche plus rien et repart sur la suite de mon code.

Code :
1
2
3
4
5
6
7
 
<?php echo $xml->function ?>: 
		<?php
				foreach($xml->functions as $fun){
					echo $fun;
				}
		?>
Noxiious est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2012, 14h14   #4
Benjamin Delespierre
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 3 896
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 25
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 3 896
Points : 8 603
Points : 8 603
J'imagine que tu veux voir les enfants du noeud 'functions' et non ce noeud lui même, dans ce cas, utilise SimpleXMLElement::children.
__________________
On vous a menti
PHP, Injection de dépendances et composants
La POO en PHP en 10 minutes pour moins
Suivez-moi sur GitHub et Twitter

N'oubliez pas de vous servir des bouttons , et
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2012, 14h39   #5
Noxiious
Invité de passage
 
Homme Julien Colle
Étudiant
Inscription : avril 2012
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Julien Colle
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2012
Messages : 7
Points : 1
Points : 1
Merci de tes réponses.

Voici le corrigé:

Code du formulaire changé
Code :
1
2
3
4
5
6
7
8
9
 
<select name="test">
			<?php
					foreach($xml->functions->fun as $fun){
						echo "<option value='".$fun["id"]."'";
						if ($fun["id"] == 0) echo " selected='selected'";
						echo ">".$fun."</option>";
					}
			?></select>
Code du XML changé
Code :
1
2
3
4
5
6
7
8
 
<function>Fonction</function>
	<functions>
		<fun id="0">Effectuez votre choix&#8230;</fun>
		<fun id="1">Achats/Approvisionnement</fun>
		<fun id="2">Administration</fun>
		<fun id="3">Autre</fun>
	</functions>
Noxiious est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2012, 14h47   #6
Benjamin Delespierre
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 3 896
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 25
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 3 896
Points : 8 603
Points : 8 603
La syntaxe suivante est plus lisible, je te conseille de l'utiliser:
Code :
1
2
3
4
5
6
7
<select name="test">
	<?php foreach ($xml->functions->fun as $fun): ?>
	<option value="<?=$fun['id']?>" <?=($fun['id']==0?'selected="selected"':'')?>>
		<?=$fun?>
	</option>
	<?php endforeach ?>
</select>
__________________
On vous a menti
PHP, Injection de dépendances et composants
La POO en PHP en 10 minutes pour moins
Suivez-moi sur GitHub et Twitter

N'oubliez pas de vous servir des bouttons , et
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2012, 14h54   #7
Noxiious
Invité de passage
 
Homme Julien Colle
Étudiant
Inscription : avril 2012
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Julien Colle
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2012
Messages : 7
Points : 1
Points : 1
Merci pour le code mais lorsque je l'applique, il ne me propose plus qu'un choix entre 5 ">" surement une faute de frappe.
Noxiious est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2012, 16h52   #8
Benjamin Delespierre
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 3 896
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 25
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 3 896
Points : 8 603
Points : 8 603
T'as peu être pas le short open tags actif.

Tu mets des "<?php echo" en lieu et place des "<?=" et ça devrait coller (c'est dommage c'est un raccourci bien pratique).
__________________
On vous a menti
PHP, Injection de dépendances et composants
La POO en PHP en 10 minutes pour moins
Suivez-moi sur GitHub et Twitter

N'oubliez pas de vous servir des bouttons , et
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2012, 02h28   #9
ascito
Membre chevronné
 
Inscription : juin 2007
Messages : 567
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 567
Points : 703
Points : 703
bon je vais peu faire un plantage(tant pis), mais dit moi benjamin cette syntaxe "<?=" me fait penser à la méthode magique __toString

http://fr2.php.net/manual/fr/languag...bject.tostring

à tord ou à raison ?
__________________
Conception / Dev
ascito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2012, 08h06   #10
Noxiious
Invité de passage
 
Homme Julien Colle
Étudiant
Inscription : avril 2012
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Julien Colle
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2012
Messages : 7
Points : 1
Points : 1
Comme j'ai eu mes réponses, je met le sujet comme résolut
Noxiious est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2012, 09h48   #11
Benjamin Delespierre
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 3 896
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 25
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 3 896
Points : 8 603
Points : 8 603
Citation:
Envoyé par ascito Voir le message
bon je vais peu faire un plantage(tant pis), mais dit moi benjamin cette syntaxe "<?=" me fait penser à la méthode magique __toString

http://fr2.php.net/manual/fr/languag...bject.tostring

à tord ou à raison ?
A tord. Comme expliqué plus haut, la syntaxe <?= (avec la directive short open tags à On) est un alias de <?php echo tout simplement.

La méthode magique __toString à exactement le même but qu'en Java à savoir: si l'objet est utilisé dans un contexte de chaîne de caractère, cette méthode sera implicitement appelée pour transformer l'objet en string.

Exemple:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Test {
	protected $_a;
	protected $_b;
 
	public function __construct ($a, $b) {
		$this->_a = $a;
		$this->_b = $b;
	}
 
	public function __toString () {
		var_dump(__METHOD__);
		return "{$this->_a} {$this->_b}";
	}
}
 
$t = new Test(1,2);
 
var_dump( $t->__toString() ); // appel explicite
var_dump( (string)$t ); // cast explicite
var_dump( "$t" ); // cast implicite
var_dump( "t vaut " . $t ); // cast implicite
Attention: en PHP 5.1, __toString n'est appelée implicitement qu'avec les fonction echo et print. Ce comportement inadéquat à été corrigé en PHP 5.2.
__________________
On vous a menti
PHP, Injection de dépendances et composants
La POO en PHP en 10 minutes pour moins
Suivez-moi sur GitHub et Twitter

N'oubliez pas de vous servir des bouttons , et
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h01.


 
 
 
 
Partenaires

Hébergement Web