Livre d'or Problème en php/mySQL

Résolu/Fermé
web-actu Messages postés 99 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 21 août 2009 - 5 janv. 2009 à 20:17
web-actu Messages postés 99 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 21 août 2009 - 21 août 2009 à 11:09
Bonjour, j'ai recement eu un probleme avec le livre d'or.

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:

33 réponses

bissdebrazza Messages postés 2065 Date d'inscription vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 712
5 janv. 2009 à 20:41
salut!
C'est quoi ton problème??
0
web-actu Messages postés 99 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 21 août 2009 6
6 janv. 2009 à 20:00
c'est que j'arrive pas a poster un message
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
6 janv. 2009 à 20:23
Qu'est-ce qui bloque ? Qu'est-ce qui se passe ? Quelle message d'erreur ?
0
Utilisateur anonyme
6 janv. 2009 à 20:29
A cet endroit
<input type="hidden" name="pseudo" value="<?php echo $_SESSION['pseudo'] ?>"/>

Il te manque un ; après $_SESSION['pseudo'].
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
web-actu Messages postés 99 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 21 août 2009 6
7 janv. 2009 à 13:48
tu es raison mais ca marche quand meme pas
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
7 janv. 2009 à 14:21
Et si tu répondais a mes questions ?
0
Utilisateur anonyme
7 janv. 2009 à 16:49
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.
0
web-actu Messages postés 99 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 21 août 2009 6
7 janv. 2009 à 16:54
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
0
web-actu Messages postés 99 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 21 août 2009 6
7 janv. 2009 à 17:00
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
0
web-actu Messages postés 99 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 21 août 2009 6
7 janv. 2009 à 17:02
<?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")?>

0
Utilisateur anonyme
7 janv. 2009 à 17:14
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 ('','','','','')
0
web-actu Messages postés 99 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 21 août 2009 6
10 janv. 2009 à 17:40
j'ai pas bien compris
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
10 janv. 2009 à 17:51
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:
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.
0
Utilisateur anonyme
10 janv. 2009 à 18:05
Bonsoir,

je ne suis pas tout à fait d'accord avec toi.
on peut trés bien faire un insert avec 3 valeurs dans une table qui contient 4 colonnes : la dernière ne sera pas renseignée;
par contre l'inverse ( 4 valeurs dans un table qui n'a que 3 colonnes) donne le message d'erreur spécifié.

--
0
web-actu Messages postés 99 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 21 août 2009 6 > Utilisateur anonyme
10 janv. 2009 à 19:03
quel message d'érreur ?? celui que j'ai dit
0
web-actu Messages postés 99 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 21 août 2009 6
10 janv. 2009 à 19:03
dans ma table ya 3 colone un id une pseudo une message
0
Utilisateur anonyme
10 janv. 2009 à 19:10
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
0
web-actu Messages postés 99 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 21 août 2009 6
10 janv. 2009 à 19:18
ok et je crois que tu as raison
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
10 janv. 2009 à 19:34
D'après ce que tu citais comme code tu avais mis :
mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "',  '" . $ip . "')");

Tu essais donc d'entrer 4 valeurs dans visiblement trois colonnes.
0
web-actu Messages postés 99 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 21 août 2009 6
10 janv. 2009 à 20:03
beh oui j'ai mis sa dans la code et dans ma table ya 3 colone une id et pseudo et message
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
10 janv. 2009 à 20:27
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.
0
web-actu Messages postés 99 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 21 août 2009 6
10 janv. 2009 à 20:40
nouveau message d'erreur

Duplicate entry '0' for key 1
0
web-actu Messages postés 99 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 21 août 2009 6
10 janv. 2009 à 20:42
maitenant ma table conte colone

une id une pseudo une message une ip
0
web-actu Messages postés 99 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 21 août 2009 6
10 janv. 2009 à 20:47
http://riridi.olympe-network.com/livreor.php <<<<<<<<---- le lien
0