Notice: Undefined index: id in C:\wamp\www\NEOGETCASH\GESTIO

Mammouth du PHP | 702 Messages

10 mars 2012, 11:42

Bonjour, j'ai cette requête ci qui me renvoit l'erreur sus-évoquée en titre. J'ai beau avoir cherché, je ne sais pas comment la résoudre.
<?php               $sql = 'SELECT titre, date, gestionnaire.login as expediteur, messages.id as id_message FROM messages, gestionnaire WHERE id_destinataire="'.$_SESSION['id'].'" AND id_expediteur=gestionnaire.id ORDER BY date DESC';  
// lancement de la requete SQL
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
$nb = mysql_num_rows($req);  
 
if ($nb == 0) { 
   echo 'Vous n\'avez aucun message.';  
}  
else { 
   // si on a des messages, on affiche la date, un lien vers la page lire.php ainsi que le titre et l'auteur du message
   while ($data = mysql_fetch_array($req)) { 
      echo $data['date'] , ' - <a href="lire.php?id_message=' , $data['id_message'] , '">' , stripslashes(htmlentities(trim($data['titre']))) , '</a> [ Message de ' , stripslashes(htmlentities(trim($data['expediteur']))) , ' ]<br />'; 
   }  
}  
mysql_free_result($req);  
mysql_close();  
?>
voici le code erreur
Notice: Undefined index: id in C:\wamp\www\NEOGETCASH\GESTIONNAIRE\creance.php on line 1042

ViPHP
xTG
ViPHP | 7331 Messages

10 mars 2012, 11:45

Pour utiliser une session il faut l'avoir démarrée.
Il te manque l'instruction session_start() en début de fichier.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 mars 2012, 11:51

:mrgreen:
J'allais demander laquelle c'était la ligne 1042 ;)

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 702 Messages

10 mars 2012, 11:55

la ligne 1042 :
        $sql = 'SELECT titre, date, gestionnaire.login as expediteur, messages.id as id_message FROM messages, gestionnaire WHERE id_destinataire="'.$_SESSION['id'].'" AND id_expediteur=gestionnaire.id ORDER BY date DESC';  
le session start déjà présent avant la balise HTML :
<?php
session_start();  
// on vérifie toujours qu'il s'agit d'un membre qui est connecté
if (!isset($_SESSION['login'])) { 
   // si ce n'est pas le cas, on le redirige vers l'accueil
   header ('Location: ../index.php'); 
   exit();  
}  
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 mars 2012, 12:12

Donc la clairement tu n'a pas d'index id dans la session.

L'a tu renseigné quelque part ?

Sinon passe par le login (il doit de toute façon être unique nan ?)

Pour t'en convaincre je t'invite à ajouter un var_dump($_SESSION); ligne 1041 ;)

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 702 Messages

10 mars 2012, 12:15

ça me renvoit ça
array
  'login' => string 'stanislas' (length=9)
  'inplace-admin' => string 'demo' (length=4

Mammouth du PHP | 702 Messages

10 mars 2012, 12:24

j'ai changé les champs int par des varchar, (11), normalement cela devrait me renvoyer quelque chose en utlisant le login au lieue de l'id suite aux enregistrements mais je n'ai rien...

ViPHP
xTG
ViPHP | 7331 Messages

10 mars 2012, 12:34

Changer un type de champ ne change pas la données qu'il y a dedans...
Le nombre 1 ne sera jamais égal à la chaîne de caractère admin et ce même si tu transformes le nombre 1 en caractère '1'.
Tu t'en rend compte j'espère ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 mars 2012, 12:36

Heu faut juste que tu ajoute l'id dans la session, à la connexion, d'ailleurs, sauf si tu utilise le login régulièrement tu n'a besoin que de l'id en session vu qu'il te sert pour récupérer tout les reste (bon si tu affiche le login sur toute les pages autant l'avoir en session c'est quand même un poil plus performant je pense. ;) )

@+
Il en faut peu pour être heureux ......