Probleme SQL

Eléphant du PHP | 57 Messages

08 déc. 2011, 12:30

Bonjour

Je suis en train de travailler sur un espace membre mais je n'arrive pas a recuperer les information depuis ma BDD SQL de phpmyadmin.

Donc ma table est nommé ==> MEMBRE

Mon champ est nommé ==> TESTE


donc voici le fichier MEMBRE.PHP que je voudrais utiliser je voudrais recuperer dans la value du champ de formulaire plus bas l'info dans ma base SQL

Code : Tout sélectionner

<?php session_start(); if (!isset($_SESSION['login'])) { header ('Location: index.php'); exit(); } ?> <html> <head> <title>Espace membre</title> </head> <body><center> Bienvenue <?php echo htmlentities(trim($_SESSION['login'])); ?> !<br /> <br /> <br /> <br /> <tr> <td><input size="50" name="screen" value="?????????? ICI ??????????????" type="text"></td> </tr> </tbody></table> <a href="deconnexion.php">Déconnexion</a></center> </body> </html>

comment dois je proceder ?

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

08 déc. 2011, 12:53

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

Eléphant du PHP | 57 Messages

08 déc. 2011, 23:39

Merci a vous je vais explorer ça

Eléphant du PHP | 57 Messages

09 déc. 2011, 01:21

bon voila j'ai reussi mais j'ai un probleme que je n'ai pas reussi a trouver

j'ai monter ça comme ça

Code : Tout sélectionner

<?php session_start(); if (!isset($_SESSION['login'])) { header ('Location: index.php'); exit(); } ?> <?php // on se connecte à notre base $base = mysql_connect ('localhost', 'login', 'mot de passe'); mysql_select_db ('ma base', $base) ; ?> <?php // lancement de la requete $sql = 'SELECT teste1, teste2 , teste3, teste4 FROM membre'; // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); // on recupere le resultat sous forme d'un tableau $data = mysql_fetch_array($req); // on libère l'espace mémoire alloué pour cette interrogation de la base mysql_free_result ($req); mysql_close (); ?>

donc la ça marche marche mais le probleme est que si je me connecte sur mon pseudo j'ai les valeurs du champ et si je relance une insription sous un autre pseudo dans la base de donnée les champ teste1 teste2 teste3 teste 4 sont vide jusque la normal mais lorsque je me connecte sur le pseudo de la nouvelle inscription il prend les valeurs du premier inscrit

comment faire pour relier les valeurs a chaque pseudo de session

ViPHP
xTG
ViPHP | 7331 Messages

09 déc. 2011, 08:08

On enregistre en session lors de la connexion un élément qui identifie l'utilisateur de façon unique, généralement la clé primaire de la table membre.
Ensuite dans les requêtes rapatriant des informations concernant le membre on ajoute en clause WHERE cette clé comme condition de récupération.

Exemple :
$sql = "SELECT pseudo, email, avatar
FROM membre
WHERE id = " . mysql_real_escape_string($_SESSION['id']);
N.B : la fonction mysql_real_escape_string() permet de protéger les variables que tu utilises dans une requête.

Eléphant du PHP | 57 Messages

09 déc. 2011, 08:40

merci je vais essayer ça

Eléphant du PHP | 57 Messages

09 déc. 2011, 09:23

bon j'ai essayer ça ci dessous par rapport a la reponse ci dessus mais probleme je ne recupere pas du tout le contenu du champ TESTE

Code : Tout sélectionner

<?php // lancement de la requete $sql = 'SELECT teste FROM membre WHERE id="'.mysql_escape_string($_SESSION['id']).'"'; // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); // on recupere le resultat sous forme d'un tableau $data = mysql_fetch_array($req); // on libère l'espace mémoire alloué pour cette interrogation de la base mysql_free_result ($req); mysql_close (); ?>

ViPHP
xTG
ViPHP | 7331 Messages

09 déc. 2011, 11:47

Ta table contient bien le n-uplet : ($_SESSION['id'], "un message teste") ?
Vérifies la valeur de $_SESSION['id'] que tu retrouves dans le code et celle enregistrée dans ta table.

Comment réutilises-tu $data ?

Eléphant du PHP | 57 Messages

09 déc. 2011, 13:13

pour info des que je retire =>WHERE id="'.mysql_escape_string($_SESSION['id']).'"'
la je recupere bien la valeur du champ mais toujour sur l'ID 1 meme si je me connecte sur le compte ID:3 ou 2


Pour le champ id voila requete SQL :

SELECT *
FROM `membre`
ORDER BY `membre`.`id` ASC
LIMIT 0 , 30



je recupere le $data


<tr>

<td><input name="screen" value="<?php echo $data['teste']; ?>" size="50" type="text" ></td>

</tr>

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

09 déc. 2011, 14:01

Fait voir le code vérification du formulaire.
Et un desc membre (à utiliser dans un fenêtre Sql de phpmyadmin copie / colle le résultat ici)

Plutôt que d'utiliser la balise code. Peux tu utiliser la balise
 pour avoir la colorisation du code  ? ;)

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

ViPHP
xTG
ViPHP | 7331 Messages

09 déc. 2011, 14:18

pour info des que je retire =>WHERE id="'.mysql_escape_string($_SESSION['id']).'"'
la je recupere bien la valeur du champ mais toujour sur l'ID 1 meme si je me connecte sur le compte ID:3 ou 2
Une requête SQL sans clause WHERE équivaut à récupérer TOUT le contenu de la table.
Donc tu n'as pas d'informations relatives aux comptes d'id 2 et 3 tout simplement.
Essaies avec le compte d'id 1 et tu devrais récupérer quelque chose.

Eléphant du PHP | 57 Messages

09 déc. 2011, 16:29

oui en effet je recupere les infos du champ sur ID1 mais des que je passe sur un autre login exemple ID 2 je recupere les infos toujours de l'ID1

Eléphant du PHP | 57 Messages

09 déc. 2011, 21:04

bon j'ai reussi a trouver je devais passer par $session login et non $session id

Eléphant du PHP | 57 Messages

10 déc. 2011, 00:27

j'ai explorer maintenant la commande servant a mettre les champs a jour en utilisant la requete UPDATE mais je sais pas trop comment placer ça


comment dois je aussi placer la requete UPDATE ??? si exemple je modifie un des champ pour envoyer en MAJ sur la base de donnée

Voici le contenu de ma page MEMBRE.PHP


Code : Tout sélectionner

<?php session_start(); if (!isset($_SESSION['login'])) { header ('Location: index.php'); exit(); } ?> <?php // on se connecte à notre base $base = mysql_connect ('localhost', 'login', 'pass'); mysql_select_db ('ma base', $base) ; ?> <?php // lancement de la requete $sql = 'SELECT teste1, teste2, teste3, teste4 FROM membre WHERE login="'.mysql_escape_string($_SESSION['login']).'"'; // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); // on recupere le resultat sous forme d'un tableau $data = mysql_fetch_array($req); // on libère l'espace mémoire alloué pour cette interrogation de la base mysql_free_result ($req); mysql_close (); ?> <html> <head> <title>Espace membre</title> </head> <body><center> Bienvenue <?php echo htmlentities(trim($_SESSION['login'])); ?> !<br /> <br /> <br /> <br /> <form action="membre.php" method="post"> <table> <tr> <td><input name="teste1" value="<?php echo $data['teste1']; ?>" size="50" type="text" ></td> </tr> <tr> <td><input name="teste2" value="<?php echo $data['teste2']; ?>" size="50" type="text" ></td> </tr> <tr> <td><input name="teste3" value="<?php echo $data['teste3']; ?>" size="50" type="text" ></td> </tr> <tr> <td><input name="teste4" value="<?php echo $data['teste4']; ?>" size="50" type="text" ></td> </tr> </tbody></table> </form> <a href="deconnexion.php">Déconnexion</a></center> </body> </html>

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

10 déc. 2011, 01:40

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