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 :

génération d'une page PHP via un formulaire


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Points : 1
    Points
    1
    Par défaut génération d'une page PHP via un formulaire
    bonjour,
    je viens ici pour vous demander comment générer une page PHP.

    J'ai un fichier formulaire ou toutes les données sont envoyées vers ma BDD. Pas de probléme pour cette partie, je recoit bien les informations. En revanche, j'aimerai qu'une page se génère avec un modèle (css + informations lambda comme menu, etc), mais avec le contenu, le titre qui change par exemple. Vous comprenez donc que j'aimerai qu'un article se génére avec les informations postées dans le formulaire.

    Est-ce possible d'avoir une page article[x].php, ou article.php?id=[x], et si oui, comment faire ?

  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
    Tu as su faire l'insertion mais tu ne sais pas faire la lecture ?

    Tu passes l'id de la page que tu veux dans l'url effectivement article.php?id=xxxx
    Tu lis dans la base les informations que tu veux pour xxxx.
    Tu écris la page dynamiquement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <title><?php echo $title;?></title>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    oui mais comment faire pour qu'elle se génére automatiquement la page ?

  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
    Ce qui "elle" dans ta phrase ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    La page PHP que j'aimerait générer.

  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
    Tu as fait ce que je t'ai dit ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    non, en fait j'aimerai savoir comment récuperer l'article, le titre de l'article, etc, et non le titre d'une page

  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
    Comme je t'ai dit, tu récupères par ta requête les informations que tu veux et tu les mets ou tu veux.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Citation Envoyé par sebastien123 Voir le message
    Est-ce possible d'avoir une page article[x].php, ou article.php?id=[x], et si oui, comment faire ?
    Citation Envoyé par sebastien123 Voir le message
    en fait j'aimerai savoir comment récuperer l'article, le titre de l'article, etc, et non le titre d'une page
    Avec l'URL article.php?id=xxxx tu récupères l'id via le tableau $_GET et tu le nettoies (ne jamais utiliser directement les données qui viennent de l'extérieur) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (isset($_GET['id']) { // je vérifie que l'id a été fourni
      $id = (int) $_GET['id']; // je transtype en nombre entier pour éviter les attaques les plus simples
    } else {
      // message d'erreur, à adapter...
      echo '<p>Pas d’id, pas d’article !</p>';
      exit;
    }
    Ensuite tu utilises cette variable $id « propre » et tu fais ta requête SQL avec. Là je ne peux pas te donner un exemple concret car je ne sais pas quelle API tu as choisie pour communiquer avec ta BDD : mysqli, PDO ou autre.

    Avec l'URL articlexxx.php c'est possible aussi en utilisant le célèbre mod_rewrite d'Apache (je suppose que ton serveur est Apache). Il s'agit du module de réécriture d'URL (presque toujours disponible sauf sous certains hébergements gratuits). Il faut ajouter quelques lignes dans un .htaccess et connaître un minimum les expressions régulières. Le serveur appellera toujours la page article.php?id=xxxx, donc il n'y a rien à changer dans le script PHP. Exemple simple :
    Code .htaccess : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <IfModule mod_rewrite.c>  
    RewriteEngine on  
    RewriteRule ^/article([0-9]+).php$ /article.php?id=$1
    </IfModule>
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Je vois.
    Entre temps, j'ai utilisé une autre solution en utilisant article.php?id=[x]

    Par exemple pour inclure le contenu de l'article, sur ma page article.php, j'utilise ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <?php	
    $reponse = $bdd->query('SELECT article FROM article ORDER BY ID DESC LIMIT 0, 1');
     
    while ($donnees = $reponse->fetch())
    {
    	echo '
    	
    ' . stripslashes($donnees['article']) . ' 
      
    	';
    }
     
    $reponse->closeCursor();
     
    ?>
    Ce code marche, mais un bug se produit. Quand j'écrit l'article 99, sur la page id=99, j'ai bien le contenu de l'article 99. Quand j'écrit ensuite l'article 100, sur la page id=100, j'ai bien le contenu de l'article 100 mais également dans la page id=99. Comment faire pour que cela ne se produise pas ?

    ps : j'utilise PDO pour me connecter.
    ps2 : voici le code que j'utilise pour insérer dans la BDD, via une page externe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <?php
    // Connexion à la base de données
    try
    {
    	$bdd = new PDO('xxxxxx');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
     
    $req = $bdd->prepare('INSERT INTO article (article, titre, date, auteur, categorie, numero) VALUES(?, ?, ?, ?, ?, ?)');
    $req->execute(array($_POST['article'], $_POST['titre'], $_POST['date'], $_POST['auteur'], $_POST['categorie'], 
    $_POST['numero']));
     
    header('location: article.php?id='.$_POST['numero'].''); exit;
    ?>

  11. #11
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Citation Envoyé par sebastien123 Voir le message
    Quand j'écrit l'article 99, sur la page id=99, j'ai bien le contenu de l'article 99. Quand j'écrit ensuite l'article 100, sur la page id=100, j'ai bien le contenu de l'article 100 mais également dans la page id=99. Comment faire pour que cela ne se produise pas ?
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT article FROM article ORDER BY ID DESC LIMIT 0, 1
    Cette requête renverra toujours l'article le plus récent (l'id le plus élevé) du fait de deux choses :
    - ORDER BY ID DESC range les résultats par ID, plus élevé en premier ;
    - LIMIT 0, 1 ne garde que le premier résultat.
    En l'état, tu n'utilises pas le paramètre id de l'URL, donc l'article renvoyé est complètement indépendant de l'URL…

    Tu dois utiliser le paramètre id dans ta requête. Commence par le récupérer et le nettoyer comme je t'ai montré. Ensuite :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $statement = $bdd->prepare('SELECT article FROM article WHERE ID = :id LIMIT 0,1');
    $statement->execute([ ':id' => $id ]);
    $donnees = $statement->fetch(PDO::FETCH_ASSOC);
     
    echo stripslashes($donnees['article']);
    Tu connais déjà prepare et execute donc je pense que tu n'auras pas de mal à comprendre ce bout de code
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  12. #12
    Invité
    Invité(e)
    Par défaut
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $statement = $bdd->prepare('SELECT article FROM article WHERE ID = :id');
    A quoi bon mettre LIMIT 0,1 alors que Id est auto-incrémenté, donc unique ??

  13. #13
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    C'est pour faire joli

    Plus sérieusement, je me suis dit qu'une clause LIMIT c'est une optimisation potentielle qui ne coûte pas grand chose à écrire et qui, au pire, ne fait rien… Mais je suis loin d'être expert en optimisation de requêtes.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Ton code me met une erreur de syntaxe au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $statement->execute([ ':id' => $id ]);
    :/

  15. #15
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $statement->execute(array(':id'=> $id));
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    L'erreur de syntaxe disparait mais j'ai toujours le même probléme au niveau des articles...

  17. #17
    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
    Difficile de te répondre sans voir ton code.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php	
    if (isset($_GET['id'])) { // je vérifie que l'id a été fourni
      $id = (int) $_GET['id']; // je transtype en nombre entier pour éviter les attaques les plus simples
    } else {
      // message d'erreur, à adapter...
      echo '<p>Pas d’id, pas d’article !</p>';
      exit;
    }
     
    $statement = $bdd->prepare('SELECT article FROM article WHERE ID = :id LIMIT 0,1');
    $statement->execute(array(':id'=> $id));
    $donnees = $statement->fetch(PDO::FETCH_ASSOC);
     
    echo stripslashes($donnees['article']);
    ?>

  19. #19
    Invité
    Invité(e)
    Par défaut
    Peut-on voir un extrait de ta table "article" (notamment les articles 99 et 100) ?

  20. #20
    Nouveau Candidat au Club
    Homme Profil pro
    sans emploi
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Points : 1
    Points
    1
    Par défaut


    Avec la table ID que j'ai oublié, avec les identifiants #79 & #80.
    Même en changeant le !id et ce qui va avec par !numero cela ne change pas.

Discussions similaires

  1. apel d'une page.php via zend
    Par chadnour dans le forum Zend Framework
    Réponses: 1
    Dernier message: 16/04/2010, 20h42
  2. Modifier une page HTML via un formulaire HTML
    Par neo76910 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/07/2009, 11h41
  3. [AJAX] Lancer une page Ajax via un formulaire et un javascript
    Par ccsuperstar dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 16/04/2008, 18h58
  4. [AJAX] passage de valeur pour une page php depuis un formulaire
    Par Ministar dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/09/2007, 21h29
  5. appel d'une page php et passage de paramètres via un SRC
    Par yoda_style dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/01/2006, 20h54

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