carnet d'adresses avec base mysql

Eléphanteau du PHP | 29 Messages

21 déc. 2005, 15:11

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="&nbsp;";
                  echo "<td>$col</td>";
                }
          echo "</tr>";
        }
echo "</table>";

?>


Merci

Eléphant du PHP | 76 Messages

21 déc. 2005, 15:19

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="&nbsp;";
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...
La vie est une maladie mortelle sexuellement transmissible!

Eléphanteau du PHP | 29 Messages

21 déc. 2005, 15:25

magnifique ces couleurs ! :D

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

Mammouth du PHP | 19672 Messages

21 déc. 2005, 15:27

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 29 Messages

21 déc. 2005, 15:46

ok, ca marche

merci

Mammouth du PHP | 19672 Messages

21 déc. 2005, 16:34

[Résolu] :?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 29 Messages

21 déc. 2005, 16:40

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>";

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

21 déc. 2005, 16:47

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>

Eléphanteau du PHP | 29 Messages

21 déc. 2005, 17:06

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

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

21 déc. 2005, 17:20

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; 

Eléphanteau du PHP | 29 Messages

21 déc. 2005, 17:44

ç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="&nbsp;";
		  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();

?>

Mammouth du PHP | 19672 Messages

21 déc. 2005, 17:55

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 ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1029 Messages

21 déc. 2005, 17:59

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? :-k
L'expérience est la somme de toutes nos erreurs.

Mammouth du PHP | 19672 Messages

21 déc. 2005, 18:08

Ici :
$id = (isset($_GET['id']) ? $_GET['id'] : "id non défini"); 
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 29 Messages

21 déc. 2005, 18:41

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