Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Php et mysql

2 réponses
Avatar
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 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

2 réponses

Avatar
Olivier Miakinen
Bonjour,

Le 25/03/2009 00:13, yassoux a écrit :

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.

<?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.

$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]'";

[...]
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.
Avatar
Sylvain SF
yassoux a écrit :
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.

$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.

$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'.

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).

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.

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.