Page 1 sur 2
carnet d'adresses avec base mysql
Posté : 21 déc. 2005, 15:11
par bobivienla
bonjour,
je suis en train de créer un carnet d'adresses avec environ 10 champs
Lorsque j'affiche la liste complete, je ne fais apparaitre uniquement que 4 champs et j'aimerai que lorsqu'on clique sur le nom de la personne ou sur un lien, on est la fiche avec les autre s champs et la possiblité de modifier cette fiche.
Je cherche de l'aide pour créer ce lien de la liste vers la fiche détaillé
Voici mon fichier :
<?php
$dbhost="localhost";
$dblogin="root";
$dbpassword="xxxxxxx";
$dbname="annuaire";
$id=$_GET["id"];
mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_selectdb($dbname);
$res=mysql_query("SELECT nom_type, nom, societe, telephone FROM contact ")
;
$nbrligne = mysql_num_rows ($res); //renvoie le nbre de lignes
$nbrchamp=mysql_num_fields($res);
echo"<br>";
echo"<br>";
echo"<br>";
echo "<p><p><table border=4 align=bottom cellpadding=6 cellspacing=2 width
=\100%\">";
for ($i=0;$i<4;$i++) {
printf("<th>%s</th>",mysql_field_name($res,$i));
}
echo "<th>Fiche détaillée</th>";
for ($i=0;$i<$nbrligne;$i++)
for ($i=0;$i<$nbrligne;$i++)
{
$row=mysql_fetch_row($res);
echo "<tr>";
foreach($row as $col)
{
if (!$col) $col=" ";
echo "<td>$col</td>";
}
echo "</tr>";
}
echo "</table>";
?>
Merci
Posté : 21 déc. 2005, 15:19
par Min's
Colorization du code pour relecture facile
<?php
$dbhost="localhost";
$dblogin="root";
$dbpassword="xxxxxxx";
$dbname="annuaire";
$id=$_GET["id"];
mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_selectdb($dbname);
$res=mysql_query("SELECT nom_type, nom, societe, telephone FROM contact ")
;
$nbrligne = mysql_num_rows ($res); //renvoie le nbre de lignes
$nbrchamp=mysql_num_fields($res);
echo"<br>";
echo"<br>";
echo"<br>";
echo "<p><p><table border=4 align=bottom cellpadding=6 cellspacing=2 width
=\100%\">";
for ($i=0;$i<4;$i++) {
printf("<th>%s</th>",mysql_field_name($res,$i));
}
echo "<th>Fiche détaillée</th>";
for ($i=0;$i<$nbrligne;$i++)
for ($i=0;$i<$nbrligne;$i++)
{
$row=mysql_fetch_row($res);
echo "<tr>";
foreach($row as $col)
{
if (!$col) $col=" ";
echo "<td>$col</td>";
}
echo "</tr>";
}
echo "</table>";
?>
Alors sélection en plus l'id de la personne.
Pas besoin de l'afficher réellement mais c'est le paramètre que tu donneras à ton lien. ENsuite dans la page affiche_detail.php par exemple, il te suffira de faire un 'select * from contact where id='.$_GET['id'] pour ne plus avoir qu'un seul enregistrement...
Posté : 21 déc. 2005, 15:25
par bobivienla
magnifique ces couleurs !
je n'arrive pas a trouvé l'endroit ou insérer ce lien dans mon code, soit sur le nom ou soit un lien à chaque ligne dans la liste,
je préfereai avoir un lien la ou j'ai créé un champ Fiche détaillé
merci
Posté : 21 déc. 2005, 15:27
par Cyrano
Réfléchis trente seconde et pense à quoi doit ressembler le code html en sortie: fais-toi un fichier html exemple de ce que tu veux opbtenir en mettant des valeurs bidons juste pour avoir la structure du code à produire.
Ensuite, reprends ce code et intègre-le dans ton PHP en remplaçant tes valeurs bidons par les variables correspondant aux champs.
Posté : 21 déc. 2005, 15:46
par bobivienla
ok, ca marche
merci
Posté : 21 déc. 2005, 16:34
par Cyrano
[Résolu]

Posté : 21 déc. 2005, 16:40
par bobivienla
pas tout a fait,
sur mon lien , il ne veut pas prendre en compte l'id
echo "<td><a href=fiche.php?id=$id>détails</td>";
Posté : 21 déc. 2005, 16:47
par albat
La bonne syntaxe est :
<?php
echo "<td><a href=fiche.php?id=".$id.">détails</td>";
?>
ou mieux encore :
<td><a href=fiche.php?id=<?php echo $id; ?>>détails</td>
Posté : 21 déc. 2005, 17:06
par bobivienla
ca ne fonctionne pas, il ne m'affiche pas la fiche détaillée
j'ai essayé avec les deux syntaxe, il ne prend pas l'id
Posté : 21 déc. 2005, 17:20
par albat
C'est donc que le problème se situe en amont.
Cela étant, il reste fortement conseillé d'utiliser une des deux syntaxes que je t'ai proposées.
Remplace :
$id=$_GET["id"];
par :
$id = (isset($_GET['id']) ? $_GET['id'] : "id non défini");
echo $id;
Posté : 21 déc. 2005, 17:44
par bobivienla
ça ne fonctionne tjs pas,
voici mes deux fichiers
Fichier qui liste les contacts
<?php
$dbhost="localhost";
$dblogin="root";
$dbpassword="xxxxx";
$dbname="annuaire";
mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_selectdb($dbname);
$res=mysql_query("SELECT id, nom_type, nom, societe, telephone FROM contact ");
$nbrligne = mysql_num_rows ($res);
$nbrchamp=mysql_num_fields($res);
echo"<br>";
echo"<br>";
echo"<br>";
echo "<p><p><table border=4 align=bottom cellpadding=6 cellspacing=2 width=\100%\">";
for ($i=0;$i<5;$i++) {
printf("<th>%s</th>",mysql_field_name($res,$i));
}
echo "<th>Fiche détaillée</th>";
for ($i=0;$i<$nbrligne;$i++)
{
$row=mysql_fetch_row($res);
echo "<tr>";
foreach($row as $col)
{
if (!$col) $col=" ";
echo "<td>$col</td>";
}
echo "<td><a href=fiche.php?id=".$id.">détails</td>";
echo "</tr>";
}
echo "</table>";
?>
Fiche détaillée d'un contact
<?php
$dbhost="localhost";
$dblogin="root";
$dbpassword="xxxxx";
$dbname="annuaire";
$id = (isset($_GET['id']) ? $_GET['id'] : "id non défini");
echo $id;
//$id=$_GET["id"];
mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_select_db($dbname);
$result=mysql_query("SELECT * FROM contact WHERE id='$id'");
if ($row=mysql_fetch_array($result))
{
echo "Type : " . $row["nom_type"] . "<br>";
echo "Nom : " . $row["nom"] . "<br>";
echo "Societe : " . $row["societe"] . "<br>";
echo "Adresse : " . $row["adresse"] . "<br>";
echo "Code postal : " . $row["codepostal"] . "<br>";
echo "Ville : " . $row["ville"] . "<br>";
echo "Pays : " . $row["pays"] . "<br>";
echo "Telephone : " . $row["telephone"] . "<br>";
echo "Fax : " . $row["fax"] . "<br>";
echo "Fonction : " . $row["fonction"] . "<br>";
echo "E-mail : " . $row["email"] . "<br>";
echo "Portable : " . $row["portable"] . "<br>";
echo "Secrétaire : " . $row["secretaire"] . "<br>";
echo "Service : " . $row["service"] . "<br>";
} else {
echo "Désolé, mais cet utilisateur est inconnu<br>";
}
mysql_close();
?>
Posté : 21 déc. 2005, 17:55
par Cyrano
BOn, on va commencer avec le second fichier, proposition de modification:
<?php
$dbhost="localhost";
$dblogin="root";
$dbpassword="xxxxx";
$dbname="annuaire";
$id = (isset($_GET['id']) ? $_GET['id'] : "id non défini");
echo $id;
//$id=$_GET["id"];
mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_select_db($dbname);
$result = mysql_query("SELECT * FROM contact WHERE id='$id'");
if(mysql_num_rows($result) > 0)
{
$row = mysql_fetch_array($result);
echo "Type : " . $row["nom_type"] . "<br>\n";
echo "Nom : " . $row["nom"] . "<br>\n";
echo "Societe : " . $row["societe"] . "<br>\n";
echo "Adresse : " . $row["adresse"] . "<br>\n";
echo "Code postal : " . $row["codepostal"] . "<br>\n";
echo "Ville : " . $row["ville"] . "<br>\n";
echo "Pays : " . $row["pays"] . "<br>\n";
echo "Telephone : " . $row["telephone"] . "<br>\n";
echo "Fax : " . $row["fax"] . "<br>\n";
echo "Fonction : " . $row["fonction"] . "<br>\n";
echo "E-mail : " . $row["email"] . "<br>\n";
echo "Portable : " . $row["portable"] . "<br>\n";
echo "Secrétaire : " . $row["secretaire"] . "<br>\n";
echo "Service : " . $row["service"] . "<br>\n";
}
else
{
echo "Désolé, mais cet utilisateur est inconnu<br>";
}
mysql_close();
?>
Et je te signale en passant que j'ai viré tes mots de passe, on est sur un forum public ici

Posté : 21 déc. 2005, 17:59
par Maitrepylos
Pardonner moi, mais comme je veux toujours apprendre, il initialisé où le $id
echo "<td><a href=fiche.php?id=".$id.">détails</td>";
, je suis d'accord avec ça mais je ne vois pas où $id prend sa valeur?

Posté : 21 déc. 2005, 18:08
par Cyrano
Ici :
$id = (isset($_GET['id']) ? $_GET['id'] : "id non défini");
Posté : 21 déc. 2005, 18:41
par bobivienla
le probleme vient du premier fichier liste.php car lorque je clic sur le lien détails pour avoir la fiche détaillée, il m'affiche " Désolé, mais cet utilisateur est inconnu" alors qu'il existe
et lorsque que je tape
http://localhost/fiche.php?id=2 ca fonctionne, j'ai la fiche détaillée du contact
voila