Livre d'or Problème en php/mySQL
Résolu
web-actu
Messages postés
99
Date d'inscription
Statut
Membre
Dernière intervention
-
web-actu Messages postés 99 Date d'inscription Statut Membre Dernière intervention -
web-actu Messages postés 99 Date d'inscription Statut Membre Dernière intervention -
Bonjour, j'ai recement eu un probleme avec le livre d'or.
Voici le code source :
...Voilà...
Voici le code source :
<?php include ("includes/header.php"); include ("includes/menu.php"); include_once ("includes/bdd.php"); ?> <div id="corps"> <form method="post" action="livreor.php"> <p>Mon site vous plaît ? Laissez-moi un message !</p> <p> <?php if(isset($_SESSION['id'])) { ?> Pseudo : <strong><?php echo $_SESSION['pseudo'] ;?></strong><br /> <input type="hidden" name="pseudo" value="<?php echo $_SESSION['pseudo'] ?>"/> <?php } else { ?> Pseudo : <input name="pseudo" /><br /> <?php } ?> Message :<br /> <textarea name="message" rows="8" cols="35"></textarea><br /> <input type="submit" value="Envoyer" /> </p> </form> <p class="pages"> <?php mysql_connect("****", "****", "****"); mysql_select_db("riridi"); // --------------- Etape 1 ----------------- // Si un message est envoyé, on l'enregistre // ----------------------------------------- if (isset($_POST['pseudo']) AND isset($_POST['message'])) { $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); // On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité $message = nl2br(mysql_real_escape_string(htmlspecialchars($_POST['message']))); // De même pour le message ; Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br /> $ip = $_SERVER['REMOTE_ADDR']; // On peut enfin enregistrer :o) mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "', '" . $ip . "')"); } // --------------- Etape 2 ----------------- // On écrit les liens vers chacune des pages // ----------------------------------------- // On met dans une variable le nombre de messages qu'on veut par page $nombreDeMessagesParPage = 20; // Essayez de changer ce nombre pour voir :o) // On récupère le nombre total de messages $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor'); $donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages']; // On calcule le nombre de pages à créer $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage); // Puis on fait une boucle pour écrire les liens vers chacune des pages echo 'Page : '; for ($i = 1 ; $i <= $nombreDePages ; $i++) { echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> '; } ?> </p> <?php // --------------- Etape 3 --------------- // Maintenant, on va afficher les messages // --------------------------------------- if (isset($_GET['page'])) { $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4) } else // La variable n'existe pas, c'est la première fois qu'on charge la page { $page = 1; // On se met sur la page 1 (par défaut) } // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage; $reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage); while ($donnees = mysql_fetch_array($reponse)) { echo '<div="message_or"><p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p></div>'; } mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o) ?> <div id="clear:both"> <?php include("includes/pied.php")?>
...Voilà...
A voir également:
- Livre d'or Problème en php/mySQL
- Or - Guide
- Livre coran en français pdf - Télécharger - Histoire & Religion
- Télécharger livre de lecture ce2 gratuit pdf - Télécharger - Éducatifs
- Easy php - Télécharger - Divers Web & Internet
- Request header or cookie too large - Forum Webmastering
33 réponses
A cet endroit
Il te manque un ; après $_SESSION['pseudo'].
<input type="hidden" name="pseudo" value="<?php echo $_SESSION['pseudo'] ?>"/>
Il te manque un ; après $_SESSION['pseudo'].
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Aussi rajoute
or die (mysql_error());après
mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "', '" . $ip . "')");comme ca
mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "', '" . $ip . "')")or die (mysql_error());au cas ou cela serait une erreur de requête SQL.
excuse moi arthezius
alors pas de message d'erreur c'est juste que j'arrive pas a poster sur le livre d'or je poste et sa marche pas et je vous ai passer la source ...voila
alors pas de message d'erreur c'est juste que j'arrive pas a poster sur le livre d'or je poste et sa marche pas et je vous ai passer la source ...voila
et un message d'érreur eu faite j'ai remis le code avec les modife
ps le code d'érreur :
Column count doesn't match value count at row 1
ps le code d'érreur :
Column count doesn't match value count at row 1
<?php include ("includes/header.php"); include ("includes/menu.php"); include_once ("includes/bdd.php"); ?> <div id="corps"> <form method="post" action="livreor.php"> <p>Mon site vous plaît ? Laissez-moi un message !</p> <p> <?php if(isset($_SESSION['id'])) { ?> Pseudo : <strong><?php echo $_SESSION['pseudo'] ;?></strong><br /> <input type="hidden" name="pseudo" value="<?php echo $_SESSION['pseudo'] ;?>"/> <?php } else { ?> Pseudo : <input name="pseudo" /><br /> <?php } ?> Message :<br /> <textarea name="message" rows="8" cols="35"></textarea><br /> <input type="submit" value="Envoyer" /> </p> </form> <p class="pages"> <?php mysql_connect("***", "***i", "***"); mysql_select_db("***"); // --------------- Etape 1 ----------------- // Si un message est envoyé, on l'enregistre // ----------------------------------------- if (isset($_POST['pseudo']) AND isset($_POST['message'])) { $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); // On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité $message = nl2br(mysql_real_escape_string(htmlspecialchars($_POST['message']))); // De même pour le message ; Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br /> $ip = $_SERVER['REMOTE_ADDR']; // On peut enfin enregistrer :o) mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "', '" . $ip . "')")or die (mysql_error()); } // --------------- Etape 2 ----------------- // On écrit les liens vers chacune des pages // ----------------------------------------- // On met dans une variable le nombre de messages qu'on veut par page $nombreDeMessagesParPage = 20; // Essayez de changer ce nombre pour voir :o) // On récupère le nombre total de messages $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor'); $donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages']; // On calcule le nombre de pages à créer $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage); // Puis on fait une boucle pour écrire les liens vers chacune des pages echo 'Page : '; for ($i = 1 ; $i <= $nombreDePages ; $i++) { echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> '; } ?> </p> <?php // --------------- Etape 3 --------------- // Maintenant, on va afficher les messages // --------------------------------------- if (isset($_GET['page'])) { $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4) } else // La variable n'existe pas, c'est la première fois qu'on charge la page { $page = 1; // On se met sur la page 1 (par défaut) } // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage; $reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage); while ($donnees = mysql_fetch_array($reponse)) { echo '<div="message_or"><p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p></div>'; } mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o) ?> <div id="clear:both"> <?php include("includes/pied.php")?>
Vérifie le schéma de ta table. D'après cette page https://www.vulgarisation-informatique.com/faq-419--column-count-doesnt-match-value-at-row-1.php lorsque cette erreur arrive cela veut dire que tu as oublie de précisé une colonne dans ta requête.
Par exemple ta table a 5 champs et tu as fait une requête comme INSERT INTO livreor VALUES ('','','','')
L'erreur est d'oublier un champ.
Dans cet exemple la requête qui la bonne est celle-ci INSERT INTO livreor VALUES ('','','','','')
Par exemple ta table a 5 champs et tu as fait une requête comme INSERT INTO livreor VALUES ('','','','')
L'erreur est d'oublier un champ.
Dans cet exemple la requête qui la bonne est celle-ci INSERT INTO livreor VALUES ('','','','','')
Si tu as une table dans ta base de donnée qui comporte 5 colonnes (tu peux vérifier en cas de doute via phpmyadmin) et que tu veux entrer des données via un INSERT INTO, il faut être sur que les données iront dans les bonnes colonnes.
L'exemple donnée plus haut était:
C'est le cas d'une table à 4 colonnes. Chaque '' correspondant à une colonne.
Si tu as 2 colonnes, le code sera:
Si tu as 5 colonnes, le code sera:
Si tu as 6 colonnes, le code sera:
Si tu as 10 colonnes, le code sera:
Etc...
J'espère avoir été clair.
L'exemple donnée plus haut était:
INSERT INTO livreor VALUES ('', '', '', '')
C'est le cas d'une table à 4 colonnes. Chaque '' correspondant à une colonne.
Si tu as 2 colonnes, le code sera:
INSERT INTO livreor VALUES ('', '')
Si tu as 5 colonnes, le code sera:
INSERT INTO livreor VALUES ('', '', '', '', '')
Si tu as 6 colonnes, le code sera:
INSERT INTO livreor VALUES ('', '', '', '', '', '')
Si tu as 10 colonnes, le code sera:
INSERT INTO livreor VALUES ('', '', '', '', '', '', '', '', '', '')
Etc...
J'espère avoir été clair.
et la colonne ou tu met l'adresse IP elle est où ? rajoute s'en une en fin de table si elle n'existe pas. Comme disait Giheller par contre l'inverse ( 4 valeurs dans un table qui n'a que 3 colonnes) donne le message d'erreur spécifié c'est peut-être l'erreur que tu as fais
D'après ce que tu citais comme code tu avais mis :
Tu essais donc d'entrer 4 valeurs dans visiblement trois colonnes.
mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "', '" . $ip . "')");
Tu essais donc d'entrer 4 valeurs dans visiblement trois colonnes.
C'est donc de là que viens le message d'erreur. En fait tu lui demande d'entré une valeur dans une colonne inexistante.
Solutions :
- Soit tu enlèves le $id de ta requète sql,
- Soit tu créés une nouvelle colonne dans ta table pour pouvoir enregistrer cette donnée.
Solutions :
- Soit tu enlèves le $id de ta requète sql,
- Soit tu créés une nouvelle colonne dans ta table pour pouvoir enregistrer cette donnée.