Page 1 sur 1

Affichage requête en jquery

Posté : 29 août 2013, 14:41
par dimeh57
Bonjour voila mon problème,

J'utilise PHP, jQuery et json pour mon application : en gros index.html = formulaire de connexion (login, MDP), la requête marche parfaitement, je suis ensuite redirigé vers homepage.html et c'est la que le problème ce pose : J'ai une table client(idClient, nomClient) et j'aimerai afficher la totalité de cette table mais je ne vois pas du tout comment effectuer cela, je vous met mon code cela sera surement plus simple :

Mon fichier php listCli.php
<?php
/**
 * Ce script permet de vérifier si la connexion est valide.
 */
 
header("Access-Control-Allow-Origin", "*");
 
include('global.php');

$retour = array();

try {
	$pdo = new PDO($dsn, $user, $pwd);
	$sqlLogin="SELECT * FROM client ";
	$result = $pdo->query($sqlLogin);
	if ($result->rowCount() == 1) {
		foreach ($result as $ligne) {
			$retour = array (
				'idClient' => $ligne['idClient'],
				'nomClient' => $ligne['nomClient']
			);
		}
	}
	else {
		$retour = array (
			'error' => 'Erreur dans la requête sql'
		);
	}
}
catch (Exception $e) {
	$retour = array (
		'error' => urlencode("Erreur avec la base de données. Contactez l'administrateur.")
	);
}
	
echo $_GET['callback'].'('.json_encode($retour).')';

 

Ma page HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1, maximum-scale=1" />
    <link type="text/css" href="css/main.css" rel="stylesheet" />
	<script type="text/javascript" src="js/jQuery.js"></script>
	<!--<script type="text/javascript" src="js/cordova.js"></script>-->
    <script type="text/javascript" src="js/function.js"></script>    
    <script type="text/javascript" src="js/homePage.js"></script>
</head>

<body class="homePage">

	<div id="wrapper">
		<br/>
		<img src="img/logo.png" />
		<br/>
		<br/>
		<h1>Accueil</h1>
	</div>
	<br/>
	<div class="content"></div>

</body>
</html>
Ma page JS (homePage.js)
[javascript]$(document).ready(function(){
login = extrUrlParam("login");
pwd = extrUrlParam("password");

// si le login et le mot de passe sont fournis
if(login != "" && pwd != "") {
$.ajax({
type: "GET",
url: "http://127.0.0.1:8888/script/login.php?lo=" + encodeURIComponent(login) + "&pwd=" + encodeURIComponent(pwd),
contentType: "application/json",
dataType: 'jsonp',
async: false,
crossDomain: true,
success: function(data) {
if(data.error && data.error != 'undefined') {
document.location.href="index.html?err=" + encodeURIComponent(data.error);
}
else {
$.ajax({
type: "POST",
url: "http://127.0.0.1:8888/script/listCli.php",
contentType: "application/json",
dataType: 'jsonp',
async: false,
crossDomain: true,
success: function(data) {
$(".content").html("idClient "+data.idClient);
} })
}
}
});
}
// sinon on retourne sur l'accueil avec une erreur
else document.location.href="index.html?err=" + encodeURIComponent("Veuillez saisir un login et un mot de passe");
});[/javascript]

Re: Affichage requête en jquery

Posté : 29 août 2013, 15:41
par dimeh57
HELP

Re: Affichage requête en jquery

Posté : 29 août 2013, 16:11
par moogli
Modération :
Les "up" sont interdits sur PHPFrance.

Si tu n'as pas obtenu de réponse, c'est (au choix) :
- que ta question est mal formulée : reformule-la différemment ;
- que personne ne connaît la réponse ici : faire un "up" ne te donnera pas davantage de résultats ;
- que la réponse demandée exige un travail important que personne ne va faire à ta place ;
- que trop peu de temps s'est écoulé depuis ton précédent message pour qu'un membre ait pu y répondre.

Merci de prendre le temps de lire les règlements.

Re: Affichage requête en jquery

Posté : 29 août 2013, 16:14
par xTG
Ehoh... Tu sais il y a des gens qui ont une vie ? On est pas payé à la réponse ici. ;)

Déjà tu as un problème dans ton code PHP...
if ($result->rowCount() == 1) {
                foreach ($result as $ligne) {
                        $retour = array (
                                'idClient' => $ligne['idClient'],
                                'nomClient' => $ligne['nomClient']
                        );
                }
        }
Ta requête te retourne tous les n-uplets mais ton test vérifie qu'il n'y en a que un de retourné.
1) Modifies ta condition
Ton foreach est bien mais tu écrases le contenu de $retour à chaque itération.
2) Ajoutes dans une nouvelle dimension de $retour au lieu d'écraser son contenu

Ensuite il faut interpréter les résultats dans ton JS.
De ce côté json est un objet et donc tu peux itérer dessus avec une boucle for et affiche les informations contenues dans chaque dimension.

Re: Affichage requête en jquery

Posté : 29 août 2013, 16:31
par moogli
echo $_GET['callback'].'('.json_encode($retour).')';

json foireux a cause de ce qu'il y a dans $_GET['callback'] et des parenthèses.

cette info est inutile puisse que l'a forcément en réalisant la requête ajax.
if ($result->rowCount() == 1) {
                foreach ($result as $ligne) {
                        $retour = array (
                                'idClient' => $ligne['idClient'],
                                'nomClient' => $ligne['nomClient']
                        );
                }
        }
        else {
                $retour = array (
                        'error' => 'Erreur dans la requête sql'
                );
        }
inutile, test si result != false et si oui utilise fetchAll() pour avoir le tableau retour directement. (sinon erreur, obtenue avec errorInfo()).
de plus ton foreach écrase systématiquement l'info précédente donc tu n'as que la dernière ligne retournée par la requête.

@+