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 :

Livre d'or


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Par défaut Livre d'or
    Bonjour, je souhaite créer un livre d'or sur mon site, un script tres simple est deja fait, mais ca ne fonctionne pas.

    Je vous annonce dessuite, c'est la premiere fois que j'utilise une table MySQL (et je debute en php) donc si j'ai fais une enorme boulette grosse comme une montagne, c'est surement cela. Car a mon avis la solution est la correction d'une absurdité, et je pense meme que ca ne vient pas du code mais surement un probleme de "manipulation"

    Je vous explique donc en détail ce que j'ai dans le repertoire de mon site (entre autre) :

    Ma table MySQL etant un fichier "table livre_or" (donc sans le php ou html ou autre au bout) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE livre_or (
    	id int(6) NOT NULL auto_increment,
    	auteur VARCHAR(50) NOT NULL,
    	email VARCHAR(50) NOT NULL,
    	date_signature datetime NOT NULL default '0000-00-00 00:00:00',
    	message text NOT NULL,
    	PRIMARY KEY (id)
    ) TYPE=MyISAM;
    Puis j'ai un fichier qui affichera toutes les signatures : "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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <html>
    <head>
    <title>Index de notre livre d'or</title>
    </head>
    <body>
     
    <a href="./insert_signature.php">Signer le livre d'or</a>
     
    <br /><br />
     
    <?php
    $base = mysql_connect ('serveur', 'login', 'password');
    mysql_select_db ('nom_base', $base);
     
    $sql = 'SELECT auteur, email, date_signature, message FROM livre_or ORDER BY date_signature DESC';
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
     
    $nb_signature = mysql_num_rows($req);
     
    if ($nb_signature == 0) {
    	echo 'Aucune signature.';
    }
    else {
    	while ($data = mysql_fetch_array($req)) {
    		sscanf($data['date_signature'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
     
    		echo '<a href=mailto:' , htmlentities(trim($data['email'])) , '>' , htmlentities(trim($data['auteur'])) , '</a>';
    		echo ' le ' , $jour , '/' , $mois , '/' , $annee , ' à ' , $heure , ':' , $minute , '<br />';
    		echo nl2br(htmlentities(trim($data['message'])));
    		echo '<br /><br />';
    	}
    }
    // on libère l'espace mémoire alloué pour cette requête
    mysql_free_result ($req);
    // on ferme la connection à la base de données.
    mysql_close ();
    ?>
     
    </body>
    </html>
    Et enfin, une fichier qui contient le formulaire et se nomme "insert_signature.php" (a noter que j'aurais préférer avoir le formulaire et la page d'affichage sur la meme page, mais faisons au plus simple ) :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    <?php
    if (isset($_POST['go']) && $_POST['go']=='Signer') {
     
    	if ((isset($_POST['auteur'])) && (isset($_POST['email'])) && (isset($_POST['message']))) {
    		// si les 3 variables ne sont pas vides, et si l'adresse E-mail est valide, alors, et seulement dans ce cas, on fera notre insertion dans la base
    		if ((!empty($_POST['auteur'])) && (!empty($_POST['email'])) && (!empty($_POST['message']))) {
    			// on verifie le format de l'adresse E-mail saisie
    			$test_mail = eregi ('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+$', $_POST['email']);
    			if ($test_mail) {
    				// on se connecte à notre base
    				$base = mysql_connect ('localhost', 'root', '');
    				mysql_select_db ('howto_guestbook', $base);
     
    				// on prepare notre requête d'insertion des données
    				$sql = 'INSERT INTO livre_or VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['email']).'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['message']).'")';
     
    				// on lance la requête
    				mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
     
    				// on ferme la connexion à la base de données
    				mysql_close();
     
    				// on redirige le visiteur vers l'accueil du livre d'or
    				header('location: index.php');
     
    				// on termine le script courant
    				exit();
    			}
    			else {
    				$erreur = 'Votre adresse E-mail est invalide.';
    			}
    		}
    		else {
    			$erreur = 'Au moins un des champs est vide.';
    		}
    	}
    	else {
    		$erreur = 'Les variables nécessaires au script ne sont pas définies.';
    	}
    }
    // on entre dans le cas où l'un des trois (au moins) champs n'a pas été rempli ou si l'adresse E-mail n'a pas été validée (en particulier, lorsque le visiteur charge pour la première fois cette page, vu que les 3 champs sont vides, le formulaire s'affichera). On remarque également que l'on met la valeur de chaque champs dans le value (c'est cela qui fait que si le visiteur ne remplit pas entièrement le formulaire et qu'il clique sur "Signer", et bien lorsqu'il sera redirigé vers le formulaire, ce qu'il aura déjà saisi sera conservé
    ?>
    <html>
    <head>
    <title>Insertion d'une nouvelle signature</title>
    </head>
     
    <body>
     
    <form action="insert_signature.php" method="post">
    <table>
    <tr><td>
    <span class="gras">Auteur :</span>
    </td><td>
    <input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
    </td></tr><tr><td>
    <span class="gras">Adresse E-mail :</span>
    </td><td>
    <input type="text" name="email" maxlength="50" size="50" value="<?php if (isset($_POST['email'])) echo htmlentities(trim($_POST['email'])); ?>">
    </td></tr><tr><td>
    <span class="gras">Votre message :</span>
    </td><td>
    <textarea name="message" cols="50" rows="10"><?php if (isset($_POST['message'])) echo htmlentities(trim($_POST['message'])); ?></textarea>
    </td></tr><tr><td><td align="right">
    <input type="submit" name="go" value="Signer">
    </td></tr></table>
    </form>
    <?php
    if (isset($erreur)) echo '<br /><br />',$erreur;
    ?>
    </body>
    </html>
    Donc je tiens à répéter, à part avoir copié ces 3 fichiers sur mon serveur (webou) et mis dans la page d'accueil de mon site un lien "livre d'or) amenant à la page index.php je n'ai rien fait d'autre (pour la mise e page j'attend que ca marche^^)

    Quand je click sur le lien "livre d'or", j'ai bien une page index.php qui s'ouvre et contenant un lien hypertext "signer le formulaire", mais en dessous de ce lien il y a plein de phrases d'erreurs.

    Cependant le lien marche quand meme et nous amene au formulaire (insert_signature.php), mais quand on valide le formulaire c'est encore plein d'erreur et ca ne s'enregistre pas.

    Venez jugez par vous meme :
    http://www.compterendutp.webou.net/index.html

    et merci beaucoup pour ceux qui viennent m'aider, surtout que je suis certain que ce n'est fois rien

    nb : j'ai l'impression, qu'entre autre, c'est une histoire de password, mais si c'est ca ... je ne veux pas qu'il y ait de password a entrer dans tous les cas

  2. #2
    Invité
    Invité(e)
    Par défaut
    Petite question :
    pourquoi poster ta question ici ?
    il y a un forum sur le site où tu as trouvé ce script ! ...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Par défaut
    T'as vu l'activité qu'il y à ce sur forum ? Je compte pas sortir mon site en 2012 . Mais j'ai quand meme posé la question, on sait jamais. Puis la je regarde dans des tuto, on sait jamais non plus

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par enrico83600 Voir le message
    Puis la je regarde dans des tuto, on sait jamais non plus
    Ah ca, c'est autre chose ! Bienvenu sur developpez.com !

    BON. En suivant ton lien :
    ce sont des erreurs concernant la CONNEXION a ta base de données :
    il faut que tu mettes tes paramètres perso !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 171
    Par défaut
    Tu veux dire que dans index.php je dois remplir ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $base = mysql_connect ('serveur', 'login', 'password');
    mysql_select_db ('nom_base', $base);
    Donc mettre l'adresse de mon serveur, et mon login et mot de passe pour acceder à mon panel d'administration sur le serveur ??

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ca doit ressembler à ca :
    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
    // **************************************
    //       PARAMETRES de CONNEXION 
    //         a la BASE de DONNEES
    // **************************************
    // Parametres persos
    $host = 'localhost'; // voir hebergeur ou "localhost" en local
    $user = 'root'; // vide ou "root" en local
    $pass = 'mysql'; // vide en local ou mot de passe
    $dbase = 'ma_base'; // nom de la BD
    // -------------------------
    // Connexion au serveur
    $connexion_db = mysql_connect($host,$user,$pass) or die ('Erreur de parametres de connexion a la BD');
    mysql_select_db($dbase,$connexion_db)or die ('Erreur de connexion a la BD');
    // -------------------------
    ?>

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

Discussions similaires

  1. Les meilleurs livres pour l'Assembleur
    Par gtr dans le forum Livres
    Réponses: 52
    Dernier message: 25/09/2010, 10h25
  2. Quel est votre livre préféré sur Java ?
    Par Ricky81 dans le forum Général Java
    Réponses: 138
    Dernier message: 25/11/2006, 03h42
  3. [langage] Je cherche un bon livre ?
    Par Anonymous dans le forum Langage
    Réponses: 13
    Dernier message: 09/04/2003, 13h16
  4. [Turbo Pascal] Recherche cours ou livre sur le Turbo Pascal
    Par killarg dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 02/03/2003, 16h12
  5. [web] Cherche un conseil pour un livre perl-tk
    Par Anonymous dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 29/04/2002, 15h35

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