ID encore et toujours absent ? ? ?

Fermé
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 - 4 févr. 2011 à 20:05
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 - 6 févr. 2011 à 16:22
Bonjour,
Ça me gaaaaave ! j'avais le même souci sur une autre page et ça été réglé par hasard (je dis bien par hasard !). Vous avez tenté de m'aider ici même mais sans résultat probant. Je souhaite afficher la fiche complète en partant d'une liste dont le début est un lien (voir ici: http://soeix.free.fr/Clients/Liste_Clients.php )
NOTE: Vous pouvez faire autant d'essais que vous voudrez en partant du formulaire de départ ici: http://soeix.free.fr/index.php?page=Administration_Bases&lang=Fr (user= test et pass= toto.
Note2: le formulaire d'identification est toujours visible au bas de la nouvelle page alors qu'il était caché jusqu'alors (?). Autre mystère.
<?php
// On recupere la variable "id" correspondant au client choisi
//ce script est appelé par un click sur le lien alors l'id est passé par l'URL donc en GET 
$id = $_GET['ID']; // on récupère la requete par la variable $_GET
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <?php
// on prends les infos de connexion sur le fichier Fonctions_Clients.php
require 'Fonctions_Clients.php';  
require 'Fonction_Change_Date.php';
$maj = ($maj['MaJ'strftime("%d %B %Y à %H:%M:%S")]); // formatage de la date en français avec jour, mois entier, heure, minute et secondes

// connection à la DB
$link = mysql_pconnect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); // connection à la base
mysql_select_db('dbclients',$db) or die ('Impossible de se connecter à la base'); // sélection de la table

// requête SQL qui affiche les infos de la fiche correspondante au lien cliqué 
$select = "SELECT Groupe, Hebergement, N_Client, P_Client, Ville, CP, Numero, Choix, Adresse, Phone, Mobilphone, Fax, Email, Date, Comment, MaJ FROM dbclients WHERE ID='$id'"; // On selectionne seulement la ligne qui correspond à la fiche choisie. 
$query = mysql_query($select)  or die ('Erreur : '.mysql_error() );
$row= mysql_fetch_array($query);  // mysql_fetch_array génère un tableau correspondant a la ligne selectionnée de la BDD

// on affiche  la fiche dans un tableau dynamique.. 
	echo '<table width="90%" align="center" border="0" cellspacing="0" cellpadding="6">';   // on affiche un tableau
	echo '<tr><td>'.$row["Groupe"].'&nbsp;&nbsp;<i>'.$row["Hebergement"].'</i></td></tr>';  // on affiche les variables Groupe et Hébergement
Je ne veux pas que vous me corrigiez bêtement le code mais je veux COMPRENDRE ce qui se passe. Éventuellement que vous m'ajoutiez des commentaires aux bons endroits que je vois une bonne fois pour toutes où je pêche ! Si vous voulez plus de code des autres pages dites me le tout simplement.
Je tiens ici à remercier tout particulièrement duweb et arthezius pour l'aide qu'ils m'ont apporté jusqu'ici.
Merci d'avance à tous ceux qui pourraient me faire avancer.





Le bonheur est la seule chose que l'on peut donner sans l'avoir.

6 réponses

avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 503
5 févr. 2011 à 13:44
Salut.

Il nous faudrait le code de la page Liste_Clients.php et pas Fiche_Clients.php et également la structure de la table.

Dans Fiche_Clients.php, si le champ ID est bien de type INT, il ne faut pas mettre de guillemets autour de sa valeur.
Mais ce n'est pas ça qui résoudra le problème car il n'y a pas l'ID dans le lien de la page Liste_Clients.php.
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
5 févr. 2011 à 15:19
Salut et merci avion-f16,
Voici un extrait du code de Liste_Clients.php:
<?php
// On recupere la variable "id" correspondant à l'événement choisi
// ce script est appelé par un click sur le lien alors l'id est passé par l'URL donc en GET 
$id = $_GET['ID']; // on récupère la variable $id par la méthode $_GET
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php  
// appel au fichier fonctions_Clients.php séparé pour afficher ou non les boutons Suivant Précédent si + de 20 lignes (limitées à 20/page)
require 'Fonctions_Clients.php';
require 'Fonction_Change_Date.php'; // converti le format de date de la table au format français.

// initialisation des variables 
$nombre = 20;  // on va afficher 20 résultats par page.
// requête SQL qui ne prend que le nombre d'enregistrement necessaire à l'affichage.
$req = 'SELECT * FROM dbclients ORDER by ID DESC limit '.$limite.','.$nombre; // on affiche les événements dans l'ordre décroissant
$result = mysql_query($req)  or die ('Erreur : '.mysql_error() );

if ($total) 
{	
// on affiche un  tableau avec la liste des événements
	echo "<table id='client' width='75%' cellspacing='0' cellpadding='0' align='center'>";
// on affiche les entêtes du tableaux.
	echo '<tr><td width="10%" align="center" class="clients"><strong> Nom </strong>&nbsp;</td><td width="10%" align="center" class="clients">&nbsp;<strong> Prénom </strong></td><td width="10%" align="center" class="clients"><strong> Structure </strong></td><td width="15%" align="center" class="clients"><strong> Ville </strong></td><td width="5%" align="center" class="clients"><strong> C.P. </strong></td><td width="10%" align="center" class="clients"><strong> Téléphone </strong></td><td width="15%" align="center" class="clients"><strong> Mise à jour </strong></td></tr>';

// lecture et affichage des résultats en faisant une boucle pour parcourir toute la table. On affichera les boutons Suivant et Précédent si la limite est supérieure à 20
    while($row = mysql_fetch_array($result)) 
	{
	echo '<tr><td width="10%" class="clients"><a href="Fiche_Clients.php?ID="$id"">&nbsp;'.$row['N_Client'].'&nbsp;</a></td><td width="10%" class="clients">'.$row['P_Client'].'</td></td><td width="10%" class="clients"><i> '.$row['Groupe'].'</i></td><td width="15%" class="clients"> '.$row['Ville'].'</td><td width="5%" class="clients"> '.$row['CP'].'</td><td width="10%" class="clients"> '.$row['Phone'].'</td><td width="15%" class="clients"><i class="red"> '.$row['MaJ'].'</i></td></tr>';
	}   
	echo "</table>";

Dans Fiche_Clients.php, si le champ ID est bien de type INT, il ne faut pas mettre de guillemets autour de sa valeur.: J'ai essayé les deux; si je mets ID=$id ça m'affiche =$id dans l'url. (INT(11) NOT NULL et auto increment)
Autre chose:
$maj = ($maj['MaJ'strftime("%d %B %Y à %H:%M:%S")]); // formatage de la date en français avec jour, mois entier, heure, minute et secondes
Cette syntaxe est-elle correcte ?
... car il n'y a pas l'ID dans le lien de la page Liste_Clients.php. Et en gras dans ce code, c'est quoi ? Mal écrit peut-être ?. Eh ben oui, c'est bien ça le Pb. Ca fonctionne sur un autre site (d'ailleurs tu m'avais aidé pour celui là aussi et ça c'est mis à fonctionner miraculeusement un jour et Dieu sait pourquoi ?

Ça commence à me prendre la tête ces transmissions de variables... Merci encore !
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 503
5 févr. 2011 à 15:28
Dans Liste_Clients.php

$id = $_GET['ID']; // on récupère la variable $id par la méthode $_GET
Il n'y a pas de variable ID dans l'URL pour la liste des clients.

echo '...<a href="Fiche_Clients.php?ID="$id"">...';
Voilà la partie qui bloque tout.
$id a précédemment été déclaré à partir d'une variable GET inexistante.
De plus, cette variable serait constante puisqu'elle n'est pas redéfinie pour chaque utilisateur dans la boucle.
C'est $row['ID'] qu'il faut utiliser.
Et comme tu utilises les guillemets simples (apostrophes), il faut utiliser la concaténation.

Dans Fiche_Clients.php, si le champ ID est bien de type INT, il ne faut pas mettre de guillemets autour de sa valeur.: J'ai essayé les deux; si je mets ID=$id ça m'affiche =$id dans l'url. (INT(11) NOT NULL et auto increment)
Je te parle de la fiche du client, pas de la liste des clients.
Donc je ne vois pas de quelle URL tu parles.
Je n'ai peut-être pas été très clair, je parlais de la requête SQL.

Pour la syntaxe du formatage, elle est incorrecte.
Essaye avec ça :
$maj = strftime("%d %B %Y à %H:%M:%S", $maj['MaJ']);
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
5 févr. 2011 à 16:49
Bon,
Il n'y a pas de variable ID dans l'URL pour la liste des clients.
Ben c'est normal puisqu'il s'agit d'une liste, chaque ligne devant (ou qui devrait) avoir son propre id.
J'ai fait des modifs que tu me propose. Résultat, dans l'url Fiche_Clients.php voici ce que j'ai (tu peux le voir par toi même): htp://soeix.free.fr/Clients/Fiche_Clients.php?ID=$id et voici le select de la fiche clients:
$select = "SELECT Groupe, Hebergement, N_Client, P_Client, Ville, CP, Numero, Rue, Adresse, Phone, Mobilphone, Fax, Email, Date, Comment, MaJ FROM dbclients WHERE ID='$id'"; // On sélectionne seulement la ligne qui correspond à la fiche choisie. 

si je mets ID=$id ça m'affiche =$id dans l'url.
Je te parle de la fiche du client, pas de la liste des clients.

Ben moi aussi. Essaie de cliquer sur un nom dans la liste: tu aura ce qui est en gras ci-dessus.
Je vais péter un câble ! arghhhh !

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 503
5 févr. 2011 à 20:05
Si tu ne lis que la moitié de mes messages, ça ne va pas aller !!

$id est affiché dans l'URL car tu n'utilises pas la concaténation avec les guillemets simples (simple quotes - ou les apostrophes).
Voilà l'echo du lien dans la liste des clients :
cho '...<a href="Fiche_Clients.php?ID='.$row['ID'].'">...';


Pour la requête SQL :
$select = "SELECT Groupe, Hebergement, N_Client, P_Client, Ville, CP, Numero, Rue, Adresse, Phone, Mobilphone, Fax, Email, Date, Comment, MaJ FROM dbclients WHERE ID=$id";
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
5 févr. 2011 à 20:45
Bonsoir,
Eh ben tu sais pas ? J'avais déjà écrit exactement comme toi sans plus de succès ! c'est pourquoi j'ai posté ici. C'est à n'y rien comprendre. Et ça m'épuise et surtout ça commence a urger maintenant !
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 503
5 févr. 2011 à 22:16
Exactement ? Quel hasard !
Dans les liens sur la liste des clients, que vois-tu dans l'URL, après "?ID=" ?
S'il n'y a rien, fait un var_dump de $row pour vérifié si l'entrée ID y est bien.
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
6 févr. 2011 à 16:22
Bonjour avion f-16 et merci pour ta patience,
Ce que je ne comprends pas dans le cas présent c'est que nous sommes en train de lire le contenu d'une table. OK ?
// requête SQL qui ne prend que le nombre d'enregistrement necessaire à l'affichage.
$req = 'SELECT * FROM dbclients ORDER by ID DESC limit '.$limite.','.$nombre; // on affiche les clients dans l'ordre décroissant
$result = mysql_query($req)  or die ('Erreur : '.mysql_error() );
Le select * doit bien récupérer l'id or si on affiche le source da la page Liste_Clients.php, cet id est absent (<tr><td width="10%" class="clients"><a href="Fiche_Clients.php?ID="> etche </a></td><td width="10%" class="clients">titi</td></td><td width="10%" class="clients"><i> association</i></td><td width="15%" class="clients"> </td><td width="5%" class="clients"> 64400</td><td width="10%" class="clients"> </td><td width="15%" class="clients"><i class="red"> 0000-00-00 00:00:00</i></td></tr><tr>).
Tous les Pb viennent de là mais pourquoi je n'ai pas l'id ?
Je continue mes recherches mais tu dois savoir que j'ai tout essayé (bien qu'étant débutant en php et c'est la raison pour laquelle certaines choses m'échappent totalement, malgré les excellents tutos du site du zéro !)
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
Je pense à une chose:
mon site est conçu de telle sorte que toutes les pages passent par index.php qui contient des includes et nécessite une session. Or ici, je l'ouvre sans passer par exemple par /index.php?page=Ma_Page&lang=Fr (http://soeix.free.fr/index.php?page=Administration_Bases&lang=Fr Est ce que ça pourrait poser un Pb particulier (il faut noter que maintenant si on s'authentifie, on affiche bien le formulaire caché mais celui de l'authentification, qui se trouve sur la même page, est toujours visible en bas !)
Je vais finir par vous envoyer ces pages pour corrections éventuelles. Sans doute que ça vous sautera aux yeux à vous ?
Merci encore !
0