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 :

Création de lien automatique


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Création de lien automatique
    Bonjour,

    Je ne connaît que peu le PHP, malgré que je bidouille des scripts existants depuis de nombreuses années. Pour un nouveau projet de site internet, j'ai dois créer mon propre script et bien qu'il avance dans de bonnes conditions, je ne trouve pas la solution à un bête problème :

    Pour mon projet, il y a 3 pages :

    - La page formulaire.php, qui permet de renseigner et de gérer la table mysql,
    - La page fiche.php qui récupère les champ de l'ID n°X, via GET pour générer une url par ID.
    - La page index qui doit afficher le lien de chaque nouvelle ID automatiquement.

    C'est sur cette troisième page que je flanche, car j'ai réussi à bien faire en sorte que chaque fiche corresponde à chaque ID de la table, mais j'arrive pas à trouver le codage qui dit que si l'ID est présent, afficher le lien vers la fiche correspondante. Bien entendu, si il n'y a pas d'ID n°X dans la BDD, il n'y aura pas de lien.

    J'espère que mon problèmes est clair et que vous pourrez m'aider. Je vous remercie d'avance.
    http://www.clan-bat.com

  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
    C'est quoi "une fiche" dans ton organisation ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Je vois que mon explication n'est pas claire.

    En gros, j'ai une page de gestion de BDD : Admin
    J'ai une page d'affichage (fiche) type qui change en fonction de l'ID de la BDD. Exemple pour l'ID 3: Fiche
    La page qui me manque serait l'index, ou lexique qui génèrerait automatiquement les liens en fonction des ID de la BDD. Par exemple, si la BDD à 15 ID remplies, il faudrait que 15 liens apparaissent sur la page index. Du genre www.monsite.php?i=1

    J'espère que c'est plus clair. J'essaie de traduire avec le peu de connaissances que j'ai en php.
    http://www.clan-bat.com

  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
    Tu as juste a lister tes fiches dans une requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql = "SELECT id, titre FROM fiches";
    $cnx->query($sql);
    while ($row = $sth->fetch(PDO_FETCH_ASSOC)) {
        echo '<p><a href="/aqua/reef/categories.php?i=' . $row['id'] . '" />' . htmlentities($row['titre'] . '</a></p>';
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup de ta réponse et d'après ce que j'ai pu traduire de ton code, ça à l'air de vraiment être ce que je cherche. Toutefois, j'ai une erreur de syntaxe à la ligne 4, au niveau du ";".

    J'ai fais des recherches, mais je n'ai pas trouvé l'erreur.
    http://www.clan-bat.com

  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
    J'ai oublié une parenthèse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo '<p><a href="/aqua/reef/categories.php?i=' . $row['id'] . '" />' . htmlentities($row['titre']) . '</a></p>';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Je me rends compte que "mes bases" sont très vites anéanties devant de petits problèmes et en fait, c'est là que je ne me démerde pas si bien que ça.

    L'erreur suite au ";" est réglée, merci beaucoup.

    Par contre, maintenant, ma page s'affiche normalement, mais avec une erreur de type
    Fatal error: Call to a member function query() on a non-object
    Je suis vraiment désolé d'abuser des services, je pensais pas être aussi boulet.
    http://www.clan-bat.com

  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
    Mon exemple est écrit avec $cnx qui serait une connexion PDO.
    Il faut que tu adaptes a ton code.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    ok, alors en cherchant ce que voulait dire PDO et surtout à quoi ça servait, j'ai réussis à faire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $PARAM_hote='localhost'; // le chemin vers le serveur
    $PARAM_nom_bd='***'; // le nom de votre base de données
    $PARAM_utilisateur='root'; // nom d'utilisateur pour se connecter
    $PARAM_mot_passe='***'; // mot de passe de l'utilisateur pour se connecter
    $connexion = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
    ?>
    Du coup si ma logique est pas fausse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
            $sql = "SELECT id, titre FROM fiches";
    $connexion->query($sql);
    while ($row = $sth->fetch(PDO_FETCH_ASSOC)) {
         echo '<p><a href="/aqua/reef/categories.php?i=' . $row['id'] . '" />' . htmlentities($row['titre']) . '</a></p>';
    }
    ?>
    Du coup l'erreur est différente
    Fatal error: Call to a member function fetch() on a non-objec
    . Je cherche, mais pour l'instant c'est choux blanc quand à la résolution du problème.
    http://www.clan-bat.com

  10. #10
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Où as-tu défini "sth" dans ton code ? Nul part. Même si tu connais pas grand chose en php, il suffit d'avoir un brain de bon sens pour saisir ce genre d'erreur.

    Au lieu d'y aller à taton comme tu le fais là, je t'invite à lire (et surtout à comprendre) un tutoriel complet qui explique ce qu'est PDO et comment s'en servir.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    En voyant ce dernier message, je me rends compte que j'aurais du commencer par le début :

    A la fin des années 1990, j'ai conçu plusieurs sites en html, langage que je comprends bien dans ses bases simples. Dans ces sites, j'ai implanté plusieurs scripts de différents langages, dont le php. J'ai à chaque fois essayé de comprendre ce que faisaient ces scripts, sans toutefois m'y former. Voilà en tout et pour tout ma connaissance php. Actuellement, j'essaie d'automatiser une partie d'un site pour des amis, et malgré mon manque de bon sens, j'ai réussi à installer la BDD, faire les tables sql et mêmes à ressortir les différents champs dans une page type. Il me manque juste cette page d'index qui crée les liens automatiquement.

    En résumé, je ne suis pas là pour me former en php, c'est trop tard à mon âge, je suis là pour essayer de solutionner un problème, mais tout en comprenant ce que je fait. Je pense que sur les forums, il y a des gens tout aussi compétents que certains branleurs qui font payer des fortunes pour du boulot mal fait.

    Ce qui est triste, c'est que je me suis adressé à plusieurs forums et déjà deux m'ont clairement fait comprendre que je ne fais pas partie de la confrérie php, si je peux l'appeler ainsi. Le premier forum, m'a dit que si je n'avais pas les bases, fallait pas venir, même dans la zone débutant. Le deuxième, m'a juste dit que mon problème n'en était pas un et que la solution était facile, sans bien sur me donner d'indice.

    De plus, si ton bon sens avait été efficace, tu aurais compris dès la première erreur corrigée par Sabotage, soit l'absence d'une parenthèse, que je n'y connaissais rien.

    Désolé du petit pavé, mais fallait clarifier les choses, sans animosité cela dit. Je trouve dommage que celui qui ne sait pas, sera toujours mis de côté.

    De plus, merci Sabotage du coup de main et j'espère continuer de profiter de ton aide, pour régler ce soucis.

    Merci de m'avoir lu et sans rancune.
    http://www.clan-bat.com

  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
    Tu n'étais pas loin, il fallait juste que $sth vienne de quelque part effectivement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $sql = "SELECT id, titre FROM fiches";
    $sth = $connexion->query($sql);
    while ($row = $sth->fetch(PDO_FETCH_ASSOC)) {
         echo '<p><a href="/aqua/reef/categories.php?i=' . $row['id'] . '" />' . htmlentities($row['titre']) . '</a></p>';
    }
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci Sabotage de prendre un peu de ton temps pour m'aider à sortir de ce brouillard.

    L'erreur précédente est réglée, mais une nouvelle est apparue
    Warning: PDOStatement::fetch() expects parameter 1 to be long, string given
    . Après quelques recherches, j'ai essayé de modifier le
    fetch(PDO_FETCH_ASSOC
    de la ligne 4 en
    fetch(PDO::FETCH_ASSOC
    et là, tout fonctionne à merveille !

    Sinon, pour parfaire mon éducation, je comprends la généralité du script, mais je dois dire que les lignes 3 et 4 me larguent, même après avoir parcouru le tutoriel précédemment posté.

    Dans tous les cas, merci beaucoup pour l'aide précieuse apportée.
    http://www.clan-bat.com

  14. #14
    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
    Ouille, je suis mauvais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sth = $connexion->query($sql);
    $connexion est un objet PDO qui represente la connexion à la base de données.
    A partir de cet objet, on utilise la méthode "query" qui execute une requête.
    Le résultat est stocké dans la variable $sth.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
    $sth est donc un objet PDO qui represente le résultat de la requête.
    Sur cet objet, on utilise la méthode "fetch" qui fournit une ligne de résultat.
    Le résultat va dans $row.
    $row est un tableau associatif car on a utilisé le mode "PDO::FETCH_ASSOC"

    Comme on veut tous les resultats, on met tout ça dans une boucle while{}
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci, c'est clair comme de l'eau de roche, même si je n'arriverais pas à refaire cela.

    Grâce à ton code, j'ai réussi à réimplanté d'autres balises, comme une photo et le nom d'un pseudo.

    Encore merci de m'avoir ôté cette poutre du pied!
    http://www.clan-bat.com

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/03/2014, 14h44
  2. création des liens automatiques macro
    Par victoires dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/03/2012, 10h38
  3. 4D création de lien automatique en sql
    Par saturne27 dans le forum 4D
    Réponses: 1
    Dernier message: 26/02/2008, 10h57
  4. Création de liens automatiques
    Par Munkey74 dans le forum Web
    Réponses: 22
    Dernier message: 09/08/2007, 17h07
  5. [Tableaux] Création de lien automatique
    Par GarGamel55 dans le forum Langage
    Réponses: 3
    Dernier message: 17/09/2005, 17h26

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