Discussion:
Php et mysql
(trop ancien pour répondre)
yassoux
2009-03-24 23:13:17 UTC
Permalink
Bonjour,
Je dispose d'une base de donnée, composé d'une table avec une liste d'employés,
les tables sont reliés entre elles par une clé primaire qui est le numéro des
employés, ce que je désirerais serait via un formulaire qui interroge la base
comme celui çi :

<html>
<head>
<TITLE>Recuperer les infos</TITLE>
</head>
<body>
<form name="formulaire" action="" method="post">
<table>
<tr>
<td>num code : <input type="text" name="num_code" maxlength="12"></td>
</tr>
<td><input type="submit" name="validation" value="Valider"></td>
</table>
</form>
<?php
// lancement de la requête (on impose aucune condition puisque l'on désire
obtenir la liste complète des conducteurs)


$sql = "SELECT * FROM bdemployés WHERE `num_code`='".$_POST['num_code']."'";

// 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());

while ($data = mysql_fetch_array($req)) {
// on affiche les résultats
echo 'employé numéro : '.$data['num_code'].'<br />';
echo 'Prénom : '.$data['prenom'].'<br /><br />';
echo 'Nom : '.$data['nom'].'<BR/><BR/>';

}
mysql_free_result ($req);
mysql_close ();
?>

voila donc ce que j'ai produit et ce que j'aimerais savoir :
1) si je re-utilise ce code mais et que je change la table sur laquelle je
travail est ce que j'ai une solution pour que au lieu d'avoir le numéro du
conducteur j'ai leur nom et prénom qui s'affiche?
désolé si c'est pas trés compréhensible même moi je ne me comprend pas des fois
^^'
merci d'avance
Olivier Miakinen
2009-03-24 23:43:25 UTC
Permalink
Bonjour,
Post by yassoux
Je dispose d'une base de donnée, composé d'une table avec une liste d'employés,
[...]
<form name="formulaire" action="" method="post">
Je suppose qu'ici il y a une URL vers le traitement du formulaire.
Post by yassoux
<?php
// lancement de la requête (on impose aucune condition puisque l'on désire
obtenir la liste complète des conducteurs)
Et ça, je suppose que c'est dans le code s'occupant du traitement des
résultats, plutôt que dans le code affichant le formulaire. Je suppose
aussi que tu fais toutes les vérifications d'usage.
Post by yassoux
$sql = "SELECT * FROM bdemployés WHERE `num_code`='".$_POST['num_code']."'";
Puisqu'on est dans le groupe traitant de PHP et pas de base de données,
je te réponds sur le code PHP : je trouverais cette ligne plus lisible
si elle était écrite comme suit.
$sql = "SELECT * FROM bdemployés WHERE `num_code`='$_POST[num_code]'";
Post by yassoux
[...]
désolé si c'est pas trés compréhensible même moi je ne me comprend pas des fois
Oui, il m'a fallu vraiment du temps pour comprendre... à supposer que
j'aie vraiment compris. Si c'est le cas, alors il est probable que tu
cherches à faire un JOIN, et ta question sera alors en charte dans le
groupe fr.comp.applications.sgbd. Cela dit, si tu ne connaissais pas
la commande JOIN, peut-être que le fait de la connaître maintenant te
permettra de chercher dans un bouquin ou sur Internet plutôt que d'aller
poser la question sur Usenet.
Sylvain SF
2009-03-25 07:26:11 UTC
Permalink
Post by yassoux
Bonjour,
Je dispose d'une base de donnée, composé d'une table avec une liste d'employés,
les tables sont reliés entre elles par une clé primaire qui est le numéro [...]
quelles tables ? tu n'en décris (très vaguement) qu'une, sans dire ce
qu'elle contient.
Post by yassoux
$sql = "SELECT * FROM bdemployés WHERE `num_code`='".$_POST['num_code']."'";
$smt = "select * from bdemployés where num_code=$_POST['num_code']";

- c'est un statement (une requête) plus qu'un je-sais-pas-quoi-SQL.
- les caractères accentuées en nom de table sont une mauvaise idée.
- les '_' dans les noms de champ ne sont pas terribles, utiliser que
des min. ou un nommage "à la Java" (numCode), surtout ne pas mélanger
les règles une fois la convention choisie.
Post by yassoux
$req = mysql_query($sql) or die('Erreur '.mysql_error());
while ($data = mysql_fetch_array($req)){
fetch ne retourne pas un "data" mais une ligne, ou un
"record set", choisir plutôt 'ro' ou 'rs' ou 'row'.
Post by yassoux
echo 'employé numéro : '.$data['num_code'].'<br />';
echo 'Prénom : '.$data['prenom'].'<br /><br />';
echo 'Nom : '.$data['nom'].'<BR/><BR/>';
donc bdemployés contient au moins les 3 colonnes:
num_code, prenom et nom (éviter les mix FR / EN également).
Post by yassoux
1) si je re-utilise ce code mais et que je change la table sur laquelle je
travail est ce que j'ai une solution pour que au lieu d'avoir le numéro du
conducteur j'ai leur nom et prénom qui s'affiche?
sûrement mais ici tu as le numéro ET le nom ET le prenom,
je ne vois donc pas où le problème.
Post by yassoux
désolé si c'est pas trés compréhensible même moi je ne me comprend pas des fois
il serait utile de rendre compréhensible ce que tu demandes,
ça serait même un bon début.

Sylvain.

Loading...