IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

problème de n° d'enregistrement


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut problème de n° d'enregistrement
    salut

    voilà je vous expose mon souci :

    dans un fichier table.php je saisi le code qui crée automatiquement des enregistrements dans une table (dans une base de données) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $saisie = mysql_query ("INSERT INTO mespages (nompage, adressepage, contenu1, contenu2, contenu3, contenu4) VALUES ('Accueil', 'pages.php?nompage=Accueil', 'Bienvenue sur mon site', 'Ce site est entièrement construit en PHP', 'Voici la liste des pages','')");
    $saisie = mysql_query ("INSERT INTO mespages (nompage, adressepage, contenu1, contenu2, contenu3, contenu4) VALUES ('Avenir', 'pages.php?nompage=Avenir', 'L\'avenir', 'La société', 'Ces unités', 'Elles produiront')");
    $saisie = mysql_query ("INSERT INTO mespages (nompage, adressepage, contenu1, contenu2, contenu3, contenu4) VALUES ('Historique', 'pages.php?nompage=Historique', 'Histoire de la société', 'Notre société', 'La famille', 'La société a ')");
    $saisie = mysql_query ("INSERT INTO mespages (nompage, adressepage, contenu1, contenu2, contenu3, contenu4) VALUES ('Formulaire', 'pages.php?nompage=Formulaire', '0', '0', '0', '0')");
    $saisie = mysql_query ("INSERT INTO mespages (nompage, adressepage, contenu1, contenu2, contenu3, contenu4) VALUES ('Photos', 'pages.php?nompage=Photos', '0', '0', '0', '0')");
    Dites-moi si je me trompe : la table comporte 6 champs : nompage, adressepage, contenu1, contenu2, contenu3, contenu4

    avec la variable $saisie je créer 5 enregistrements, numérotés de 0 à 4.

    ensuite dans un autre fichier pages.php , j'utilse la commande mysql_result : avec la syntaxe suivante :
    mysql_result(variable contenant le résultat de la requête,numéro de l'enregistrement,nom du champ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $resultat = mysql_query("select * from mespages where nompage like '" .$_GET['nompage']."'",$connexion);
    $nom_page = mysql_result($resultat,0,'nompage');
    $contenu1_page = mysql_result($resultat,0,'contenu1');
    $contenu2_page = mysql_result($resultat,0,'contenu2');
    $contenu3_page = mysql_result($resultat,0,'contenu3');
    $contenu4_page = mysql_result($resultat,0,'contenu4');
    que j'affiche ensuite avec l'instruction 'echo'

    dans un autre fichier index.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $resultat = mysql_query("select * from mespages",$connexion);
    $nb = mysql_num_rows($resultat);
    for ($i = 0; $i<$nb; $i++)
    {
    $nom = mysql_result($resultat,$i,"nompage");
    $adresse = mysql_result($resultat,$i,"adressepage");
    echo "<a href = $adresse> $nom</a> &nbsp &nbsp";
    }
    ici je n'affiche que les portions de code qui me semblent intéressantes.

    et quand je lance la page, il y a donc les rubriques 'Accueil', 'Avenir', etc... et quand je clique sur chacun d'eux j'obtiens à chaque fois le nompage et le contenu, différents suivant la page cliquée

    quelqu'un peut-il me dire par quel coup de trafalgar il peut afficher le nom des pages et des contenus différents, alors que regardez le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $nom_page = mysql_result($resultat,0,'nompage');
    $contenu1_page = mysql_result($resultat,0,'contenu1');
    $contenu2_page = mysql_result($resultat,0,'contenu2');
    $contenu3_page = mysql_result($resultat,0,'contenu3');
    $contenu4_page = mysql_result($resultat,0,'contenu4');
    les variables retournent le résultat de l'enregistrement n° 0 : c'est à dire celui correspondant au nom 'Accueil' et pas les autres normalement (à moins de faire une boucle)

    bon j'espère que j'ai été clair et surtout pas trop long

    j'espère que vous aurez le courage de me lire

    désolé pour la longueur du post

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Bonsoir,

    Commence par mettre des guillemets a ton lien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="'. $adresse . '">' .  $nom. '</a>&nbsp;&nbsp;';
    Sinon j'ai testé ton code et il fonctionne comme attendu ; pourrais-tu préciser ton problème ?

    Au passage, revois la facon dont tu traites tes requetes.
    Regarde par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $resultat = mysql_query("select * from mespages");
    while ($row = mysql_fetch_assoc($resultat)) {
    {
    echo '<span style="margin-right: 6px;"><a href="'. $row['adressepage'] . '">' .  htmlspecialchars($row['nompage']). '</a></span>';
    }
    Plus élégant n'est ce pas ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Invité
    Invité(e)
    Par défaut
    désolé pour la non-clarté de mon post (déjà que tu me connais à peine... t'a du grave halluciner hier )

    en fait ce que j'ai n'est pas un problème de code qui marche pas

    mais plutôt un problème de compréhension :

    si on regarde ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $nom_page = mysql_result($resultat,0,'nompage');
    $contenu1_page = mysql_result($resultat,0,'contenu1');
    $contenu2_page = mysql_result($resultat,0,'contenu2');
    $contenu3_page = mysql_result($resultat,0,'contenu3');
    $contenu4_page = mysql_result($resultat,0,'contenu4');
    il stocke tout à partir de l'enregistrement n° 0 : or l'enregistrement n°0 correspond aux et seulement aux contenus de 'Accueil' : normalement il ne doit pas afficher les autres contenus.
    Dernière modification par Invité ; 13/03/2009 à 12h03.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il ne recupere pas l'enregistrement 0 de la table entiere mais l'enregistrement 0 du resultat de la requete.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = mysql_query("select * from mespages where nompage like '" .$_GET['nompage']."'",$connexion);
    Mais comme je te l'ai mis, il est deconseillé d'utiliser mysql_result() pour recuperer plusieurs champs.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Invité
    Invité(e)
    Par défaut
    désolé mais j'ai pas compris : le $_GET['nompage'] il va récupérer tous les noms de mes pages ?

    donc Accueil, Avenir, Historique, Formulaire et Photos ?

    donc en tout 5 enregsitrements ? numérotés de 0 à 4 ?

    vraiment il y a un truc qui ne va pas : pour moi seul l'enregistrement 'Accueil' doit figurer et pas les autres

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    non, $_GET recupere le parametre passé dans l'url :

    pages.php?nompage=Accueil
    =>
    $_GET['nompage'] == "Accueil"
    =>
    select * from mespages where nompage like 'Accueil'
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Invité
    Invité(e)
    Par défaut
    nompage tu dis ?

    mais c'est aussi le champ qui figure en clé primaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $saisie = mysql_query ("INSERT INTO mespages (nompage, adressepage, contenu1, contenu2, contenu3, contenu4) VALUES ('Accueil', 'pages.php?nompage=Accueil', 'Bienvenue sur mon site', 'Ce site est entièrement construit en PHP', 'Voici la liste des pages','')");
    donc il récupère le champ adressepage ?

    tout cela est très confus dans ma tête (désolé)

    tu dis qu'il récupère le paramètre passé dans l'adresse : ok : donc ce paramètre peut être aussi bien Accueil que Avenir que Historique etc...

    Si je clique sur 'Avenir' par exemple : il recrache l'enregistrement n°1 (le n° qui vient juste après le n°0 de Accueil)

    Maintenant quand je regarde ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $nom_page = mysql_result($resultat,0,'nompage');
    $contenu1_page = mysql_result($resultat,0,'contenu1');
    $contenu2_page = mysql_result($resultat,0,'contenu2');
    $contenu3_page = mysql_result($resultat,0,'contenu3');
    $contenu4_page = mysql_result($resultat,0,'contenu4');
    Pour moi il retourne le résultat de l'enregistrement n°0 : càd celui de 'Accueil' et rien d'autre

    En fait c'est là où je bloque : où je ne comprend pas

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pour moi il retourne le résultat de l'enregistrement n°0 : càd celui de 'Accueil'
    La requete donne les enregistrements dont le nompage est egale au parametre passé dans l'url.
    par exemple si on a cliqué sur 'Avenir' : select * from mespages where nompage like 'Avenir'

    Cette requete retourne un seul enregistrement, celui correspondant à Avenir.
    L'enregistrement 0 du resultat de la requete est donc celui de 'Avenir'
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Invité
    Invité(e)
    Par défaut
    j'ai peut-être compris mais je ne suis pas sûr :

    dans un code précédent j'ai écris ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $saisie = mysql_query ("INSERT INTO mespages (nompage, adressepage, blablapage, etc...) VALUES (popo, pupu, etc...)");          //enregistrement n°0 sur la table mespages
    $saisie = mysql_query ("INSERT INTO mespages (nompage, adressepage, blablapage, etc...) VALUES (baba, bibi, etc...)");          //enregistrement n°1 sur la table mespages
    |
    |
    |
    |
    $saisie = mysql_query ("INSERT INTO mespages (nompage, adressepage, blablapage, etc...) VALUES (bebe, bubu, etc...)");          //enregistrement n°4 sur la table mespages
    => Sur la table 'mespages' il crée 5 enregistrements (en remplissant les
    champs)

    => Il attrape au vol l'enregistrement n°1 de la table lors qu'on clique sur le
    lien

    => Il retourne l'enregistrement n°1 de table en enregistrement n°0 ?!

    Ce programme c'est David Copperfield ou quoi ?!

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je me repete mais ton 0 correspond au premier enregistrement retourné par la requete.

    L'enregistrement 0 de ta table c'est bien celui qui correspond à Accueil

    L'enregistrement 0 de la requete "select * from mespages where nompage like 'Avenir'" c'est celui qui correspond a Avenir.

    L'enregistrement 0 de la requete triant par ordre decroissant sur nom page (select * from mespages ORDER BY nompage DESC) c'est celui qui correspond à Photos.

    L'enregistrement 0 de la requete triant au hasard (select * from mespages ORDER BY RAND()) pourrais être n'importe lequel.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Invité
    Invité(e)
    Par défaut
    je crois que j'ai enfin compris la nuance !

    dis-moi si je trompe :

    avant dans un programme il y avait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $connexion = mysql_connect("localhost","root","mysql");
    $db = mysql_select_db ("monsite",$connexion);
    $resultat = mysql_query ("select * from mespages",$connexion);
    $nb = mysql_num_rows($resultat);
    for ($i = 0; $i < $nb ; $i++)
    {
    $nom = mysql_result($resultat,$i,"nompage");
    $adresse = mysql_result($resultat,$i,"adressepage");
    echo "<a href=$adresse> $nom </a> &nbsp &nbsp";
    }
    l'instruction de requête assignée à la variable $résultat attrape TOUS les enregistrements => d'où la boucle FOR avec le $i qui varie de 0 à 4 (n° des enregistrements)

    tant que l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = mysql_query("select * from mespages where nompage like '" .$_GET['nompage']."'",$connexion);
    ne récupère qu'UN SEUL enregistrement : une boucle et une variable $i ne se justifient pas car il n'y a qu'UN SEUL enregistrement : donc on met '0' (valeur du 1er enregistrement et du seul)

    en fait tout est dans la requête qui récupère tout ou partie des enregistrements

    j'ai mis le temps à comprendre mais ça y est

    grosso modo c'est ça non ?

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Oui tout a fait.

    Mais il est inhabituelle de travailler avec le numero d'enregistrement et donc d'utiliser mysql_result()

    cf. l'exemple que j'ai donné plus haut.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Invité
    Invité(e)
    Par défaut
    ben en fait le code vient pas de moi mais d'un bouquin

    bon merci pour tous ces tuyaux (de pipe hahaha !)

    je suis un peu long à la détente des fois mais bon l'essentiel c'est que j'ai compris

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/03/2006, 19h29
  2. Problème de visualisation d'enregistrement avec Tquickreport
    Par ingelman dans le forum Bases de données
    Réponses: 1
    Dernier message: 04/12/2005, 22h42
  3. Problème sur fréquence d'enregistrement
    Par David M dans le forum Access
    Réponses: 2
    Dernier message: 31/10/2005, 15h37
  4. [JS] Problème de quotes pour enregistrer un formulaire.
    Par polnioumane dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 24/10/2005, 17h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo