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

PHP & Base de données Discussion :

INSERT INTO - Les données restent invisibles [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Autodidacte
    Inscrit en
    Juin 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2015
    Messages : 15
    Par défaut INSERT INTO - Les données restent invisibles
    Bonjour à tous,

    Voilà j'ai suivi le tutoriel d'un site réputé afin de réaliser un GuestBook et j'ai tenté de séparer le code en différents fichiers afin de coller au mieux à ce que je cherche à avoir... Un fichier form.php inaccessible aux visiteurs où je pourrais mettre moi même les données qui s'afficheront que index.php qui lui sera visible par les visiteurs et en 'include' sur l'une de mes pages...

    Le soucis est que çà ne fonctionne pas des masses !

    Certainement 3x rien lorsqu'on est habitué à tout çà mais je commence juste à utiliser les bases de données donc je peine encore...

    Merci de me donner un coup de main

    Voici les codes :

    index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <!DOCTYPE html>
    <html lang="fr">
    <head>
      <meta charset="utf-8">
      <title>GuestBook</title>
    </head>
    <body>
    <?php
    include('pdo.php');
    include('livreOr.php');
    ?>
    </body>
    </html>
    pdo.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    // CONNEXION DB
    try{
    	$DB = new PDO('mysql:host=localhost;dbname=basededonnee','root','');
    	$DB->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e) {
    	echo 'La base de donnée n\'est pas disponible, merci de rééssayer plus tard.';
    }
    ?>
    livreOr.php
    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
    // AFFICHAGE DONNEES
    $sql = 'SELECT pseudo,dateStay,location,message FROM guestbook';
    try{
    $req = $DB->query($sql);
    while($d = $req->fetch(PDO::FETCH_ASSOC)){
    	echo '<pre>';
    	echo '<strong>'.$d['pseudo'].'</strong><br \>';
    	echo '<strong>'.$d['location'].'</strong> | <i>'.$d['dateStay'].'</i><br \>';
    	echo '<p>'.$d['message'].'</p>';
    	echo '</pre>';
    	}
    }
    catch(PDOException $e){
    	echo 'Votre requête a rencontrée une erreur !';
    }
    ?>
    form.php
    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
    19
     
    <!DOCTYPE html>
    <html lang="fr">
    <head>
      <meta charset="utf-8">
      <title>GuestBook</title>
    </head>
    <body>
    <?php include 'pdo.php';?>
    <form method="post" action="insert.php">
    	Nom : <input type="text" name="pseudo"/><br\>
    	Date de s&eacute;jour : <input type="text" name="dateStay"/><br\>
    	Structure de location : <input type="text" name="location"/><br\>
    	Message : <br\>
    	<textarea name="message"></textarea><br\>
    	<input type="submit" value="envoyer"/>
    </form>
    </body>
    </html>
    insert.php
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    <!DOCTYPE html>
    <html lang="fr">
    <head>
      <meta charset="utf-8">
      <meta http-equiv="Refresh" content="0; url=index.php">
      <title>GuestBook</title>
    </head>
    <body>
    <?php
    include('pdo.php');
    // INSERTION DB
    /* données à insérées */ 
    $d = array (
     
    'pseudo' => '', /* probleme de recuperation depuis form.php : que mettre ici 'ici' ? */
    'dateStay' => '', /* probleme de recuperation depuis form.php : que mettre ici 'ici' ? */
    'location' => '', /* probleme de recuperation depuis form.php : que mettre ici 'ici' ? */
    'message' => '' /* probleme de recuperation depuis form.php : que mettre ici 'ici' ? */
     
    );
    $req = $DB->prepare('INSERT INTO guestbook (pseudo,dateStay,location,message) 
    							VALUE (:pseudo , :dateStay , :location , :message)');
    $req->execute($d);
    ?>
    </body>
    </html>

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Ton formulaire est en post (action="post"), donc on récupère le name des champs avec $_POST :
    Code php : 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
    include('pdo.php');
    // INSERTION DB
    /* données à insérées */ 
    $d = array (
    'pseudo' => $_POST['pseudo'],
    'dateStay' => $_POST['dateStay'],
    'location' => $_POST['location'],
    'message' => $_POST['message']
    );
    $req = $DB->prepare('INSERT INTO guestbook 
    	(pseudo, dateStay, location, message) 
    	VALUES
    	(:pseudo , :dateStay , :location , :message)');
    $req->execute($d);
    ?>
    Cela dit, il ne faut pas oublier la gestion des erreurs AVANT l'insertion :
    • champs obligatoires
    • validité d'un email
    • ...


    Voir aussi : "PRINCIPE de TRAITEMENT et FORMULAIRE sur la même page"

  3. #3
    Membre averti
    Homme Profil pro
    Autodidacte
    Inscrit en
    Juin 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2015
    Messages : 15
    Par défaut RESOLU
    Merci à toi jreaux62
    Tout fonctionne impeccable maintenant
    Je vais à présent consulter le lien que tu m'as conseillé...

    Merci beaucoup

  4. #4
    Membre émérite
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Cela dit, il ne faut pas oublier la gestion des erreurs AVANT l'insertion :
    • champs obligatoires
    • validité d'un email
    • ...
    Idem pour l'échappement au "rendu" (injection XSS). Pour t'en convaincre, écrit voir le "message" suivant dans ton livre d'or :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <script>window.location.href="http://www.developpez.com"</script>
    Le mieux reste de valider ton message pour interdire certains caractères, à défaut, ceci devrait limiter la casse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    htmlspecialchars($message, ENT_QUOTES)

  5. #5
    Membre averti
    Homme Profil pro
    Autodidacte
    Inscrit en
    Juin 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2015
    Messages : 15
    Par défaut
    Slt bretus et jreaux62,

    En fait, tout ce que vous m'avez transmis fonctionne mis à part un petit bug...
    Je voulais vous demander comment faire pour que lorsque le message est vraiment long, il se scinde automatiquement...
    Mon container fait par exemple "width:800px;", mais lorsque le texte du livre d'or est vraiment long (+ de 800px), un scrollbar horizontale se créé....
    Comment faire un retour à la ligne automatique et éviter ce scroll ?

    Je vous remercie par avance pour votre aide...

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/01/2014, 15h14
  2. [PDO] Insert préparé qui n'insert pas les données
    Par le nOoB dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 22/04/2011, 02h15
  3. Réponses: 2
    Dernier message: 23/07/2007, 14h12
  4. Réponses: 2
    Dernier message: 16/05/2006, 10h52
  5. [VBA-A] INSERT INTO en vérifiant les données avant !!
    Par Rumeurs dans le forum VBA Access
    Réponses: 9
    Dernier message: 12/04/2006, 14h07

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