Gestion de Contenu, de Communauté et de groupes de travail collaboratif - Open Source, français, sécurisé, stable et performant

  • MODULES

    Pour étendre les nombreuses fonctionnalités disponibles de base - modules.npds.org est à votre disposition.

    Des modules complémentaires, une communauté de développeurs active, des forums pour vos questions ... NPDS  est aussi une plateforme de développement !
  • STYLES

    Vous cherchez des thèmes graphiques pour votre portail ou votre communauté : styles.npds.org est à votre disposition.

    Des thèmes du plus simple au plus sophistiqué. Des thèmes facilement modifiables et toujours en Open-Source - Laissez simplement parler votre imagination !
  • BIBLES

    La documentation indispensable pour personnaliser et exploiter toute la puissante de NPDS  est à votre disposition sur bible.npds.org.

    Vous pouvez participer à l'effort de documentation - rien de plus simple : contactez un membre de la Team de développement et nous vous ouvrirons un compte sur le Wiki !
Devenir membre    |    Identifiant : Mot de Passe : -
Au delà de la gestion de contenu 'classique', NPDS met en oeuvre un ensemble de fonctions spécifiquement dédiées à la gestion de Communauté et de groupes de travail collaboratif.
Il s'agit d'un Content & Community Management System (CCMS) robuste, sécurisé, complet, performant et parlant vraiment français.

Gérez votre Communauté d'utilisateurs, vos groupes de travail collaboratif, publiez, gérez et organisez votre contenu grâce aux puissants outils disponibles de base.
  • Multi langues (Français, Anglais, Allemand, Espagnol, Chinois)
  • Respect des standards : UTF8, XHTML, CSS, ...
  • Système de blocs avancés
  • Installation et administration complète et centralisée
  • Editeur HTML intégré
  • Gestionnaire de fichier en ligne
  • Gestion des groupes de membres
  • Ecriture collaborative de documents (PAD)
  • Forums évolués
  • Mini-sites (pour les membres et les groupes de travail)
  • Chat temp réel
  • Système de News et de rubriques complet (édition, révision, publication)
  • ...
Gratuit et libre (Open-Source), développé en PHP, NPDS est personnalisable grâce à de nombreux thèmes et modules et ne requiert que quelques compétences de base.
NPDS Workplace - groupe de travail collaboratif
 NPDS WorkSpace - tous l'univers du travail collaboratif.
Modéré par : developpeur jpb Jireck 
Index du Forum » » Le coin des codeurs » » [Résolu] - Utilisation de variables communes à deux fonctions
Auteur[Résolu] - Utilisation de variables communes à deux fonctions
[-Jarod-]
1732       
 

[-Jarod-]
  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


  Profil  E-mail  www  
[-Jarod-]
1732       
 

[-Jarod-]
  Posté : 02-06-2005 20:12

ds le case soumettre
; xmlCoordonnees();
bien évidemment le ";" n'apparait pas ds le code d'origine :) il a du etre rajouté c bizarre

  Profil  E-mail  www  
Tito
7758       
 

Tito
  Posté : 02-06-2005 20:31

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

  Profil  E-mail  www  
[-Jarod-]
1732       
 

[-Jarod-]
  Posté : 02-06-2005 21:13

Merci bcp Tito celà me sort d'un bien mauvais pas !

  Profil  E-mail  www  
florian-w
139     

florian-w
  Posté : 02-06-2005 21:15

juste une remarque mais comme je connais pas trop le xml, est-il normal d'avoir .= dans cette première ligne $myXML .= "".$batiment."";

  Profil  E-mail  
Sauter à :

Temps : 0.018 seconde(s)