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 :

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 php : Sélectionner tout - Visualiser dans une fenêtre à part
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 php : Sélectionner tout - Visualiser dans une fenêtre à part
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 php : Sélectionner tout - Visualiser dans une fenêtre à part
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 php : Sélectionner tout - Visualiser dans une fenêtre à part
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">
      |&nbsp;<a href="index.php">Accueil</a>&nbsp;|&nbsp;
      <?php echo $vetements;?>&nbsp;|&nbsp;
      <?php echo $accessoiresmaison; ?>&nbsp;|&nbsp;
      <?php echo $accessoires; ?>&nbsp;|&nbsp;
      <a id = "panier" href="panier.php">panier</a>&nbsp;|&nbsp;
      <a id = "bio" href="bio.php">qui sommes-nous?</a>&nbsp;|
      </div>

boutique.php :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
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 javascript : Sélectionner tout - Visualiser dans une fenêtre à part
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);
    }
  }