[AJAX] Ma base de donnée ne répond pas (requête ajax)
Bonjour,
Je suis débutant et nouveau sur le forum alors merci d'être indulgent mais critique et constructif. ;)
J'essaie de mettre en application mes cours de développement d'application web. Pour cela je développe un site de ventes en ligne. J'ai créé une BDD sous mysql qui fonctionne (j'ai testé différentes requêtes sans problème). Par contre lorsque je lance une requête depuis le site, j'ai ce message d'erreur avec firebug :
Citation:
typeerror : tab[k] is undifined
Je comprends le message mais je ne trouve pas l'origine du problème. Si quelqu'un pouvait me donner un coup de main ce serait sympa !
Ah oui, autre chose : je me suis aperçu que mes cours n'était pas à jour (utilisation de mysql au lieu de PDO), il faudra que je modifie ça aussi dès que j'aurai réglé les autres problèmes... ;)
Mon script :
init.php :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <?php
ini_set('display_errors','off');
session_start();
$bdServeur = "localhost";
$bdUser = "root";
$bdMdp = "";
$bdBase = "suika";
include_once("curseur.php");
connexion();
if(isset($_SESSION["login"])){
$login = $_SESSION["login"];
$id = $_SESSION["id"];
}else{
$login = "";
$id = "";
}
?> |
curseur.php :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <?php
/**
* Connexion à la base de données à partir de variables globales
*/
function Connexion(){
global $bdServeur, $bdUser, $bdMdp, $bdBase ;
mysql_connect($bdServeur, $bdUser, $bdMdp)
or die("Erreur de connexion au serveur");
mysql_select_db($bdBase)
or die("Erreur sur le nom de la base de donnée");
}
?> |
serveur.php :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| <?php
include_once("php/init.php") ;
Connexion() ;
if (isset($_GET["txtLogin"])) {
// demande d'identification
$login = $_GET["txtLogin"] ;
$mdp = $_GET["pwdMdp"] ;
$curseur = mysql_query("select * from client where login='".$login."' and mdp='".$mdp."'") ;
if (mysql_num_rows($curseur)!=0) {
$_SESSION["login"] = $login ;
$_SESSION["id"] = mysql_result($curseur, 0, "numclient") ;
echo $login;
}else{
echo "";
}
}elseif (isset($_GET["mapage"])){
//récupération du rayon concerné
$page = $_GET["mapage"];
$curseur = mysql_query("select * from article inner join rayon on (rayon.numrayon = article.numrayon) where nomrayon = '".$page."' and stock > 0 ");
if (mysql_num_rows($curseur)!=0) {
while($ligne = mysql_fetch_assoc($curseur)){
// récupération des champs de la ligne
$tab[]= $ligne;
}
echo json_encode($tab);
}else{
echo "";
}
}else{
// demande de déconnexion
session_unset ();
// On détruit notre session
//session_destroy ();
}
?> |
head.php :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| <?php
include_once("php/init.php")
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.1 //EN""http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="author" contents="JQ"/>
<meta name="keywords" contents="boutique, t-shirts, japonais, suika" />
<meta name="description" contents="Vente de création de mode" />
<meta name="date" content="2014-06-30" />
<title>Suika</title>
<link rel="shortcut icon" type="image/x-icon" href="images/iconesuika.png" />
<link rel="stylesheet" type="text/css" href="css/cssPrincipal.php" />
</head>
<body>
<div id="divFondEcran">
<div id="divPrincipal">
<div id="divTitre">
</div>
<?php
$vetements = '<a href="boutique.php?page=vetements">vêtements</a>';
$accessoiresmaison = '<a href="boutique.php?page=accessoiresmaison">accessoires maison</a>';
$accessoires = '<a href="boutique.php?page=accessoires">accessoires</a>';
if(!isset($_GET['page'])=="vetements"){$vetements='<a href="boutique.php?page=vetements">vêtements</a>';}
if(!isset($_GET['page'])=="accessoiresmaison"){$accessoiresmaison='<a href="boutique.php?page=accessoiresmaison">accessoires maison</a>';}
if(!isset($_GET['page'])=="accessoires"){$accessoires='<a href="boutique.php?page=accessoires">accessoires</a>';}
?>
<div id="divMenus">
| <a href="index.php">Accueil</a> |
<?php echo $vetements;?> |
<?php echo $accessoiresmaison; ?> |
<?php echo $accessoires; ?> |
<a id = "panier" href="panier.php">panier</a> |
<a id = "bio" href="bio.php">qui sommes-nous?</a> |
</div> |
boutique.php :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| <?php include_once("head.php");?>
<div id="divPage" style="visibility : hidden">
<?php $idPage = $_GET['page'];
echo $idPage; ?>
</div>
<div id="divArticle">
<div id="divTableau">
</div>
<div id="divPhotos">
<img id="photoArticle" style ="left : 0px; top : 0px; width : 100%; height : 100%;">
</div>
<div id="divCmdPhotos">
<input type="button" id="cmdPhotoPrecedente" value="<<" />
<input type="button" id="cmdPhotoSuivante" value=">>" />
</div>
<div id="divDescriptif">
<div id="divLibelle" class="petitTitre">
</div>
<div id ="divTxtDescriptif" class="petitTexte">
</div>
</div>
<div id="divCmdGauche">
<input type="button" id="cmdArticlePrecedent" value="<<" />
</div>
<div id="divCmdDroite">
<input type="button" id="cmdArticleSuivant" value=">>" />
</div>
</div>
<?php include_once("foot.php");?> |
Extrait de boutique.js :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
| function boutique(){
var monId = document.getElementById("divPage").innerHTML;
alert(monId);
AjaxReception("serveur.php?mapage="+monId, "text", chargeBoutique);
}
function chargeBoutique(unTableau){
var k = 1;
var l = 1;
var tab = new Array;
tab = unTableau;
document.getElementById("divTxtDescriptif").innerHTML = tab[k].commentaire;
document.getElementById("divLibelle").innerHTML = tab[k].libelle;
document.getElementById("photoArticle").src = 'images/' + tab[k].nomphoto+ '(' + l + ')' + '.jpg';
//Gestion du defilement des articles
document.getElementById("cmdArticleSuivant").onclick = function(){
if (k<tab.length-1) {
k++;
document.getElementById("divTxtDescriptif").innerHTML = tab[k].commentaire;
document.getElementById("divLibelle").innerHTML = tab[k].libelle;
document.getElementById("photoArticle").src = 'images/' + tab[k].nomphoto+ '(' + l + ')' + '.jpg';
}
else{
k = 1;
document.getElementById("divTxtDescriptif").innerHTML = tab[k].commentaire;
document.getElementById("divLibelle").innerHTML = tab[k].libelle;
document.getElementById("photoArticle").src = 'images/' + tab[k].nomphoto+ '(' + l + ')' + '.jpg';
}
}
document.getElementById("cmdArticlePrecedent").onclick = function(){
if (k > 1) {
k--;
document.getElementById("divTxtDescriptif").innerHTML = tab[k].commentaire;
document.getElementById("divLibelle").innerHTML = tab[k].libelle;
document.getElementById("photoArticle").src = 'images/' + tab[k].nomphoto+ '(' + l + ')' + '.jpg';
}
else{
k = tab.length-1;
document.getElementById("divTxtDescriptif").innerHTML = tab[k].commentaire;
document.getElementById("divLibelle").innerHTML = tab[k].libelle;
document.getElementById("photoArticle").src = 'images/' + tab[k].nomphoto+ '(' + l + ')' + '.jpg';
}
}
//gestion du defilement des photos
document.getElementById("photoArticle").src = 'images/' + tab[k].nomphoto+ '(' + l + ')' + '.jpg';
document.getElementById("cmdPhotoSuivante").onclick = function(){
if (l<tab[k].nbphotos) {
l++;
document.getElementById("photoArticle").src = 'images/' + tab[k].nomphoto+ '(' + l + ')' + '.jpg'
}
else{
l = 1;
document.getElementById("photoArticle").src = 'images/' + tab[k].nomphoto+ '(' + l + ')' + '.jpg'
}
}
document.getElementById("cmdPhotoPrecedente").onclick = function(){
if (l > 1) {
l--;
document.getElementById("photoArticle").src = 'images/' + tab[k].nomphoto+ '(' + l + ')' + '.jpg'
}
else{
l = tab[k].nbphotos;
document.getElementById("photoArticle").src = 'images/' + tab[k].nomphoto+ '(' + l + ')' + '.jpg'
}
}
}
/*
*******************************************************************************
*Attention ici démarre le monde AJAX !!! *
*******************************************************************************
*/
function Ajax(){
var xhr = null;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else{
if(window.ActiveXObject){
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}else{
alert("votre navigateur ne permet pas de profiter de toutes les fonctions du site");
}
}
return xhr;
}
function AjaxEnvoi(nomfic, message){
var xhr = Ajax();
if(xhr){
xhr.open("POST", nomfic, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send(message);
}
}
function AjaxReception(nomfic, typefic, uneFonction){
var xhr = Ajax();
if(xhr){
xhr.onreadystatechange = function(){
if (xhr.readyState == 4 && xhr.status == 200){
if(typefic == "XML"){
uneFonction(xhr.responseXML);
}else{
uneFonction(xhr.responseText)
}
}
}
xhr.open("GET", nomfic, true);
xhr.send(null);
}
} |