Bonjour,
je dois générer un flux en XML à partir d'un formulaire en php. voici comment je m'y prends:
code du formulaire:
<div class="panel-body">
<div class="row">
<div class="col-md-3"><b>Type :</b></div> <div class="col-md-9"><?= $infoAnnonce"type"] ?></div><hr>
</div>
<div class="row">
<div class="col-md-3"><b>Prix :</b></div> <div class="col-md-9"><?= $infoAnnonce"prix_public"] ?> €</div><hr>
</div>
<div class="row">
<div class="col-md-3"><b>Descriptifs :</b></div> <div class="col-md-9"><?= $infoAnnonce"descriptifs"] ?></div><hr>
</div>
<div class="row">
<div class="col-md-3"><b>Marque :</b></div> <div class="col-md-9"><?= $infoAnnonce"marque"] ?></div><hr>
</div>
<div class="row">
<div class="col-md-3"><b>Modèle :</b></div> <div class="col-md-9"><?= $infoAnnonce"modele"] ?></div><hr>
</div>
<div class="row">
<div class="col-md-3"><b>Visibilité :</b></div> <div class="col-md-9"><?= $infoAnnonce"visibilite"] ?></div><hr>
</div>
<div class="row">
<div class="col-md-3"><b>Vendu avec la place au port :</b></div> <div class="col-md-9"><?= ($infoAnnonce"venduavecplaceport"] == 1)? "Oui": "Non" ?></div>
</div>
</div>
code php pour générer le fichier xml:
!-- enregistrement en xml -->
<?php
//recupération des valeurs des champs et transfers de leurs valeurs dans les variables
//Info annonce
$type= htmlspecialchars($infoAnnonce"type"]);
$prix_public= htmlspecialchars($infoAnnonce"prix_public"]);
$descriptif= htmlspecialchars($infoAnnonce"descriptifs"]);
$marque= htmlspecialchars($infoAnnonce"marque"]);
$modele= htmlspecialchars($infoAnnonce"modele"]);
$visibilite= htmlspecialchars($infoAnnonce"visibilite"]);
$venduavecplaceport= htmlspecialchars(($infoAnnonce"venduavecplaceport"] == 1)? "Oui": "Non" );
//verifie si le fichier export_from_html_boat_youboat.xml existe ou non
//si il n'existe pas
if(!file_exists("export_from_html_boat_youboat.xml"))
{
//on va ecrire dans la variable $chxml
//l'element racine se nomme <annonces> et contient les elements suivant image, info_annonce, info_bateau ...
$chxml="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<annonces>\n <annonce>\n
<image>\n <media type=\"image/jpeg\">http://localhost/GitHub/medinboats/Admin/$image</media>\n </image>\n
<info_annonce>\n <type><![CDATA[$type]]></type>\n <prix_public><![CDATA[$prix_public]]></prix_public>\n <descriptif><![CDATA[$descriptif]]></descriptif>\n <marque><![CDATA[$marque]]></marque>\n <modele><![CDATA[$modele]]></modele>\n <visibilite><![CDATA[$visibilite]]></visibilite>\n <venduavecplaceport><![CDATA[$venduavecplaceport]]></venduavecplaceport>\n </info_annonce>\n</annonce>\n </annonces>";
}
else
//si le fichier bateauxmedia.xml existe
{
//son contenu est recupéré et stocké dans la variable $xml
$xml= simplexml_load_file("export_from_html_boat_youboat.xml");
//puis on transfere $xml dans la variable de chaine de caractéres $chxml en appelant la méthode asXML()
$chxml = $xml -> asXML();
//comme nous allons ajouter une élement au fichier xml il faut supprimer la balise de fin </annonces> avec la fonction str_replace(search, replace, subject)
//cela va donc selectionner la balise et la remplacer par une chaine de caractére vide dans la variable $chxml
$chxml = str_replace("</annonces>", "", $chxml);
//ici on concaténe les nouvelles données avec les anciennes et on ajoute la balise </annonces> à la fin pour que le document XML soit bien formé
$chxml.= "<annonce>\n
<image>\n <media type=\"image/jpeg\">http://localhost/GitHub/medinboats/Admin/$image</media>\n </image>\n
<info_annonce>\n <type><![CDATA[$type]]></type>\n <prix_public><![CDATA[$prix_public]]></prix_public>\n <descriptif><![CDATA[$descriptif]]></descriptif>\n <marque><![CDATA[$marque]]></marque>\n <modele><![CDATA[$modele]]></modele>\n <visibilite><![CDATA[$visibilite]]></visibilite>\n <venduavecplaceport><![CDATA[$venduavecplaceport]]></venduavecplaceport>\n </info_annonce>\n</annonce>\n </annonces>";
//il ne reste plus que a enregistrer le contenu de la chaine $chxml dans le fichier export_from_html_boat_youboat.xml à l'aide de la fonction file_put_contents()
$verif=file_put_contents("export_from_html_boat_youboat.xml", $chxml);
Voila tout ceci fonctionne mais je bloque car maintenant mon formulaire comporte une liste d'objets que l'on peut cocher ou non. Et j'aimerais que dans mon xml cela me m'indique si l'objet est coché alors 1 si non coché alors 0.
voici le code du formulaire:
<?php if($electronique != null) { ?>
<div class="panel panel-primary">
<div class="panel-heading">
<h4>Equipements electroniques</h4>
</div>
<div class="panel-body">
<ul class="list-group">
<?php foreach($electronique"electroniques"] as $unEquipement) { ?>
<li class="list-group-item"><?= $unEquipement ?></li>
<?php } ?>
</ul>
</div>
</div>
<?php } ?>
cela va afficher les éléments qui auront étaient sélectionnés, je pensais récupérer l'information comme ceci
$electroniques= htmlspecialchars(($electronique"electroniques"] == 1)? "1": "0" );
mais cela me renvoi que des 0 donc je dois me tromper quelque part....
si vous auriez une idée ce serait super ^^
Merci