Function et variable - PHP - Programmation
Marsh Posté le 10-11-2005 à 22:38:22
ReplyMarsh Posté le 10-11-2005 à 23:10:02
il y a:
function fonctionBaliseFermante($parseur, $nomBalise)
et en écrivant:
function fonctionBaliseFermante($parseur, $nomBalise, $newvar)
ça ne fonctionne pas, en fait, l'appel de la fonction:
xml_set_element_handler($parseurXML, "fonctionBaliseOuvrante"
, "fonctionBaliseFermante" );
J'ai déjà utilisé des fonctions, mais pas sous cette forme là avec du xml.
Marsh Posté le 15-11-2005 à 10:53:57
Salut à tous,
J'ai tout essayé, mais je n'y arrive pas, il ne doit pas manquer grand chose.
J'ai récupéré un script et je l'ai adapté, mais j'ai besoin de faire passer un variable $var dans la fonction fonctionBaliseFermante. Le truc c'est que cette fonction est appelé par xml_set_element_handler je ne sais pas comment faire passer $var.
Le script ci-dessous:
<?
$var = 1;
$fichier = "nom_fichier";
if ($fichier)
{
$fichier = "$fichier.xml";
// Ma propre fonction de traitement des balises ouvrantes
function fonctionBaliseOuvrante($parseur, $nomBalise, $tableauAttributs)
{
// En fait... nous nous conteterons de mémoriser le nom de la balise
// afin d'en tenir compte dans la fonction "fonctionTexte"
global $derniereBaliseRencontree;
$derniereBaliseRencontree = $nomBalise;
}
// Ma propre fonction de traitement des balises fermantes
function fonctionBaliseFermante($parseur, $nomBalise, $var) // PROBLEME ICI LA VARIABLE $var NE PASSE PAS, MAIS OU FAUT-IL L'APPELER ???
{
global $derniereBaliseRencontree;
global $data_01;
global $data_02;
global $data_03;
global $data_04;
global $data_05;
global $data_06;
global $data_07;
switch ($nomBalise)
{
case "PDDT" :
if (eregi("$var", $data_01))
{
echo "<tr><td bgcolor=''>$data_01 - $data_02</td></tr>";
}
$data_01 = "";
$data_02 = "";
$data_03 = "";
$data_04 = "";
$data_05 = "";
$data_06 = "";
$data_07 = "";
break;
}
// On oublie la dernière balise rencontrée
// et tout le reste
$derniereBaliseRencontree = "";
}
// Ma propre fonction de traitement du texte
// qui est appelée par le "parseur"
function fonctionTexte($parseur, $texte)
{
global $derniereBaliseRencontree;
global $data_01;
global $data_02;
global $data_03;
global $data_04;
global $data_05;
global $data_06;
global $data_07;
// Nous n'affichons pas le texte ou lien directement
// nous attendrons de rencontrer la balise fermante
// et ainsi d'avoir tous les élements avant l'affichage.
// ATTENTION: Par défaut les noms des balises sont
// mises en majuscules
switch ($derniereBaliseRencontree) {
case "PAGR":
$data_01 = $texte;
break;
case "DSC1":
$data_02 = $texte;
break;
case "DSC2":
$data_03 = $texte;
break;
case "DSC3":
$data_04 = $texte;
break;
case "CPRI":
$data_05 = $texte;
break;
case "EPRI":
$data_06 = $texte;
break;
case "PQOH":
$data_07 = $texte;
break;
}
}
// Création du parseur XML
$parseurXML = xml_parser_create();
// Je précise le nom des fonctions à appeler
// lorsque des balises ouvrantes ou fermantes sont rencontrées
xml_set_element_handler($parseurXML, "fonctionBaliseOuvrante", "fonctionBaliseFermante" );
// Je précise le nom de la fonction à appeler
// lorsque du texte est rencontré
xml_set_character_data_handler($parseurXML, "fonctionTexte" );
// Ouverture du fichier
$fp = fopen($fichier, "r" );
if (!$fp) die("Impossible d'ouvrir le fichier XML" );
echo "<table border=2 bordercolor='red'>";
// Lecture ligne par ligne
while ( $ligneXML = fgets($fp)) {
// Analyse de la ligne
// REM: feof($fp) retourne TRUE s'il s'agit de la dernière
// ligne du fichier.
xml_parse($parseurXML, $ligneXML);
}
xml_parser_free($parseurXML);
fclose($fp);
echo "</table>";
}
?>
Marsh Posté le 15-11-2005 à 12:42:07
global $la_variable_que_tu_veux_utiliser_dans_la_fonction;
Vu qu'apparemment tu pourras pas la passer en argument.
Marsh Posté le 07-12-2005 à 23:07:10
Bonjour,
Merci bien, j'avais essayé, mais ça ne fonctionnais pas, maintenant tout est OK, je l'ai mis au bon endroit et j'ai fait un GET de la variable url.
Marsh Posté le 10-11-2005 à 22:21:42
Salut à tous,
J'utilise un script qui utilise des fonctions et je n'arrive pas à y faire passer une variable supplémentaire, y-a-t-il un moyen de faire passer la variable dans toutes la pages, en faisant: function abc($var1, $var2, $varsupplementaire), la $varsupplementaire ne passe pas ?