Bonjour,
J'ai suivie le tutaux pour créer système de news et ensuite le système de commentaire, pour les news sa marche nickel mes pour les commentaires les donnée ne s'affiche pas dans la base de donnée et l'id de news_id reste a 0.
Quelqu'un pourrais m'aidez svp????
ma page "addcom.php"

<?php
    require "config.php";
    mysql_connect (DB_HOST,DB_LOGIN,DB_PASS);
    mysql_select_db(DB_BDD);
    extract ($_POST);
    $sql="INSERT INTO comment (pseudo, url, mail, contenu, news_id) VALUES ('$pseudo','$url','$mail','$contenu','$news_id')";
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $data= mysql_fetch_assoc($req);
    header ("Location: voir.php?id=$news_id");
?>

ma page "voir.php"

<?php
    require "config.php";
    mysql_connect (DB_HOST,DB_LOGIN,DB_PASS);
    mysql_select_db(DB_BDD);

    $id=$_GET'id'];
    $sql="SELECT * FROM news WHERE id=$id";
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
    $data= mysql_fetch_assoc($req);
        echo "<h1>{$data"titre"]}</h1>";
        echo "<p>{$data"contenu"]}</p>";
        echo "<p align\"right\">".date("j/n/Y G:i",strtotime($data"date"]))."</p>";

    $sql="SELECT * FROM comment WHERE news_id=$id ORDER BY id ASC";
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
    while ($data2=mysql_fetch_assoc($req)){
        echo "-----------------<br />";
        echo $data2 "pseudo"];
        echo "<p>{$data2"contenu"]}</p>";
        echo "-----------------<br />";
    }
?>
    <form action="addcom.php" methode="post">
    Pseudo : <input type="text" name="pseudo"/><br />
    URL : <input type="text" name="url"/><br />
    Mail : <input type="text" name="mail"/><br />
    <textarea name="contenu" style="width:500px; height:200px;"></textarea>
    <input type="submit" value="Envoyer"/>
    <input type="hidden" name="news_id" value="<?php echo $data'id']; ?>"/>
    </form>

ma page "index.php"

<?php
    require "config.php";
    mysql_connect (DB_HOST,DB_LOGIN,DB_PASS);
    mysql_select_db(DB_BDD);
    $sql="SELECT titre,id FROM news";
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
    while($data=mysql_fetch_assoc($req)){
        echo "<a href=\"voir.php?id={$data"id"]}\">{$data"titre"]}</a>";
    $sql="SELECT id FROM comment WHERE news_id={$data"id"]}";
    $req2 = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
        echo "(".mysql_num_rows($req2).")<br />";
    }
?>

bdd "comment"

-- phpMyAdmin SQL Dump
-- version 3.5.1
-- http://www.phpmyadmin.net
--
-- Client: localhost
-- Généré le: Dim 11 Novembre 2012 à 15:44
-- Version du serveur: 5.5.24-log
-- Version de PHP: 5.4.3

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de données: news
--

--
-- Structure de la table comment
--

CREATE TABLE IF NOT EXISTS comment (
id int(4) NOT NULL AUTO_INCREMENT,
pseudo varchar(60) NOT NULL,
url varchar(255) NOT NULL,
mail varchar(100) NOT NULL,
contenu varchar(255) NOT NULL,
news\_id int(3) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=150 ;

--
-- Contenu de la table comment
--

INSERT INTO comment (id, pseudo, url, mail, contenu, news\_id) VALUES
(148, '', '', '', '', 0),
(149, '', '', '', '', 0);

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

4 réponses


sly
Auteur
Réponse acceptée

yes g trouver ce qui allez ps il y avez un e dans mon formulaire...

<form action="addcom.php" methode="post">
il suffi de l'enlever
<form action="addcom.php" method="post">
je pass en resolu

INSERT INTO `comment` (`id`, `pseudo`, `url`, `mail`, `contenu`, `news_id`) VALUES
(148, '', '', '', '', 0),
(149, '', '', '', '', 0);

Etrange ...

Hello :)

Déjà, moi ça me choque.... sur 2 points :

INSERT INTO `comment` (`id`, `pseudo`, `url`, `mail`, `contenu`, `news_id`) VALUES
(149, '', '', '', '', 0);

La colonne ID n'est pas sensé être incrémentale en plus c'est une clé primaire donc... pas besoin de passer la valeur ?

Ensuite, tu fais un insert comme ça :

INSERT INTO `comment` (`id`, `pseudo`, `url`, `mail`, `contenu`, `news_id`) VALUES
(149, '', '', '', '', 0);

Tu passes le news_id = 0 à la base... la bonne requête serait :

$MYSQLPHP = "INSERT INTO `comment` (`pseudo`, `url`, `mail`, `contenu`, `news_id`) VALUES ('', '', '', '', $ID_NEWS)";

A vérifier la syntaxe mais c'est l'idée :)

sly
Auteur

enfaite y'a 2 bases de données, une qui s'appel 'news' et une qui s'appel 'comment'
La base de donnée 'news' et celle qui contient les news a commenter.
La base de donnée 'comment' est celle qui a contiendrais les commentaires poster par les gens.

'news_id' de la base de donnée 'comment' doit correspondre a l'id de la base de donnée 'news'
quand je veus poster un commentaire sa m'affiche cette erreur la au lieu de me rediriger ver la même page (voir.php) avec le commentaire poster... :

Erreur SQL !
SELECT * FROM news WHERE id=
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

et j'ai sa dans la barre d'adresse :

http://127.0.0.1/Sites/news/voir.php?id=

il ne me récupère pas l'id de la base de donnée 'news' donc 'news_id' reste a 0
et mes chanps (pseudo, url, mail et contenu reste vide.

voila la table sql au complet 'news' et 'comment'

-- phpMyAdmin SQL Dump
-- version 3.5.1
-- http://www.phpmyadmin.net
--
-- Client: localhost
-- Généré le: Lun 12 Novembre 2012 à 17:29
-- Version du serveur: 5.5.24-log
-- Version de PHP: 5.4.3
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Base de données: `news`
--
-- --------------------------------------------------------
--
-- Structure de la table `comment`
--
CREATE TABLE IF NOT EXISTS `comment` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `pseudo` varchar(60) NOT NULL,
  `url` varchar(255) NOT NULL,
  `mail` varchar(100) NOT NULL,
  `contenu` varchar(255) NOT NULL,
  `news_id` int(4) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Contenu de la table `comment`
--
INSERT INTO `comment` (`id`, `pseudo`, `url`, `mail`, `contenu`, `news_id`) VALUES
(1, '', '', '', '', 0),
(2, '', '', '', '', 0);
-- --------------------------------------------------------
--
-- Structure de la table `news`
--
CREATE TABLE IF NOT EXISTS `news` (
  `id` int(3) NOT NULL AUTO_INCREMENT,
  `titre` varchar(60) NOT NULL,
  `contenu` mediumtext NOT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
--
-- Contenu de la table `news`
--
INSERT INTO `news` (`id`, `titre`, `contenu`, `date`) VALUES
(3, 'test', 'news 1', '2012-11-06 18:03:43'),
(5, 'salut', 'news 2', '2012-11-06 18:04:41'),
(6, 'message testtttt', 'news 3', '2012-11-06 22:08:49');
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Sa ses 2 commentaires que j'ai essayé de poster pour vous montrez ce que sa fait

INSERT INTO `comment` (`id`, `pseudo`, `url`, `mail`, `contenu`, `news_id`) VALUES
(1, '', '', '', '', 0),
(2, '', '', '', '', 0);

Pour répondre a
vash60700
Déjà un grand merci pour votre réponse...

Déjà, moi ça me choque.... sur 2 points :
1
2

INSERT INTO `comment` (`id`, `pseudo`, `url`, `mail`, `contenu`, `news_id`) VALUES
(149, '', '', '', '', 0);
149 parce que sa fesais 149 fois que j'essayer de mettre un commentaire lol

La colonne ID n'est pas sensé être incrémentale en plus c'est une clé primaire donc... pas besoin de passer la valeur ?

La colonne est incrementable pour lister les commentaires, ses la colonne news_id qui est es senser liez les 2 bases de donnée ensemble.
Aprés pour ce qui es de passer la valeur... je ne ses pas du tout je suis débutant et en pleine apprentissage.

J'ai suivie ses 2 tuto la
pour le systeme de news qui marche trés bien : Texte du lien

Et ce tuto pour le système de commentaire et la sa bloque des le début au moment de insérer les commentaires dans la base de donnée.
Texte du lien

En espérant avoir était clair dans mon explication.