PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 28-02-2014 09:56:50

kayorn
Membre
Inscription : 27-02-2014
Messages : 20

Requete SELECT WHERE avec une variable

Bonjour,

Malgré les recherches , je ne parviens pas à obtenir le résultat que j'attends.
Je voudrais afficher la fiche de l'avocat en fonction de la recherche par nom.
(la requête suivante marche bien mais affiche tous les avocats).

$reponse = $bdd->query('SELECT * FROM avocats ');

celle affiche correctement également:

$reponse = $bdd->query("SELECT * FROM avocats WHERE nom LIKE 'c%'");

J'aimerais afficher la même chose mais avec uniquement le nom choisi:

comment remplacer 'c%' par la variable transmise dans l'url?

je précise que le nom choisi dans le formulaire, passe bien dans l'url : 127.0.0.1/scripts/annuaire/affichage.php?nom=toto
Une  syntaxe que je ne parviens pas à trouver dans la masse des infos du web.
merci d'avance!

Dernière modification par kayorn (28-02-2014 11:10:56)

Hors ligne

#2 28-02-2014 16:37:04

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Requete SELECT WHERE avec une variable

Saluton,

Tout d'abord évitons de relancer la guerre des étoiles.

Ensuite 127.0.0.1/scripts/annuaire/affichage.php?nom=toto doit donner 'toto' dans $_GET['nom']

Donc (avec toutes les précautions à prendre quant à l'utilisation des données en provenance de l'extérieur)

$reponse = $bdd->query("SELECT noms_des_colonnes_qui_vont_bien FROM avocats WHERE nom= '". $_GET['nom']."'");


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 28-02-2014 18:11:24

kayorn
Membre
Inscription : 27-02-2014
Messages : 20

Re : Requete SELECT WHERE avec une variable

Maljuna Kris a écrit :

Saluton,

Tout d'abord évitons de relancer la guerre des étoiles.

J'ai viré l'étoile pour les noms des champs.

Et ça roule! mille merci!

Par ailleurs:

J'ai un doute profond concernant l'éventualité que le problème suivant surgisse :

L'internaute saisit , innocemment bien sûr Dupont avec T en croyant écrire Dupond avec D.
La requête ne va donc pas renvoyer Dupond qu'il croyait pourtant inscrit au Barreau!
Comment faire sortir Dupond de sa torpeur malgré lui?

Hors ligne

#4 28-02-2014 22:46:51

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Requete SELECT WHERE avec une variable

J'imagine que tu n'as rien contre un peu de lecture : L'art des « Soundex »


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 01-03-2014 13:01:46

kayorn
Membre
Inscription : 27-02-2014
Messages : 20

Re : Requete SELECT WHERE avec une variable

Ca a l'air passionnant, mais pour l'instant je galère avec le basique:

J'ai maintenant un : Notice: Undefined index: nom in je déclare pourtant $nom (...didjiu!) dans ma page d'affichage.
Tu n'aurais pas un lien vers un tuto sur ce genre de scripts basiques? c'est bien joli d'apprendre PHP, alors autant le faire avec des trucs bien expliqués pour les neuneu.

<?php

try
{
// Connexion MySQL
$bdd = new PDO('mysql:host=localhost;dbname=annuaire', 'root', '');
}
catch(Exception $e)
{
  // En cas d'erreur.
        die('Erreur : '.$e->getMessage());
}


 //récupération des valeurs des champs:
  //nom:
  $nom = $_GET["nom"] ;
  //prenom:
  $prenom = $_GET["prenom"] ;
  //competence :
  $competence = $_GET["competence"] ;
  //adresse 1:
  $adresse_1 = $_GET["adresse_1"] ;
  //adresse 2:
  $adresse_2 = $_GET["adresse_2"] ;  
  //adresse 3:
  $adresse_3 = $_GET["adresse_3"] ;
  //code :
  $code = $_GET["code"] ;
  //ville:
  $ville = $_GET["ville"] ;  
  //tel:
  $tel = $_GET["tel"] ;
  //fax:
  $fax = $_GET["fax"] ;  
  //mail:
  $email = $_GET["email"] ;  
  //web:
  $web = $_GET["web"] ;
 
 $nom = addslashes $_GET["nom"];
$prenom = addslashes($prenom);
$competence = addslashes($competence);
$adresse_1 = addslashes($adresse_1);
$adresse_2 = addslashes($adresse_2);
$adresse_3 = addslashes($adresse_3);
$code = addslashes($web);
$ville = addslashes($web);
$tel = addslashes($web);
$fax = addslashes($web);
$email = addslashes($email);
$web = addslashes($web);

 


// On récupère tout le contenu de la table avocats
$reponse = $bdd->query("SELECT * FROM avocats WHERE nom= '". $_GET['nom']."'");

//affichage
while ($donnees = $reponse->fetch())
{
?>

Hors ligne

#6 01-03-2014 13:49:19

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Requete SELECT WHERE avec une variable

$nom = addslashes $_GET["nom"];

Cette ligne devrait retourner un erreur de parsing, addslashes() étant une fonction dont les arguments doivent être parenthésés.

et à partir du moment où tu tranfères $_GET['nom'] dans $nom, cesse d'utiliser $_GET['nom'], sinon on ne va pas avancer.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#7 01-03-2014 18:26:54

kayorn
Membre
Inscription : 27-02-2014
Messages : 20

Re : Requete SELECT WHERE avec une variable

c'est bon j'ai trouvé l'erreur (si je te dis...)

Bon bref, j'en ai une autre maintenant, j'ai beau chercher, je n'ai plus les yeux en face des trous...

Parse error: syntax error, unexpected '[' in C:\wamp\www\annuaire\affichage.php on line 24

le bouzin complet sans le html.


<?php


  //connection au serveur
  $cnx = mysql_connect( "127.0.0.1", "root", "" ) ;
 
  //sélection de la base de données:
  $db  = mysql_select_db( "annuaire" ) ;
 

 //récupération des valeurs des champs:
 
   //nom:
  $nom = $_GET['nom'];
  //prenom:
  $prenom = $_GET['prenom'];
  //competence :
  $competence = $_GET['competence'];
  //adresse 1:
  $adresse_1 = $_GET['adresse_1'];
  //adresse 2:
  $adresse_2 = $_GET['adresse_2'];  
  //adresse 3:
  $adresse_3 = ['adresse_3'];
  //code :
  $code = $_GET['code'];
  //ville:
  $ville = $_GET['ville'];  
  //tel:
  $tel = $_GET['tel'];
  //fax:
  $fax = $_GET['fax'];  
  //mail:
  $email = $_GET['email'];
  //web:
  $web = $_GET['web'];
 
$nom = addslashes($nom);
$prenom = addslashes($prenom);
$competence = addslashes($competence);
$adresse_1 = addslashes($adresse_1);
$adresse_2 = addslashes($adresse_2);
$adresse_3 = addslashes($adresse_3);
$code = addslashes($code);
$ville = addslashes($ville);
$tel = addslashes($tel);
$fax = addslashes($fax);
$email = addslashes($email);
$web = addslashes($web);


// On récupère tout le contenu de la table avocats

$reponse = $bdd->query("SELECT nom,prenom,competence,adresse_1,adresse_2,adresse_3,code,ville,fax,tel,email,web FROM avocats WHERE nom= '". $_GET['nom']."'");

//affichage
while ($donnees = $reponse->fetch())
{

*********** html *************

<?php
}
$reponse->closeCursor(); // Termine le traitement de la requête

?>

 

Hors ligne

#8 01-03-2014 19:49:42

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Requete SELECT WHERE avec une variable

$adresse_3 = ['adresse_3'];

T'as pas l'impression qu'il manque quelque chose, là ?

D'autre part, pourquoi continues-tu à utiliser $_GET['nom'] dans la requête au lieu de $nom ?

$reponse = $bdd->query("SELECT nom,prenom,competence,adresse_1,adresse_2,adresse_3,code,ville,fax,tel,email,web FROM avocats WHERE nom= '". $_GET['nom']."'");


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#9 02-03-2014 07:39:20

kayorn
Membre
Inscription : 27-02-2014
Messages : 20

Re : Requete SELECT WHERE avec une variable

Bonjour,

Cest ok, j'ai vu l'erreur (vraiment...) et j'ai modifié la requête.
Je te remercie.

Je n'ai plus de pb d'insertion double en ayant supprimé Easy Php.
Donc je continue et j'aurais sûrement d'autres questions

A bientôt.

merci et bon dimanche.

Hors ligne

#10 08-03-2014 20:21:18

kayorn
Membre
Inscription : 27-02-2014
Messages : 20

Re : Requete SELECT WHERE avec une variable

Bonsoir,

J'ai repris tout le code avec un autre tuto (tant qu'à faire...)

J'ai un problème que j'avais évoqué plus haut mais que j'avais mal évalué.

Dans un cabinet d'avocats, 2 frères ou sœurs peuvent être associés.  Le test du  nom uniquement n'est pas valable.
Comment et à quel endroit vérifier nom et prénom.

voici le script:

<?php

/* Connexion à la base de données avec PDO */
include("MySQL_PDO_connect.php");


$nom = $_GET['nom'];
$prenom = $_GET['prenom'];
$competence = $_GET['competence'];
$adresse_1 = $_GET['adresse_1'];
$adresse_2 = $_GET['adresse_2'];
$adresse_3 = $_GET['adresse_3'];
$tel = $_GET['tel'];
$fax = $_GET['fax'];
$code = $_GET['code'];
$ville = $_GET['ville'];
$email = $_GET['email'];
$web = $_GET['web'];


// On ajoute une entrée dans la table liste à l’aide d’une requête préparée
$req = $dbh->prepare('INSERT INTO avocats(nom,prenom,competence,adresse_1,adresse_2,adresse_3,tel,fax,code,ville,email,web) VALUES(:nom, :prenom,:competence,:adresse_1,:adresse_2,:adresse_3,:tel,:fax,,:code,:ville,:email,:web, )');
$req->execute(array(
       
  'nom' => $nom,
  'prenom' =>$prenom,
  'competence' =>$competence,
  'adresse_1' =>$adresse_1,
  'adresse_2' =>$adresse_2,
  'adresse_3' =>$adresse_3,
  'tel' =>$tel,
  'fax' =>$fax,
  'code' =>$code,
  'ville' =>$ville,
  'email' =>$email,
  'web' =>$web
  ));


echo '<span style="color: red">Le visiteur a bien été ajouté !</span>';
// Fermeture de la connexion
$dbh = NULL;
}
?>

 

Hors ligne

#11 08-03-2014 20:27:43

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Requete SELECT WHERE avec une variable

kayorn a écrit :

Dans un cabinet d'avocats, 2 frères ou sœurs peuvent être associés.  Le test du  nom uniquement n'est pas valable.
Comment et à quel endroit vérifier nom et prénom.

La question fait probablement sens pour toi mais, en ce qui me concerne, et au vu du code joint, je ne vois pas à quoi elle se rattache.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#12 08-03-2014 20:33:26

kayorn
Membre
Inscription : 27-02-2014
Messages : 20

Re : Requete SELECT WHERE avec une variable

très juste, j'ai oublié de préciser que je ne voulais pas pouvoir insérer deux fois le même avocat. Le test du nom ne suffit donc pas car je pourrais insérer Durant Jean et pas Durant Paul . Par contre, si le nom + le prénom sont déjà dans la base, le script doit me bloquer l'insertion.

Dernière modification par kayorn (08-03-2014 20:34:18)

Hors ligne

#13 09-03-2014 01:54:21

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Requete SELECT WHERE avec une variable

Bonjour,
Si le test du nom ne vous suffit pas je doute que le couple {Nom,Prénom} soit une Clé Candidate pertinente car les homonymes existent et même ayant la même date de naissance. Comme suggéré dans le lien fourni, en sus de la clé primaire technique (en général auto-incrémentée), si vous souhaitez une clé candidate pertinente pour l'utilisateur, comme l'a suggéré SQLpro le numéro de sécurité sociale peut être un bon choix si votre application s'en tient à gérer des cabinets d'avocats enregistrés sur le territoire Français.

++

Dernière modification par Jc (09-03-2014 01:55:29)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#14 09-03-2014 07:09:32

kayorn
Membre
Inscription : 27-02-2014
Messages : 20

Re : Requete SELECT WHERE avec une variable

Bonjour,
Je comprends très bien que le couple choisi ne suffise pas dans l'optique de la création d'un annuaire gérant le territoire français. Heureusement car vu mon niveau, j'aurais eu tout intérêt à en confier le développement à un spécialiste!
Non, je ne vais entrer que les  avocats du Barreau d'Ajaccio, soit environ une centaine d'enregistrements, mais je tenais à profiter du petit projet pour apprendre à écrire des petits scripts qui tiennent à peu près la route.

Hors ligne

Pied de page des forums