Posté : 02-06-2005 20:08
Après mes recherches, je n'ai toujours pas trouvé.
Je créé un système qui s'ajoute à NPDS et permet la gestion complète d'une association: membres, contacts, clients, contrats, génération de documents latex en pdf automatiquement avec un noyau en java. Du boulot quoi :)
Seulement j'ai un problème. J'utilise SFORM pour récupérer les informations saisies par l'utilisateurs, j'écris ces informations dans un fichier XML, et je lance une classe java (un parseur) qui extrait les données, et les insére au choix dans la base mySQL, ou dans les modèles de documents LaTeX..
Les parseurs fonctionnent, sform fonctionne SAUF pour un truc :)
Je vais essayer de vous montrer mon problème par l'exemple. Dans mon formulaire.php SFORM voici le code qui génère les champs:
<?php
$m->add_field('nosecu', "N° de sécurité sociale",$membre[0],'text',true,150,"","");
$m->add_field('nom', "Nom",$membre[1],'text',true,150,"","");
$m->add_field('prenom', "Prénom",$membre[2],'text',true,150,"","");
$m->add_field('date', "Date de naissance (aaaa-mm-jj)",$membre[3],'text',false,150,"","");
$m->add_field('integration', "Année d'intégration",$membre[4],'text',true,150,"","");
$m->add_field('redoublant', "As t il redoublé? (OUI ou NON)",$membre[5],'text',false,3,"","");
$m->add_field('cle', "N° clé MiND",$membre[6],'text',false,150,"","");
sformCoordonnees($membre[0]);
?>
Vous aurez remarqué a la fin la fonction sformCoordonnees qui est la suivante:
<?php
function sformCoordonnees($monid) {
//on récupère les coordonnées dans la base
coordonnees($monid);
//on prépare l'affichage
global $coordonnees, $batiment, $rue, $cp, $ville, $telfixe, $telport, $fax, $adressemail, $adressewww;
global $m;
$m->add_extra("<tr><td colspan=2> </td></tr>");
$m->add_field('batiment', "Batiment",$coordonnees[1],'text',false,50,"","");
$m->add_field('rue', "Rue",$coordonnees[2],'text',false,50,"","");
$m->add_field('cp', "Code postal",$coordonnees[3],'text',true,5,"","0-9");
$m->add_field('ville', "Ville",$coordonnees[4],'text',true,50,"","");
$m->add_field('telfixe', "Téléphone fixe",$coordonnees[5],'text',false,10,"","0-9");
$m->add_field('telport', "Téléphone portable",$coordonnees[6],'text',false,10,"","0-9");
$m->add_field('fax', "Fax",$coordonnees[7],'text',false,10,"","0-9");
$m->add_field('adressemail', "Adresse mail",$coordonnees[8],'text',false,50,"","");
$m->add_field('adressewww', "Site Internet",$coordonnees[9],'text',false,50,"","");
$m->add_extra("<tr><td colspan=2> </td></tr>");
}
?>
et qui s'occupe de générer les champs qui sont communs a tous mes formulaires (clients, membres...) pour éviter la dupplication de code. L'affichage marche sans problème.
Ensuite, dans mon modMembre.php (le fichier sform qui va avec le formulaire), j'ai les instructions suivantes qui écrivent le document XML
Je récupère donc tout betement les données du formulaire SFORM.
<?php
case 'Soumettre':
if (!$sformret) {
//remplissage de la variable a écrire dans le document XML
$myXML = "<?xml version='1.0' encoding='ISO-8859-1' standalone='yes' ?>";
$myXML .= "<!DOCTYPE client SYSTEM '/var/www/java/sql/Membre.dtd'>";
$myXML .= "<membre>";
$myXML .= "<insert>";
$myXML .= "<no_secu>".$nosecu."</no_secu>";
$myXML .= "<nom>".$nom."</nom>";
$myXML .= "<prenom>".$prenom."</prenom>";
$myXML .= "<date_de_naissance>".$date."</date_de_naissance>";
$myXML .= "<annee_integ>".$integration."</annee_integ>";
$myXML .= "<bool_redoublant>".$redoublant."</bool_redoublant>";
$myXML .= "<no_cle>".$cle."</no_cle>";
  ; xmlCoordonnees();
$myXML .= "</insert>";
$myXML .= "</membre>";
//écriture du document XML
writeToXML("membre.xml", $myXML, "sql");
//on lance le parseur
parseToSQL("membre.xml", "ParserMembre");
break;
}
?>
l'écriture du document XML fonctionne sans problème, ainsi que le exec pour lancer le parseur java. Mon problème vient du fait que la fonction suivante ne fait pas son boulot !
<?php
function xmlCoordonnees() {
//on remplit la variable du document XML
global $batiment, $rue, $cp, $ville, $telfixe, $telport, $fax, $adressemail, $adressewww;
global $myXML;
$myXML .= "<batiment>".$batiment."</batiment>";
$myXML .= "<rue>".$rue."</rue>";
$myXML .= "<cp>".$cp."</cp>";
$myXML .= "<ville>".$ville."</ville>";
$myXML .= "<tel_fixe>".$telfixe."</tel_fixe>";
$myXML .= "<tel_portable>".$telport."</tel_portable>";
$myXML .= "<fax>".$fax."</fax>";
$myXML .= "<mail>".$adressemail."</mail>";
$myXML .= "<www>".$adressewww."</www>";
}
?>
Elle concatène bien la variable $myXML, mais ne remplace pas les variables par leurs valeurs (les balises ne contiennent aucun élément dans le fichier XML final en fait).
J'ai pourtant bien passé les variables en global, je ne vois pas où celà coince. Même si les variables sont déclarées comme étant globales dans les deux procèdures ça ne suffit pas? ça ne peux pas marcher comme ça?
j'avoue qu'après une après midi de bricolage dessus je suis un peu a court d'idée :)
Message édité par : cheekybilly |