cs_chris tuckers
Messages postés137Date d'inscriptionjeudi 8 septembre 2005StatutMembreDernière intervention 7 mars 2008
-
15 sept. 2005 à 14:21
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 2015
-
15 sept. 2005 à 22:44
Bonjour, alors, c'est une question top urgente et je bloque dessus depuis ce matin. Dans une page, je désirais voir renseigner deux tables. Voici lapremière manipulation que j'ai fait et qui fonctionne :
<? include "_connexion.php" ?>
<?php
// On démarre la session
session_start();
$loginOK = false; // cf Astuce
// On n'effectue les traitement qu'à la condition que
// les informations aient été effectivement postées
if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) ) {
extract($_POST); // je vous renvoie à la doc de cette fonction
// On va chercher le mot de passe afférent à ce login $sql "SELECT * FROM clients WHERE cli_id '".addslashes($login)."'";
$req = mysql_query($sql) or die('Erreur SQL :
'.$sql);
// On vérifie que l'utilisateur existe bien
if (mysql_num_rows($req) > 0) {
$data = mysql_fetch_assoc($req);
// On vérifie que son mot de passe est correct
if ($password == $data['cli_pass']) {
$loginOK = true;
}
}
}
// Si le login a été validé on met les données en sessions
if ($loginOK) {
$_SESSION['cli_id'] = $data['cli_id'];
$_SESSION['cli_pass'] = $data['cli_pass'];
$_SESSION['cli_ste'] = $data['cli_ste'];
$_SESSION['cli_adresse'] = $data['cli_adresse'];
$_SESSION['cli_adresse2'] = $data['cli_adresse2'];
$_SESSION['cli_ville'] = $data['cli_ville'];
$_SESSION['cli_cp'] = $data['cli_cp'];
$_SESSION['cli_contact'] = $data['cli_contact'];
$_SESSION['cli_tel'] = $data['cli_tel'];
$_SESSION['cli_email'] = $data['cli_email'];
$_SESSION['cli_banque'] = $data['cli_banque'];
$_SESSION['cli_guichet'] = $data['cli_guichet'];
$_SESSION['cli_code'] = $data['cli_code'];
$_SESSION['cli_compte'] = $data['cli_compte'];
$_SESSION['cli_cle'] = $data['cli_cle'];
Maintenant, j'aimerais faire afficher des champs provenant de la table contrats. Je peux vous dire que la table clients est reliée à la table contrat par le cli_id. Quelle modification dois-je effectuer sur ma requete pour pouvoir faire afficher ces deux tables. Merci !!!!!
xactise
Messages postés507Date d'inscriptionmardi 18 février 2003StatutMembreDernière intervention22 juin 20122 15 sept. 2005 à 16:02
"Voici lapremière manipulation que j'ai fait "
bizard ce code me dit vaguement quelque chose es tu sur que TU la fait ;)
c sur que c'est pas evident de trifouiller les code des autres
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 15 sept. 2005 à 22:44
Mais non ! Mais non ! Mais non !
Combien de fois je vais devoir vous le répéter !!!! :D
extract($_POST); // je vous renvoie à la doc de cette fonction
On ne fait JAMAIS un extract d'une variable superglobal avec les
risques de sécurités qui s'y collent ! C'est pourtant compréhensible,
si on vire ca dans le php.ini, c'est certainement pas pour le voir dans
le script PHP !
// On va chercher le mot de passe afférent à ce login
$sql "SELECT * FROM clients WHERE cli_id '".addslashes($login)."'";
Double faux ! On recherche si le login ET le mot de passe existe pour 1
SEUL enregistrement ! De plus, on n'utilise pas SELECT * mais on nomme
ses champs !
Je te le refait ...
<?php
//je nomme pas les champs, débrouille toi pour ca :p
$sql "SELECT * FROM clients WHERE cli_id '".addslashes($login)."'" AND cli_pass = $password";
$query = mysql_query($sql);
if ( mysql_num_rows($sql) === 1 ) {
$data = mysql_fetch_array($sql);
foreach ($data as $key=>$val) {
$_SESSION[$key] = $val;
}
} else {
$error = true;
}
?>
C'est pas dur et c'est plus propre pourtant !
Pour ta question :
SELECT clients.cequetuveux, contrats.cequetuveux FROM clients, contrats WHERE clients.cli_id = contrats.cli_id