logo

NPDS : Gestion de contenu et de communauté


Content & Community Management System (CCMS) robuste, sécurisé, complet, performant, parlant vraiment français, libre (Open-Source) et gratuit.
34 visiteur(s) et 0 membre(s) en ligne.
Activité du Site

Pages vues depuis 25/05/2001 : 109 444 733

  • Nb. de membres 8 696
  • Nb. d'articles 1 695
  • Nb. de forums 26
  • Nb. de sujets 8
  • Nb. de critiques 92

Top 10  Statistiques

Index du forum »»  Le coin des codeurs »» [Résolu] - Utilisation de variables communes à deux fonctions

[Résolu] - Utilisation de variables communes à deux fonctions#16794

3Contributeur(s)
[-Jarod-]Titoflorian-w
3 Modérateur(s)
developpeurjpbJireck
[-Jarod-] [-Jarod-]icon_post
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

[-Jarod-] [-Jarod-]icon_post
ds le case soumettre
; xmlCoordonnees();
bien évidemment le ";" n'apparait pas ds le code d'origine :) il a du etre rajouté c bizarre
Tito Titoicon_post
Pourquoi utiliser des globales si tu peux les mettre dans la fonction?

function xmlCoordonnees($myXML, $batiment, $rue, $cp, $ville, $telfixe, $telport, $fax, $adressemail, $adressewww) {
    //on remplit la variable du document XML
    $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>";
}


Et puis il suffit de faire

$myXML=xmlCoordonnees($myXML, $batiment, $rue, $cp, $ville, $telfixe, $telport, $fax, $adressemail, $adressewww);


Et d'écrire $myXML dans le fichier
[-Jarod-] [-Jarod-]icon_post
Merci bcp Tito celà me sort d'un bien mauvais pas !
florian-w florian-wicon_post
juste une remarque mais comme je connais pas trop le xml, est-il normal d'avoir .= dans cette première ligne $myXML .= "".$batiment."";