Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 30/07/2008, à 01:54

magicpapillon77

Php et javascript pb affichage

Bonjour tout le monde,
Je suis actuellement en stage et nous remettons et recreons un site web en ce moment.
Nous avons fait l'install serveur nous meme tout marche bien donc nous sommes passé a la partie codage...
Voila pr le synopsis lol wink
Sinon en fait nous avons un pb.
Nous avons décidé de faire une architecture admin avec les dossiers js,php,include, etc..... afin de bien differencier les fonctions et que ce soit au max comprehensible.
Or nous avons du mal a simplement recuperer notre xml...
Chose qui normalement ne nous pose aucun pb vu qu'on en a deja fait des masses mais la celui la nous resiste et nous bloquons je me tourne donc vers vous....
je vous joint les codes des 4 fichiers :
voila pr le class_parametre.inc.php

<?php

class parametre
{

	public $id, $date, $val_max_credit, $nb_jour_credit, $val_carton, $nb_joueur, $nb_carton, $gain_max, $txq1, $txq2, $txdq, $txcp;

	public function __construct()
	{
		$this->val_max_credit = $this->nb_jour_credit = $this->val_carton = $this->nb_joueur = $this->nb_carton = $this->gain_max = $this->txq1 = $this->txq2 = $this->txdq = $this->txcp =0;
	}

	public function get_tab_parametre()
	{
	
	global $base;
	$tab = array();
	
	$res1 = mysql_query('
	SELECT 
		parametre.val_max_credit, parametre.nb_jour_credit, parametre.val_carton, parametre.nb_joueur, parametre.nb_carton, parametre.gain_max, parametre.txq1, parametre.txq2, parametre.txdq, parametre.txcp
	
	FROM
		parametre
		
	WHERE
			parametre.id = 1
	',$base->DB_CONN());

	if (mysql_num_rows($res1) > 0)  //On teste s'il y a des resultats
	{
		while(list($val_max_credit, $nb_jour_credit, $val_carton, $nb_joueur, $nb_carton, $gain_max, $txq1, $txq2, $txdq, $txcp) = mysql_fetch_row($res1))
		{
			$tab['corps'] = array(	'val_max_credit' => $val_max_credit,
									'val_carton' => $val_carton,
									'nb_joueur' => $nb_joueur,
									'nb_carton' => $nb_carton,
									'gain_max' => $gain_max,
									'txq1' => $txq1,
									'txq2' => $txq2,
									'txdq' => $txdq,
									'txcp' => $txcp); 
			
		}
	}
	$tab['entete'] = array(	'val_max_credit' => 'Valeur maximum de credit',
							'val_carton' => 'Val Carton',
							'nb_joueur' => 'Nombre Joueurs',
							'nb_carton' => 'Nombre de cartons',
							'gain_max' => 'Gain maximum',
							'txq1' => 'Taux simple quine 1',
							'txq2' => 'Taux simple quine 2',
							'txdq' => 'Taux double quine',
							'txcp' => 'Taux carton plein'); 

	
	
	return $tab;
	}

	public function get_xml($tab)
	{
		$phrase = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>";
		$phrase .= "<parametre>";

		foreach($tab['corps'] as $key => $tabValue)
		{
			$phrase .= "<champ nom=\"".$key."\" label=\"".$tab["entete"][$key]."\" valeur=\"".$tabValue."\"></champ>";
		}
		$phrase .= "</parametre>";

		return $phrase;		
	}

}
?>

le parametre.js :

function send_parametre(param){
	sendData('POST','php/get_xml.php',param);
}

function affiche_liste(){

	var liste = '';
	alert("parametre.js");
	var param = xmlDoc.getElementsByTagName('parametre');
	alert("parametre.js : param = "+param);
	alert ("parametre.js : param.length = "+param.length);
	alert ("parametre.js : param hasChildNodes = "+ param.hasChildNodes);
	/*
	//fonction permettant la suppression des espaces blancs
	for (i=0;i<param.childNodes.length;i++)
	{
		if ((param.childNodes[i].nodeType == 3)&&(!pasEspaceBlanc.test(param.childNodes[i].nodeValue))) 
		{
			param.removeChild(param.childNodes[i])
			i--;
		}
	}
	*/

	liste += param.length;
	alert("parametre.js : liste = "+liste);
	}

le xml....:

<?xml version="1.0" encoding="utf-8" ?>
<parametre>
	<champ nom="date" label="Dâte" valeur="0000-00-00 00:00:00" />
	<champ nom="val_max_credit" label="Valeur maximum de credit" valeur="100.00" />
	<champ nom="nb_jour_credit" label="Nombre de jours de credits" valeur="2" />
	<champ nom="val_carton" label="Coefficient pour 152,45 euros et 12 cartons" valeur="3.41" />
	<champ nom="nb_joueur" label="Nombre de joueurs" valeur="650" />
	<champ nom="nb_carton" label="Nombre de cartons par joueur" valeur="12" />
	<champ nom="gain_max" label="Gain maximum" valeur="760.00" />
	<champ nom="txq1" label="Taux 1 simple quine" valeur="0,5" />
	<champ nom="txq2" label="Taux 2 simple quine" valeur="0,5" />
	<champ nom="txdq" label="Taux double quine" valeur="0.5" />
	<champ nom="txcp" label="Taux carton plein" valeur="0.5" />
</parametre>

le get_xml:

<?php
header('Content-Type: text/xml; charset=utf-8'); 
include ("include.inc.php");

if ($_POST['requete']=='parametre' || $_GET['requete']=='parametre')
{
	$tab = $parametre->get_tab_parametre();
}
echo $parametre->get_xml($tab);


?>

Je pense que c'est déjà pas mal donc get_xml?requete=parametre marche nickel mais get_tab n'affiche rien du tout....
HELP ME..

#2 Le 30/07/2008, à 08:49

melyo

Re : Php et javascript pb affichage

Bah comme ça, c'est un peu dur de trouver le problème. Regarde déjà si ta requete SQL est bonne (exécution dans phpmyadmin).

Vérifie que tu rentres bien dans ce if :

if (mysql_num_rows($res1) > 0)

Quand à cette ligne, jamais vu :

while(list($val_max_credit, $nb_jour_credit, $val_carton, $nb_joueur, $nb_carton, $gain_max, $txq1, $txq2, $txdq, $txcp) = mysql_fetch_row($res1))

J'utilise plus comme ça :

while ($line = mysql_fetch_array($res))
{
  $test = $line['val_max_credit'];
}

Mais surement que t'as version fonctionne aussi. Je te conseil de mettre des echo partout pour voir qu'est-ce que ça dit... le php en debug, c'est de la merde...

Dernière modification par melyo (Le 30/07/2008, à 08:50)


"L'évasion n'est jamais qu'une construction de l'esprit" - Léo Ferré

Hors ligne

#3 Le 30/07/2008, à 09:58

choungaboy

Re : Php et javascript pb affichage

Bonjour, je travaille avec magicpapillon77 sur ce projet.

Notre requete mysql est bien formée car nous arrivons a générer le code xml correctement avec tous les bons champs, et nous avons fait valider le retour de la page get_xml par w3c, il s'agit d'un xml bien formé, sans warning (excepté le doctype bien sur). Le problème ne vient pas du php en fait je pense, mais du javascript.
Voici le code javascript/ajax qui récupère le xml généré depuis la page get_xml. Dans notre page html on a un onclick qui lance la fonction  sendData(POST, get_xml.php, requete=parametre)

if (window.ActiveXObject) //IE
	var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
else if (document.implementation && document.implementation.createDocument)
	var xmlDoc= document.implementation.createDocument("","",null);

function getHTTPObject()
{
	var xmlhttp = false;

	/* Compilation conditionnelle d'IE */
	/*@cc_on
	@if (@_jscript_version >= 5)
		try
		{
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (E)
			{
				xmlhttp = false;
			}
		}
	@else
		xmlhttp = false;
	@end @*/

	/* on essaie de creer l'objet si ce n'est pas deja fait */
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
		{
			try
			{
				xmlhttp = new XMLHttpRequest();
			}
			catch (e)
			{
				xmlhttp = false;
			}
		}


	return xmlhttp;
}



function sendData(method, url, data)
{
	var xmlhttp = getHTTPObject();

	if (!xmlhttp)
		return false;

	if(method == "GET")
	{
		if (data == 'null') {
			xmlhttp.open("GET", url, true); //ouverture asynchrone
		}
		else {
			xmlhttp.open("GET", url + "?" + data, true);
		}
		
		xmlhttp.send(null);
	}
	else if(method == "POST")
	{
		xmlhttp.open("POST", url, true); //ouverture asynchrone
		xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		xmlhttp.send(data);
	}


	/* on definit ce qui doit se passer quand la page repondra*/
	xmlhttp.onreadystatechange= function()
	{
		if (xmlhttp.readyState == 4) /* 4 : etat "complete" */
		{
			if (xmlhttp.status == 200) /* 200 : code HTTP pour OK */
			{
				
				xmlDoc = xmlhttp.responseXML;
				var param=xmlDoc.getElementsByTagName('parametre');
				affiche_liste();
			}
		}
	}
	return true;

}

Voila, quand on fait un alert de xmlDoc, c'est un objet de type objxml, param aussi, mais impossible d'accéder à param.childNodes, la taille de param.length est 0, alors que le xml comporte bien plusieurs champs param dans parametre .....

Merci d'avance

#4 Le 30/07/2008, à 15:57

magicpapillon77

Re : Php et javascript pb affichage

Petit up pour pas finir au fond du trou, nous avons vraiment besoin de vous...... sad

#5 Le 31/07/2008, à 09:57

magicpapillon77

Re : Php et javascript pb affichage

Up Help Us sad