[RESOLU] Inserer des données dans une table

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Inserer des données dans une table

Re: Inserer des données dans une table

par moogli » 11 juin 2013, 23:10

Modération :
Si ta question est résolue, pense à l'indiquer pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.
Tu peux réaliser cette opération toi-même en cliquant sur le bouton vert "Mettre le sujet en tant que Résolu" situé en haut de la page à côté du titre du sujet.

Re: Inserer des données dans une table

par loolex » 11 juin 2013, 17:03

Yes c'est super ! Merci beaucoup ça marche à merveille =) !

Re: Inserer des données dans une table

par Spols » 11 juin 2013, 16:40

Revoie la façon d'utiliser ta base de donnée

Essaie ça :
<!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> <!-- Permet d'assurer la compatibilité avec les navigateurs internet explorer -->
        <meta charset="utf-8" />
        <link rel="stylesheet" href="style.css" />
        <!--[if lt IE 9]>
        <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
        <title>LoOL3x - Portfolio</title>
    </head>
    <head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="style.css" />
        <title>LoOL3x - Portfolio</title>
    </head>
 
    <body>
        <div id="bloc_page">
            <header>
                <div id="titre_principal">
                    <img src="images/zozor_logo.png" alt="Logo de Zozor" id="logo" />
                    <h1>loolex</h1>
                    <h2>Carnets de voyage</h2>
                </div>
                 
                <nav>
                    <ul>
                        <li><a href="index.php">Accueil</a></li>
                        <li><a href="blog.php">Blog</a></li>
                        <li><a href="cv.php">CV</a></li>
                        <li><a href="#">Contact</a></li>
                    </ul>
                </nav>
            </header>
    <head>
        <title>Mon blog</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link href="style.css" rel="stylesheet" type="text/css" />
    </head>
         
    <body>
        <h1>Mon super blog !</h1>
        <p>Derniers billets du blog :</p>
 
<?php
// Connexion à la base de données
mysql_connect("localhost", "root", "");
mysql_select_db("blog");
 
// On récupère les 5 derniers billets
$retour = mysql_query('SELECT id, titre, contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr FROM news ORDER BY date_creation DESC LIMIT 0, 5');

 ?>
 <div class="news">
 <h3>
 <?php
while ($donnees = mysql_fetch_array($retour))
{

   
        echo htmlspecialchars($donnees['titre']); ?>
        <em>le <?php echo $donnees['date_creation_fr']; ?></em>
    </h3>
     
    <p>
    <?php
    // On affiche le contenu du billet
    echo nl2br(htmlspecialchars($donnees['contenu']));
    ?>
    <br />
    <em><a href="commentaire.php?billet=<?php echo $donnees['id']; ?>">Commentaires</a></em>
    </p>
</div>
<?php
} // Fin de la boucle des billets
?>
</body>
</html>

Re: Inserer des données dans une table

par loolex » 11 juin 2013, 16:23

<!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> <!-- Permet d'assurer la compatibilité avec les navigateurs internet explorer --> 
        <meta charset="utf-8" />
        <link rel="stylesheet" href="style.css" />
        <!--[if lt IE 9]>
        <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
        <title>LoOL3x - Portfolio</title>
    </head>
    <head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="style.css" />
        <title>LoOL3x - Portfolio</title>
    </head>
 
    <body>
        <div id="bloc_page">
            <header>
                <div id="titre_principal">
                    <img src="images/zozor_logo.png" alt="Logo de Zozor" id="logo" />
                    <h1>loolex</h1>
                    <h2>Carnets de voyage</h2>
                </div>
                 
                <nav>
                    <ul>
                        <li><a href="index.php">Accueil</a></li>
                        <li><a href="blog.php">Blog</a></li>
                        <li><a href="cv.php">CV</a></li>
                        <li><a href="#">Contact</a></li>
                    </ul>
                </nav>
            </header>
    <head>
        <title>Mon blog</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link href="style.css" rel="stylesheet" type="text/css" /> 
    </head>
         
    <body>
        <h1>Mon super blog !</h1>
        <p>Derniers billets du blog :</p>
  
<?php
// Connexion à la base de données
try
{
    $bdd = new PDO('mysql:host=localhost;dbname=news', 'root', '');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}
 
// On récupère les 5 derniers billets
$retour = $bdd->query('SELECT id, titre, contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr FROM news ORDER BY date_creation DESC LIMIT 0, 5');

 ?>
 <div class="news">
 <h3>
 <?php
while ($donnees = mysql_fetch_array($retour))
{

    
        echo htmlspecialchars($donnees['titre']); ?>
        <em>le <?php echo $donnees['date_creation_fr']; ?></em>
    </h3>
     
    <p>
    <?php
    // On affiche le contenu du billet
    echo nl2br(htmlspecialchars($donnees['contenu']));
    ?>
    <br />
    <em><a href="commentaire.php?billet=<?php echo $donnees['id']; ?>">Commentaires</a></em>
    </p>
</div>
<?php
} // Fin de la boucle des billets
$retour->closeCursor();
?>
</body>
</html>
J'ai 2 message d'erreur qui s'affiche :Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\portfolio\blog.php on line 64
ligne 64: while ($donnees = mysql_fetch_array($retour))
{

et Fatal error: Call to a member function closeCursor() on a non-object in C:\wamp\www\portfolio\blog.php on line 83
ligne 83: $retour->closeCursor();

Re: Inserer des données dans une table

par Spols » 11 juin 2013, 16:21

redonne le code de cette page depuis le début et redonnant le message d'erreur

Re: Inserer des données dans une table

par loolex » 11 juin 2013, 16:16

Ouaip j'avais pas fait attention mais même en changeant j'ai la même erreur. j'ai tout changé dans le script pourtant :/

Re: Inserer des données dans une table

par Spols » 11 juin 2013, 15:57

Le problème doit venir de la définition de $req
L'erreur te dit que ce n'est pas un objet

Dans tes autres script, tu utilise une autre syntaxe :
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news.
pourquoi changer ?

Re: Inserer des données dans une table

par loolex » 11 juin 2013, 15:52

Je ne sais pas comment mais maintenant cela fonctionne en revanche j'ai une erreur qui n'existait pas avant lors de l'affichage:
<?php
 while ($donnees = $req->mysql_fetch_array()) 
{

    
        echo htmlspecialchars($donnees['titre']); ?>
        <em>le <?php echo $donnees['date_creation_fr']; ?></em>
    </h3>
     
    <p>
    <?php
    // On affiche le contenu du billet
    echo nl2br(htmlspecialchars($donnees['contenu']));
    ?>
    <br />
    <em><a href="commentaire.php?billet=<?php echo $donnees['id']; ?>">Commentaires</a></em>
    </p>
</div>
<?php
} // Fin de la boucle des billets
Mon erreur : Fatal error: Call to a member function mysql_fetch_array() on a non-object in C:\wamp\www\portfolio\blog.php on line 63

la ligne 63 c'est : while ($donnees = $req->mysql_fetch_array())
{
Voila voila si quelqu'un veut bien me dire pourquoi cette erreur s'affiche ? Merci =)

Re: Inserer des données dans une table

par loolex » 11 juin 2013, 15:13

J'ai pas de message d'erreur juste j'ai un problème avec la date car il me marque 01/01/1970. et je vais essayer avec des echo pour voir ou sa bloque et je vous dirai ce que j'ai trouvé.
Merci

Re: Inserer des données dans une table

par Spols » 11 juin 2013, 14:50

As tu un message d'erreur ?
As tu essayé d'ajouter quelques echo dans ton code pour vérifier que les conditions necéssaire soit bien remplie ?

Sans cela il est difficile de regarder ton code et de trouver une erreur

Inserer des données dans une table

par loolex » 11 juin 2013, 13:27

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.
Lors que je rédige un billet avec rediger_news.php et que j'envoi il n'envoi rien, mon INSERT est dans liste_news.php
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
Merci à vous si vous trouver mon problème