ID absent Pourquoi ? [php]
txiki
Messages postés
6596
Date d'inscription
Statut
Contributeur
Dernière intervention
-
txiki Messages postés 6596 Date d'inscription Statut Contributeur Dernière intervention -
txiki Messages postés 6596 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un souci avec mes recettes (3 tables; tapas, ingredients et photos_recettes).
En début de page j'ai mis ceci:
Puis ma requête:
Seulement, quand on va sur Recettes/Les Tapas-test (5 pour le moment) quel que soit le lien cliqué, ça me renvoi TOUJOURS la première (Albondigas) et pour cause ! si on regarde l'url, il n'y a pas d'ID. Je déduis qu'il n'est pas récupéré, non ? Mais pourquoi ?
http://txiki.free.fr/index.php?page=Fiche_Recette&lang=Fr&id=
Ce ne serait pas la première fois. Pourtant je me suis inspiré de la page Prénoms/Prénoms basques qui, elle, fonctionne parfaitement.
Quelqu'un aurait l'amabilité de me regarder ce code et, éventuellement, plus (de code) si besoin ?
Merci d'avance pour votre aide.
En plus les photos ne s'affichent pas mais on verra ça plus tard.
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
J'ai un souci avec mes recettes (3 tables; tapas, ingredients et photos_recettes).
En début de page j'ai mis ceci:
// ============================================================== // On recupere la variable "id" correspondant à la recette choisie // ============================================================== $id=$_GET['id']; // La manipulation de $id est plus simple que celle de $_POST["id"]
Puis ma requête:
//=========================================== // requête SQL qui affiche les infos de la fiche correspondante au lien cliqué //================================================ $link = '$link'; // On fait une jointure sur trois tables (tapas, ingredients et photos_recettes) avec seulement la ligne qui correspond à la recette choisie // SELECT * FROM `tapas` // LEFT JOIN `ingredients` ON (instruction) // LEFT JOIN `photos_recettes` ON (instruction) $select = "SELECT * FROM `tapas` LEFT JOIN `ingredients` ON (ingredients.id = tapas.id) LEFT JOIN `photos_recettes` ON (photos_recettes.id = tapas.id)"; $result = mysql_query($select) or die ('Erreur : '.mysql_error() ); // mysql_fetch_row genere un tableau correspondant a la ligne selectionnée de la BDD // Les informations sont accessibles par $row["id"], $row["Nom_Recette"], $row["Info"]... $row= mysql_fetch_array($result);
Seulement, quand on va sur Recettes/Les Tapas-test (5 pour le moment) quel que soit le lien cliqué, ça me renvoi TOUJOURS la première (Albondigas) et pour cause ! si on regarde l'url, il n'y a pas d'ID. Je déduis qu'il n'est pas récupéré, non ? Mais pourquoi ?
http://txiki.free.fr/index.php?page=Fiche_Recette&lang=Fr&id=
Ce ne serait pas la première fois. Pourtant je me suis inspiré de la page Prénoms/Prénoms basques qui, elle, fonctionne parfaitement.
Quelqu'un aurait l'amabilité de me regarder ce code et, éventuellement, plus (de code) si besoin ?
Merci d'avance pour votre aide.
En plus les photos ne s'affichent pas mais on verra ça plus tard.
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
A voir également:
- ID absent Pourquoi ? [php]
- Id telephone - Guide
- Easy php - Télécharger - Divers Web & Internet
- Signal absent tv - Guide
- Id reseau tv - Forum TNT / Satellite / Réception
- Id=108 - Forum MacOS
5 réponses
bonsoir :)
bon, apparement ton $row= mysql_fetch_array($result); te remonte bien la liste des tapas :
Albondigas
Barquettes de jambon blanc
Beignets de chorizo
Beignets de thon
Beignets fromage et crevettes
le probleme vient du lien qu il y a dessus et tu nous donne pas le code juste apres le $row= mysql_fetch_array($result); qui doit etre du style :
echo "<a href:page=".$NomFiche."&lang=".$Lang."&id=".$id.">".$NomRecette."</a>";
donc si tu pouvait nous faire suivre les lignes de codes correspondant au <a href> et celles où tu met les données de $NomFiche, $Lang,$NomRecette... on pourra un peu plus t aider ;)
bon, apparement ton $row= mysql_fetch_array($result); te remonte bien la liste des tapas :
Albondigas
Barquettes de jambon blanc
Beignets de chorizo
Beignets de thon
Beignets fromage et crevettes
le probleme vient du lien qu il y a dessus et tu nous donne pas le code juste apres le $row= mysql_fetch_array($result); qui doit etre du style :
echo "<a href:page=".$NomFiche."&lang=".$Lang."&id=".$id.">".$NomRecette."</a>";
donc si tu pouvait nous faire suivre les lignes de codes correspondant au <a href> et celles où tu met les données de $NomFiche, $Lang,$NomRecette... on pourra un peu plus t aider ;)
hello,
une chose à la fois.
Si tu dis que tu n'as pas d'ID c'est parce que ce mécanisme a échoué
$id=$_GET['id']; <--pas bien récupéré.
Assure toi qu'un champs de type input de html est nommé comme id !
que ce soit via la méthode post ou la methode get, le raisonnement est le meme. les effets différents bien entendu
une chose à la fois.
Si tu dis que tu n'as pas d'ID c'est parce que ce mécanisme a échoué
$id=$_GET['id']; <--pas bien récupéré.
Assure toi qu'un champs de type input de html est nommé comme id !
que ce soit via la méthode post ou la methode get, le raisonnement est le meme. les effets différents bien entendu
en passant:
$id=$_GET['id']; // La manipulation de $id est plus simple que celle de $_POST["id"]
il faut choisir, ou c' est GET, ou c' est POST !
Post recupere la valeur d' un champs de formulaire, GET recupere la valeur dans l' url !
$id=$_GET['id']; // La manipulation de $id est plus simple que celle de $_POST["id"]
il faut choisir, ou c' est GET, ou c' est POST !
Post recupere la valeur d' un champs de formulaire, GET recupere la valeur dans l' url !
pour compléter ce que dit graffx.
Tu ne peux pas juste mettre en début de page
$id=$_GET['id']; // La manipulation de $id est plus simple que celle de $_POST["id"]
Il faut qu'à un moment donné tu aies affecté un objet html de type input name = 'id' et mis dans ta balise form name='form' method='get'...
Pour espérer récupérer quelque chose !
Tu ne peux pas juste mettre en début de page
$id=$_GET['id']; // La manipulation de $id est plus simple que celle de $_POST["id"]
Il faut qu'à un moment donné tu aies affecté un objet html de type input name = 'id' et mis dans ta balise form name='form' method='get'...
Pour espérer récupérer quelque chose !
Salut moderno31,
Je n'utilise pas de formulaire. Le est créé sur une page précédente (Recettes_Tapas Fr.php).
Bref, il y a quelque chose qui m'échape la dedans, mais à force de regarder, corriger, modifier je ne vois plus très clair.
En tous cas merci pour votre aide à tous !
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
Je n'utilise pas de formulaire. Le est créé sur une page précédente (Recettes_Tapas Fr.php).
Bref, il y a quelque chose qui m'échape la dedans, mais à force de regarder, corriger, modifier je ne vois plus très clair.
En tous cas merci pour votre aide à tous !
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
re:)
Désolé, pas mal de boulot en ce moment...
donc je pense que l erreur vient de
au lieu du printf, pourquoi ne fais tu pas :
echo '<a href="index.php?page=Fiche_Recette&lang='.$lang.'&id='.$row['id'].'">'.$row['Nom_Recette'].'</a>';
de plus tu pourrais vérifier que ta requete sql remonte bien les donnée en faisant dans le while :
echo "<script>alert('Lang=".$lang." - Id=".$row['id']." - Nom Recette=".$row['Nom_Recette']."');</script>";
pour remonter les info dans un message box ;)
Tient moi au jus ;)
Désolé, pas mal de boulot en ce moment...
donc je pense que l erreur vient de
while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td bgcolor='#FFFFFF' text-align='center'>"; // Construit le lien vers la page index.php en lui passant en paramètre : la page, la langue et l'ID printf("<a href=\"index.php?page=%s&lang=%s&id=%s\">%s</a>","Fiche_Recette",$lang,$row['id'],$row['Nom_Recette']); echo "</td>"; echo "</tr>\n"; }
au lieu du printf, pourquoi ne fais tu pas :
echo '<a href="index.php?page=Fiche_Recette&lang='.$lang.'&id='.$row['id'].'">'.$row['Nom_Recette'].'</a>';
de plus tu pourrais vérifier que ta requete sql remonte bien les donnée en faisant dans le while :
echo "<script>alert('Lang=".$lang." - Id=".$row['id']." - Nom Recette=".$row['Nom_Recette']."');</script>";
pour remonter les info dans un message box ;)
Tient moi au jus ;)
Salut jjsteing et merci de prendre le temps de regarder mon code,
Moi aussi j'ai du boulot, chiant qui plus est !
Ça ne marche toujours pas. En fait, voici le code de la page des prénoms avec le tableau de l'alphabet qui sert d'accès direct au prénom choisi (Lettre de l'alphabet). Je me suis servi de ce code (qui marche pour les prénoms) pour les recettes.
J'avais pensé dans un premier temps faire une table par categorie mais me suis ravisé. J'ai renommé cette table "tapas" en "recettes" en ajoutant un champ Categorie de type VARCHAR taille 10 et latin_général_ci
Je ne suis très futé en php et le script des prénoms m'avait été corrigé par quelqu'un ici. Le printf en l'occurrence vient de lui mais ne vois pas à quoi ça sert, la différence entre ça et echo.
Merci infiniment en tous cas. Je m'arrache les cheveux car j'y tiens beaucoup. C'est la première fois aussi que je fais une jointure dans l'affichage de la fiche.
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
Moi aussi j'ai du boulot, chiant qui plus est !
Ça ne marche toujours pas. En fait, voici le code de la page des prénoms avec le tableau de l'alphabet qui sert d'accès direct au prénom choisi (Lettre de l'alphabet). Je me suis servi de ce code (qui marche pour les prénoms) pour les recettes.
//============================================================ // requête SQL qui calcule la limite lorsquelle lettre est spécifié // En fait on calcule à quelle position se trouve le 1er enregistrement commençant par cette lettre //============================================================ if (!empty($_GET["lettre"])) // Voir $lettres$lettres = "ABDEFGHIJKLMNOPRSTUVXYZ"; { $lettre = $_GET["lettre"]; // on compte tous les enregistrements qui se trouvent avant la lettre et c'est tout ! $select = 'SELECT count(*) FROM prenomsfeminins WHERE lettre <"'.$lettre.'"'; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); $row = mysql_fetch_row($result); $limite = $row[0]; } //====================================================== // requête SQL qui compte le nombre total d'enregistrements dans la table. //====================================================== $select = 'SELECT count(*) FROM prenomsfeminins'; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); $row = mysql_fetch_row($result); $total = $row[0]; //=================================================== // vérifier la validité de notre variable $limite; //=================================================== if ($limite < 0) $limite = 0; if ($limite > $total) $limite = $total; //============================================================== // requête SQL qui ne prend que le nombre d'enregistrement nécessaire à l'affichage. //============================================================== $req = 'select * FROM prenomsfeminins ORDER BY Prenom ASC limit '.$limite.','.$nombre; $result = mysql_query($req) or die ('Erreur : '.mysql_error() ); //============================== // si on a récupéré un resultat on l'affiche. //============================== $lettres = "ABDEFGHIJKLMNOPRSTUVXYZ"; // lettres de l'alphabet du tableau/lien en haut de la page // je voudrais la même chose mais avec Tapas, Entrées, Potages etc.... seulement ça m'affiche que le 1ère caractère. Comment faire pour avoir ces mots if ($total) { echo "<table bgcolor='#FFFFFF' cellspacing='0' cellpadding='0' align='center'>\n"; echo "<tr bgcolor='#EFEFEF' text-align='center' padding='3px'>"; // première ligne on affiche l'alphabet/lien for ($i=0; $i< strlen($lettres); $i++) { // On récupère la lettre à la position $i dans $lettres : qd $i vaut 0 on obtient "A", $i vaut 1 on obtient "B" etc ... $lettre = substr($lettres,$i,1); echo "<td>"; // Construit le lien vers la page index.php en lui passant en paramètre : la page, la langue et la lettre printf("<a href=\"index.php?page=%s&lang=%s&lettre=%s\">%s</a>",$page,$lang,$lettre,$lettre); echo "</td>"; if ($i != strlen($lettres)-1) { echo "<td> | "; echo "</td>"; } } echo "</table>"; echo "<br /><br />"; //espaces pour éclaircir l'alphabet de la liste } if ($total) { // on affiche un autre tableau avec la liste des prénoms echo "<table width='50%' bgcolor='#FFFFFF' cellspacing='0' cellpadding='0' align='center'>\n"; // lecture et affichage des résultats while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td bgcolor='#FFFFFF' text-align='left'>"; // Construit le lien vers la page index.php en lui passant en paramètre : la page, la langue et l'ID printf("<a href=\"index.php?page=%s&lang=%s&id=%s\">%s</a>","Fiche_Prenom",$lang,$row['ID'],$row['Prenom']); echo "</td>"; echo "</tr>\n"; } echo "</table>\n"; // fin du tableau. } else { echo "Pas d\'origine pour ce prénom"; // ? il y a forcément une origine sur un prénom }
J'avais pensé dans un premier temps faire une table par categorie mais me suis ravisé. J'ai renommé cette table "tapas" en "recettes" en ajoutant un champ Categorie de type VARCHAR taille 10 et latin_général_ci
Je ne suis très futé en php et le script des prénoms m'avait été corrigé par quelqu'un ici. Le printf en l'occurrence vient de lui mais ne vois pas à quoi ça sert, la différence entre ça et echo.
Merci infiniment en tous cas. Je m'arrache les cheveux car j'y tiens beaucoup. C'est la première fois aussi que je fais une jointure dans l'affichage de la fiche.
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
Ci-dessous la suite du code:
L'ID est bien en debut de page, pourquoi je devrais le rajouter dans la fiche recette ? Qui plus est dans un echo, je ne veux pas l'afficher l'ID !.
Le lien provient de la page qui liste les tapas (Recettes_Taps Fr.php) dont voici le code:
Voilà, j'espère que c'est assez clair pour vous et merci encore pour votre aide !.
Le bonheur est la seule chose que l'on peut donner sans l'avoir.