Page 1 sur 1

Inserer des données dans une table

Posté : 11 juin 2013, 13:25
par loolex
Bonjour,
J'ai créer un espace permettant de gérer un espace qui permet de créer des news sur un blog, j'ai suivis un tuto qui permet donc d'ajouter, de modifier, ou de supprimer des billets.
Le problème c'est que je peux modifier, ou supprimer les billets déjà existants qui on été rajouter directement dans la base de données mais je n'arrive pas a ajouter un billet lorsque j'envoi il ne rentre pas dans ma base de données. je ne trouve pas l'erreur si quelqu’un pouvait m'aider
liste_news.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>Liste des news</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <style type="text/css">
        h2, th, td
        {
            text-align:center;
        }
        table
        {
            border-collapse:collapse;
            border:2px solid black;
            margin:auto;
        }
        th, td
        {
            border:1px solid black;
        }
        </style>
    </head>
     
    <body>
  
<h2><a href="rediger_news.php">Ajouter une news</a></h2>
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("blog");
//-----------------------------------------------------
// Vérification 1 : est-ce qu'on veut poster une news ?
//-----------------------------------------------------
if (isset($_POST['titre']) AND isset($_POST['contenu']))
{
    $titre = addslashes($_POST['titre']);
    $contenu = addslashes($_POST['contenu']);
    // On vérifie si c'est une modification de news ou non.
    if ($_POST['id_news'] == 0)
    {
        // Ce n'est pas une modification, on crée une nouvelle entrée dans la table.
        mysql_query('INSERT INTO billets VALUES(titre, contenu, timestamp) VALUES(:titre, :contenu, :timestamp, NOW())');
		
    }
    else
    {
        // On protège la variable "id_news" pour éviter une faille SQL.
        $_POST['id_news'] = addslashes($_POST['id_news']);
        // C'est une modification, on met juste à jour le titre et le contenu.
        mysql_query("UPDATE billets SET titre='" . $titre . "', contenu='" . $contenu . "' WHERE id='" . $_POST['id_news'] . "'");
    }
}
  
//--------------------------------------------------------
// Vérification 2 : est-ce qu'on veut supprimer une news ?
//--------------------------------------------------------
if (isset($_GET['supprimer_news'])) // Si l'on demande de supprimer une news.
{
    // Alors on supprime la news correspondante.
    // On protège la variable « id_news » pour éviter une faille SQL.
    $_GET['supprimer_news'] = addslashes($_GET['supprimer_news']);
    mysql_query('DELETE FROM billets WHERE id=\'' . $_GET['supprimer_news'] . '\'');
}
?>
<table><tr>
<th>Modifier</th>
<th>Supprimer</th>
<th>Titre</th>
<th>Date</th>
</tr>
<?php
$retour = mysql_query('SELECT * FROM billets ORDER BY id DESC');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news.
{
?>
<tr>
<td><?php echo '<a href="rediger_news.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href="liste_news.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><?php echo stripslashes($donnees['titre']); ?></td>
<td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
</tr>
<?php
} // Fin de la boucle qui liste les news.
?>
</table>
</body>
</html>
rediger_news.php
<?php
// on teste si le formulaire a été validé
if (isset($_POST['go']) && $_POST['go']=='Poster la news') {
	// on se connecte à notre base
	$base = mysql_connect ('localhost', 'root', '');
	mysql_select_db('news', $base);

	// on teste la déclaration de nos variables
	if (!isset($_POST['auteur']) || !isset($_POST['titre']) || !isset($_POST['news'])) {
		$erreur = 'Les variables nécessaires au script ne sont pas définies.';
	}
	else {
		if (empty($_POST['auteur']) || empty($_POST['titre']) || empty($_POST['news'])) {
			$erreur = 'Au moins un des champs est vide.';
		}
		// si tout est bon, on peut commencer l'insertion dans la base
		else {
			// lancement de la requête d'insertion
			$sql = 'INSERT INTO news VALUES("", "'.mysql_escape_string($_POST['titre']).'", "'.mysql_escape_string($_POST['contenu']).'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['news']).'")';

			// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
			mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

			// on ferme la connexion à la base de données
			mysql_close();

			// on redirige vers la page d'accueil du site (attention, cette redirection ne fonctionne qui si vous avez placé cette page dans un répertoire à partir de la racine du site). Si ce n'est pas le cas, veuillez entrer ici le bon chemin d'accès afin de retomber sur la page d'accueil du site.
			header('Location: ../index.php');
			// on termine le script courant
			exit();
		}
	}
}
?>
<html>
<head>
<title>Insertion d'une nouvelle news</title>
</head>

<body>

<!-- on fait pointer le formulaire vers la page traitant les données -->
<form action="rediger_news.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">Titre :</span>
</td><td>
<input type="text" name="titre" maxlength="50" size="50" value="<?php if (isset($_POST['titre'])) echo htmlentities(trim($_POST['titre'])); ?>">
</td></tr><tr><td>
<span class="gras">News :</span>
</td><td>
<textarea name="news" cols="50" rows="10"><?php if (isset($_POST['news'])) echo htmlentities(trim($_POST['news'])); ?></textarea>
</td></tr><tr><td><td align="right">
<input type="submit" name="go" value="Poster la news">
</td></tr></table>
</form>
<?php
// on affiche les erreurs éventuelles
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>
base de donnée
 1	id	int(11)			Non	Aucune	AUTO_INCREMENT 
	 2	titre	varchar(255)	latin1_swedish_ci 
	 3	contenu	text	latin1_swedish_ci 
	 4	timestamp	bigint(20) 
	 5	date_creation	datetime

Re: Inserer des données dans une table

Posté : 11 juin 2013, 23:10
par moogli
Modération :
Le multipostage est interdit sur le forum.

Ce sujet a été verrouillé et sera supprimé sous peu.
Des réponses peuvent être apportées à cette adresse :
php-debutant/inserer-des-donnees-dans-u ... 68367.html

Merci de prendre le temps de lire les règlements.