PHP & BDD

besoin d'un coup de pouce pour une requête SQL
Invité n'ayant pas de compte PHPfrance

26 déc. 2010, 18:59

Bonjour,

Je suis un vrai débutant en PHP et j'ai besoin d'aide.

Je souhaite récupérer dans une base SQL "élèves" les infos correspondantes à la personne qui s'est identifier.

j'ai fait quelques essais avec 'WHERE' sans succès.
pourriez vous SVP me donner une solution.

voici le code que j'utilise:

<?php require_once('connexion.php'); ?>

<?php
session_start(); // On relaye la session
if (session_is_registered("authentification")){ 


}

else {
header("Location:index.php?erreur=intru"); // redirection en cas d'echec
}

//$nom = $_SESSION['nom'];

?>

<?php  // selection dans la base eleves

mysql_select_db($database_dbprotect, $bdd);

$query_users = "SELECT * FROM eleves WHERE  "; //  selection dans bdd

$users = mysql_query($query_users, $bdd) or die(mysql_error());
$row_users = mysql_fetch_assoc($users);

?>


Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

26 déc. 2010, 19:50

Bonjour, d'abord remettons un peu d'ordre dans l'algorithme:
1. si l'utilisateur est déjà authentifié, alors on exécute la requête par rapport à son identifiant
2. Sinon, on affiche une page d'erreur

Voici la réorganisation du code :
<?php 
session_start(); // On relaye la session (cette instruction doit être placée avant tout ECHO)
if (session_is_registered("authentification") && isset($_SESSION['nom'])){ // test si une session existe et si le champ nom existe dans cette session
   // sélection dans la base élèves
   require_once('connexion.php');
   $nom = $_SESSION['nom'];
   mysql_select_db($database_dbprotect, $bdd);
   $query_users = "SELECT * FROM eleves WHERE  nom = '" . $nom . "'"; //  sélection dans la bdd
   query($query_users, $bdd) or die(mysql_error());
   if ($row_users = mysql_fetch_assoc($users)){
         // ici, écrire le code qui traite les données récupérées de la bdd
         echo "Données élève trouvées";
   }
}
else {
   header("Location: index.php?erreur=intru"); // redirection en cas d'échec
    exit(); // ayez l'habitude d'arrêter l'exécution après un header de type Location (redirecteur d'URL)
}

?>
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Petit nouveau ! | 7 Messages

30 déc. 2010, 12:41

Bonjour,

je suppose qu'il faut remplacer query par mysql_query ?

Dans un deuxième temps, penser à traiter $nom (addslashes ou mieux mysql_real_escape_string) pour réduire le risque d'injection sql (ou de plantage simple de la requête si on a Scarlett O'Hara dans sa classe).

Attention aux magic_quotes, qui peuvent (ou non) être activées...et sont de toutes façons destinées à disparaître prochainement.

je sais qu'on est au niveau 'débutant', mais autant prendre les bonnes habitudes directement...

Finalement, tant qu'à débuter, il pourrait être pertinent d'utiliser l'extension mysqli (qui sera probablement celle qui subsistera au final). Il n'y a pas de grandes différences pour une première approche, mais mysqli propose plus de possibilités pour la suite.

Bien cordialement,

Xavier

Eléphant du PHP | 422 Messages

30 déc. 2010, 12:50

toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)