8795 sujets

Développement web côté serveur, CMS

Pages :
Bonjour, je tente de faire une page connexion qui, si je suis le patron me redirige sur la page admon et si je suis un client X, me redirige sur une page avec toutes les données du clients.

J'ai une page connexion qui redirige donc vers une page destination16.php et vers admin.php

La redirection vers la page admn marche mais l'autre affiche des problèmes que je n'arrive pas à résoudre.

voici le message d'erreur :


Notice: Undefined index: ID_Utilisateur in c:\program files\easyphp1-8\www\perso\destination16.php on line 21

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\perso\destination16.php on line 26
id du client=
nom du client=
id //et là ya un champ texte qui apparait à la suite


ID_Utilisateur s'écrit de la sorte de partout y compris dans ma base de données, je n'ai donc pas fait de faute d'orthographe.

Voici le code de la page destination16.php (celle qui pose problème)

<html> 
<head> 
<title>Destination 1</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 

<body bgcolor="#FFFFFF"> 
<table width="80%" border="0" cellspacing="0" cellpadding="0" height="370" align="center"> 
  <tr align="center">  
    <td><b><font face="Verdana, Arial, Helvetica, sans-serif" size="6">Bienvenue, vous êtes connecté en tant que CLIENT </font></b></td> 
  </tr> 
</table> 

<?php 

 mysql_connect("localhost", "mpa", "mpa");                
 mysql_select_db("tuto");    


//selection des enregistrements correspondant à l'id choisi 
$iduser = $_GET['ID_Utilisateur']; 
$req='select * from comptes_utilisateurs where ID_Utilisateur= $iduser'; 
$res=mysql_query($req); 

//tu récupères les champs dans un tableau 
$row=mysql_fetch_array($res); 
//et tu n'as plus qu'à récupérer tes champs avec $row[nom_champ] 
echo 'id du client='.$row['ID_Utilisateur'].'<br>'; 
echo 'nom du client='.$row['Nom_Utilisateur'].'<br>'; 
//ou dans des input 
echo 'id<input type=\"text\" value=\"'.$row['ID_Utilisateur'].'\">'; 
?> 
</body> 
</html> 




Pouvez-vous m'aider s'il vous plait ?
Modifié par aliceadsl (05 Jan 2008 - 08:19)
Bonjour,
As-tu vérifié la bonne exécution de ta requête en codant quelque chose du genre:
if ($res != TRUE) {die ('Erreur : '.$res.mysql_errno().' - '.$res.mysql_error());}

??
je ne suis pas douée en php.
pour voir si la requête s'execue bien , il faut simplement que je mette ce code à la fin de ma page destination 16.php ?
au vu de la premiere erreur et vu que si je ne m'abuse c'est

$iduser = $_GET['ID_Utilisateur']; 


la ligne 21. il semblerait que tu fasses bien la redirection vers la page mais que tu n'as pas envoyé le parametre. ou alors pas en get.

et evidemment l'autre erreur en decoule tous naturellement.

c'est donc du coté de la redirection qu'il faut regarder. il devrait y avoir apres l'url quelquechose qui devrait ressembler a
?ID_Utilisateur=".$lavariableaveciDutilisteur.
enfin en GET en tous cas.
Modifié par CPascal (05 Jan 2008 - 11:13)
Re,

ensuite finalement la seconde ligne me semble louche aussi.

$req='select * from comptes_utilisateurs 
where ID_Utilisateur= $iduser'; 


les $iduser ne seraient-ils pas en général interprété que dans les chaines entre double quote (") ?

ton pb peut s'expliquer si tu as fais ça dans la redirection. ecrire

$req='select * from comptes_utilisateurs 
where ID_Utilisateur='.$iduser;


est bcp plus sur et ne donneras d'erreur d'interpretation nulle part.
Modifié par CPascal (05 Jan 2008 - 11:21)
comar 91,

j'ai mis le code et voici le message d'erreur :

Notice: Undefined index: ID_Utilisateur in c:\program files\easyphp1-8\www\perso\destination16.php on line 21
Erreur : 1054 - Champ '$iduser' inconnu dans where clause

CPascal,

j'ai modifié la deucième ligne comme tu me l'as conseillé.

par contre, dans l'url, je n'ai rien. quand je clique sur connexion, et que j'arrive à ma page destination16.php avec mes messages d'erreurs, j'ai ceci en URL : http://localhost/perso//destination16.php
donc pas de parametre fourni ce qui explique tes erreurs.

il faut donc que tu regardes dans le code de la page qui fait la redirection. et pas dans celui de destination16.php
ça c'est une portion de code de ma page connexion.php qui fait la redirection


if ($_POST["TB_Mot_de_Passe"] !="administrateur" and $_POST["TB_Nom_Utilisateur"] !="admin"){
						print("<script language=JavaScript type=text/javascript>");
						print("location.href='destination16.php'");
						print("</script>");
						}
					else
						{
						header("Location: pageadmin.php");
						exit();
					 	}  
					 }  



l'erreur se trouve là non ?

print("location.href='destination16.php'");
Re,

oui effectivement ce devrait etre

print("location.href='destination16.php?ID_Utilisateur=".$ici_la_variable avec_l_id."'");
j'ai modifié le code et maintenant il n'y a plus d'actions.
Lorsque je clique sur connexion, je reste sur la page connexion Smiley confus
Smiley confus

poutant je viens de tester avec le print et le fait que tu utilises du js au lieu d'un bon vieux header("location:url");

j'ai eu un doute but nop

ca devrait marcher. fais bien attention au histoire de " et de ' et verifies la variable id que t'utilise.

tu dois avoir une erreur js.

pour voir le message associé a un message js vaut mieux utiliser FF et utiliser sa console d'erreur.
j'ai utilisé du javascript au liue du header sur conseil d'une personne car le header à cet endroit faisait une erreur.

je vais bien vérifier les ' et " mais j'aimerais savoir la différence entre les deux d'abord.

sinon, ma variable ID_Utilisateur est bien la bonne... c'est ça que je comprends pas
j'ai vérifié, tous mes ID_Utilisateur sont écrits comme ça : 'ID_Utilisateur'.

J'ai regardé dans ff avec la console d'erreur, voici le message :

Erreur : invalid flag after regular expression
Fichier source : http://localhost/perso%5C/connexion.php?TB_Nom_Utilisateur=loginTB_Mot_de_Passe=password&BT_Envoyer=Envoyer
Ligne : 2, Colonne : 10
Code source :
<b>Notice</b>: Undefined variable: iduser in <b>c:\program files\easyphp1-8\www\perso\connexion.php</b> on line <b>63</b><br />

Il semblerait donc qu'il y ait un problème avec iduser mais je ne vois pas quoi
Modifié par aliceadsl (06 Jan 2008 - 08:50)
visiblement tu utilises ligne 63 un nom iduser qui n'est pas initialisé.

a écrit :
j'ai vérifié, tous mes ID_Utilisateur sont écrits comme ça : 'ID_Utilisateur'.


c'est presque une lapalissade çà Smiley ohwell et pour en faire une a mon tour.
visiblement ton iduser s'ecrit iduser. Smiley cligne

sérieusement la vrai question est d'où vient le ID_Utilisateur? ( d'une base de données? ) et comment est-il transmis au long du code et de page en page.

Utilises-tu des echo (ou des print si tu veux ) pour debugger?
Il faut faire des affichages de la variable pour voir quand elle se perd en route. (ça peut être dés le départ)


pour la premiere erreur surement une erreur de syntaxe dans le js.
mais il faudrait voir la ligne pour dire.

edit : si c'est celle de la redirection. pour repondre a ta question d'hier:

la différence entre " et ' est mince . les deux délimites des chaines de caractéres. simplement entre " plus de choses sont interprétés dans la chaine.

mais le plus important est de verifier que la chaine s'ouvre et ce ferme bien.

print("location.href='destination16.php?
ID_Utilisateur=".$ici_la_variable avec_l_id."'");

c'est bon
print("location.href='destination16.php?
ID_Utilisateur=".$ici_la_variable avec_l_id.'"');

j'ai inversé " et ' a la fin c'est faux. le php ne feras pas d'erreur mais le js ne marcheras pas car le href n'aura pas son ' fermant mais un " a la place.


maintenant je te conseille si tu n'as pas ces bases fondamentales de t'en aller lire des choses simples sur les bases de php. ici beaucoup conseille le http://www.siteduzero.com/. moi personnellement j'ai plutôt appris au depart avec php pour les nuls.

ouf je suis pas un zero puisque je suis un nul..ca me soulage Smiley biggrin Smiley cligne
Modifié par CPascal (06 Jan 2008 - 10:20)
Bonjour,
Il me semble qu'en passant par header, tu y gagnerais, quelque chose comme ceci:
if ($_POST['TB_Mot_de_Passe'] !='administrateur' and $_POST['TB_Nom_Utilisateur'] !='admin'){
	header('Location: destination16.php?ID_Utilisateur='.$nomDeLaVariable);
	exit();
}	else {
	header('Location: pageadmin.php');
	exit();
}  

1/ Pas d'aller-retour serveur-client
2/ Pas de dépendance Javascript
En ce qui concerne la différence entre " et ', je te renvoie sur ce lien de M Dew http://www.estvideo.com/dew/pages/phpbench/
Bon courage Smiley cligne
CPascal --> Il y a peut-être une erreur PHP (notice...) qui ENSUITE génère l'erreur Javascript ?
comar91,
J'ai déjà expliqué que le header (là où j'ai mis du js) ne marchait pas. Je sais que ç ane doit pas être très compliqué pour trouver l'erreur mais déjà que j'ai du mal avec mes problèmes existants, je vais pas en créer d'autres pour l'instant

CPascal,
ID_Utilisateur vient de ma base de donnée, de ma table comptes_utilisateurs.
Pour débugger, il suffit que je mette des echo de ID_Utilisateur un peu partout au fil du code c'est ça?
Tu pourrais me montrer la syntaxe ?
Pour ce qui est de documentation sur php, j'en ai plein. J'ai 5 livres sur le php dont php et mysql pour les nuls. Mais je dois être pire que ça parce que même avec lui je n'arrive pas à mettre en application des codes pour le site. Le php ne m'aime pas, mais je ne l'aime pas non plus de toute façon.
1/ comme le souligne comar91. il vaut mieux d'abord corriger les erreurs de syntaxe. sinon tu va debugger des erreurs qui n'existent pas.

2/ pour debugger ensuite c'est simple . il faut placer des messages

echo "variable machin au debut:".$variabletester."<br>";

ici je met un message pour comprendre ce que j'affiche.
je met un "<br>" a la fin pour sauter de ligne au cas ou j'en aurais plusieurs.

ça sert a rien de mettre echo $ID_utilisateur; partout si apres tu ne sais lesquels se sont affichés.

tu peux aussi faire die($ID_utilisateur); au lieu du echo pour eviter qu'un affichage apres ne recouvre ton echo. mais tu n'en auras qu'un seul a la fois.

si tu as 5 livres ceci dit. lis les bien. et ne te decourage pas.

Pour ton problème . ben a par voir le code je n'y peux rien.
Modifié par CPascal (06 Jan 2008 - 14:58)
avec l'aide d'une personne, j'ai réussi à régler mon problème. A présent, j'accède à la page destination16.php, et j'ai bien l'id du client rentré en connexion dans mon url. tout va bien donc. Il ne me reste plus qu'un seul problème à résoudre, les données du client ne s'affichent pas malgré mon code

$sql = "select * from comptes_utilisateurs where ID_Utilisateur= 'ID_Utilisateur'";

// on envoie la requête 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

// on fait une boucle qui va faire un tour pour chaque enregistrement 
$row = mysql_fetch_assoc($req); 

echo 'id du client='.$row['ID_Utilisateur'].'<br> <br>'; 
echo 'nom du client='.$row['Nom_Utilisateur'].'<br> <br>'; 


J'essaie donc de trouver la solution, mais si quelqu'un la voit, il peut me le dire aussi Smiley rolleyes

Merci beaucoup pour votre aide et vos conseils, dès que j'aurais bien le temps, j'essaierai de comprendre pourquoi le header ne marche pas.

Une fois le problème de l'affichage des données du client, je vais m'attaquer à l'affichage d'une image spécifique à chaque client que l'admin aura rentré avant dans la bdd. Si quelqu'un a une idée pour ça (des tuto ou autre chose), qu'il me fasse signe, ce serait sympa.

Merci encore Smiley ravi
$sql = "select * from comptes_utilisateurs 
where ID_Utilisateur= 'ID_Utilisateur'";


devine ? Smiley cligne

c'est encore un probleme de quote. les id étant des chiffres et non des chaines de caracteres on ne met pas de quote autour.de plus tu dois utiliser ta variable.

dans destination16 tu l'appelles toujours $iduser?

si oui il faut ecrire

$sql = "select * from comptes_utilisateurs 
where ID_Utilisateur=".$iduser;

Modifié par CPascal (06 Jan 2008 - 17:03)
Pages :