Problème avec requête PHP-MySQL

Bonjour à tous,

J’ai un problème avec mon code PHP:

J’ai réalisé un script de news à l’aide du site du zéro et je l’ai intégré à mon site. Mais aujourd’hui, j’ai voulu inséré un champs source qui doit s’afficher sous le titre. J’aimerai aussi affiché un champs Auteur. Pour se faire, j’ai rajouté un champs source dans ma base de donnée via PHPMyAdmin, j’ai rajouté se champs dans l’index ainsi que dans mon fichier rediger.php. Seul bémol, lorsque je poste une news, elle ne s’affiche pas dans l’index ni dans ma liste de news dans l’administration. Une fois que je supprime le champs source de ma base de donnée, tout va bien, j’arrive à publié mes news. Mais j’aimerai tout de même pouvoir mettre la source de ma news ainsi que le rédacteur.

Voici mes deux fichiers, si vous pouvez jeter un petit coup d’oeil pour m’expliquer comment faire, ce serait super:

Mon index.php:

[spoiler]<!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>WidePSP - Accueil</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <link rel="shortcut icon" href="favicon.gif" type="image/ico" />
	<link rel="stylesheet" type="text/css" href="style.css" title="default" media="screen" />
<style type="text/css">
img{border: none;}
a{color: #FEC425; text-decoration: none;}
h2{font-size: 15px;}
.titre_news{text-indent: 30px; color: #FEC425; font-size: 10px;}
.commentaire{text-align: right;}
.fond_news{border-bottom: 1px solid #333333;}

</style>
<script language="JavaScript">
function OuvrirPop(url,nom,haut,Gauche,largeur,hauteur,options) {
ouvpop=window.open(url,nom,"top=" haut ",left=" Gauche ",width=" largeur ",height=" hauteur "," options);
}
</script>
</head>
<body>

	<div id="global">

		<!-- Début du header, ici sera affiché le header et les différents liens qu'il contient -->
		
		<div id="header">
		</div>

		<!-- Début du menu, ici seront affichés les liens de votre page web -->
		
		<div id="menu">
			<h2>Navigation</h2>
				<img src="images/interface/sous_menu.png" alt=""/>
				<ul>
					<li><a href="http://www.widepsp.niloo.fr/"> Accueil</a></li>
					<li><a href="http://www.widepsp.niloo.fr/forums"> Forum</a></li>
					<li><a href="http://www.widepsp.niloo.fr/new/admin"> Administration</a></li>
				</ul>	
			<h2>Tuto</h2>
				<img src="images/interface/sous_menu.png" alt=""/>
				<ul>
					<li><a href="http://www.widepsp.niloo.fr/tuto/CXMB.php"> CXMB</a></li>
				</ul>	
			<h2>Partenaires</h2>
				<img src="images/interface/sous_menu.png" alt=""/>
				<ul>
					<li><a href="http://www.widepsp.niloo.fr/"> Il n'y a pas de partenaires</a></li>
				</ul>	
			<h2>Autres</h2>
			<img src="images/interface/sous_menu.png" alt=""/>
			<div align="center" id="xiti-logo">
<a href="http://www.xiti.com/xiti.asp?s=358822" title="WebAnalytics">
<script type="text/javascript">
<!--
Xt_param = 's=358822&p=';
try {Xt_r = top.document.referrer;}
catch(e) {Xt_r = document.referrer; }
Xt_h = new Date();
Xt_i = '<img width="80" height="15" border="0" ';
Xt_i = 'src="http://logv145.xiti.com/oco.xiti?' Xt_param;
Xt_i = '&hl=' Xt_h.getHours() 'x' Xt_h.getMinutes() 'x' Xt_h.getSeconds();
if(parseFloat(navigator.appVersion)>=4)
{Xt_s=screen;Xt_i ='&r=' Xt_s.width 'x' Xt_s.height 'x' Xt_s.pixelDepth 'x' Xt_s.colorDepth;}
document.write(Xt_i '&ref=' Xt_r.replace(/[<>"]/g, '').replace(/&/g, '$') '">');
//-->
</script>
<object>
<noscript>
<div id="xiti-logo-noscript">
<img width="80" height="15" src="http://logv145.xiti.com/oco.xiti?s=358822&p=&" alt="WebAnalytics" />
</div>
</noscript>
</object>
</a>
</div>
			</div>
		
		<!-- Début du contenu, c'est ici que le contenu de votre site est affiché -->
		
		<div id="contenu">
		<?php
require_once('new/admin/includes/config.sql.php');
require_once('new/admin/includes/class.sql.php');
$db = new sql($host, $user, $pass, $db);

$nombreDeMessagesParPage = 7;
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM news');
$donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages'];
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i )
{
 echo '<a href="index.php?page=' . $i . '">' . $i . '</a> ';
}


if (isset($_GET['modifier_news']))
{
 $contenu = stripslashes($_POST['contenu']); 
 $contenu = htmlspecialchars($contenu);
 $contenu = nl2br($contenu); 
 


} 

if (isset($_GET['page']))
{
 $page = $_GET['page']; 
}
else
{
 $page = 1; 
}
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
while ($donnees = mysql_fetch_array($retour))
{
?>

<div id="topnews"><h2><?php echo $donnees['titre']; ?></h2>
<h2 class="titre_news">news ecrite le <?php echo date('d/m/Y à H\hi', $donnees['timestamp']);?>. Source: <?php echo $donnees['source']; ?></h2></div>
<div id="news"><div>
<p class="newstxt"><?php
 $contenu = nl2br(stripslashes($donnees['contenu']));
 echo $contenu;
 ?></p><br />
 <br />


</div>
</div>
<div id="basnews"></div>
<p class="commentaire">
<a href='javascript:OuvrirPop("commentaires.php?idnews=<?php echo $donnees['id']; ?>&titrenews=<?php echo stripslashes($donnees['titre']); ?>","fencent",10,10,400,600,"menubar=no,scrollbars=no,statusbar=no")' title="Commentaires de le news.">
<?php $infos_com = mysql_query('SELECT COUNT(*) AS nb_com FROM commentaires WHERE idnews=' . $donnees['id']);
$donnees_com = mysql_fetch_array($infos_com);
$totalDesCommentaires = $donnees_com['nb_com'];
echo $totalDesCommentaires;
?> commentaire(s)</a>  |<a href='javascript:OuvrirPop("addcomment.php?idnews=<?php echo $donnees['id']; ?>&titrenews=<?php echo stripslashes($donnees['titre']); ?>","fencent",10,10,400,600,"menubar=no,scrollbars=no,statusbar=no")' title="Ajouter un commentaire !" >   Ajouter</a></p><p class="fond_news"></p><br /><br />


<?php
}

mysql_close(); ?>
		</div>
		
		<!-- Début du footer -->
		
		<br />
		<br/>
		<p id="footer">Interface graphique par Thoy pour <a href="http://kits-gratuits.net/" title="Kit Graphiques Gratuits valides xHTML 1.0 Strict - CSS2">Kits-Gratuits.net</a></p>
		


	</div>

<!-- Copyright à laisser : Interface graphique par Thoy et découpe par Cécile -->
<!-- Pour : [kits-gratuits.net...](http://kits-gratuits.net/) -->

</body>
</html>[/spoiler]


Mon fichier rediger.php:

[spoiler]


<!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>Rédiger une news</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <style type="text/css">
 h3, form
 {
 text-align:center;
 }
 </style>
 </head>
 
 <body>
<h3><a href="liste_news.php">Retour à la liste des news</a></h3>
<?php
require_once('includes/config.sql.php');
require_once('includes/class.sql.php');
$db = new sql($host, $user, $pass, $db); 
if (isset($_GET['modifier_news'])) 
{

 $_GET['modifier_news'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_news']));

 $retour = mysql_query('SELECT * FROM news WHERE id=\'' . $_GET['modifier_news'] . '\'');
 $donnees = mysql_fetch_array($retour);
 
 
 $titre = stripslashes($donnees['titre']);
	$source = stripslashes($donnees['source']);
 $contenu = stripslashes($donnees['contenu']);
 $id_news = $donnees['id']; 
}
else 
{
 $titre = '';
	$source = 'Source';
 $contenu = '';
 $id_news = 0; 
}
?>
<form action="liste_news.php" method="post">
<p>Titre : <input type="text" size="30" name="titre" value="<?php echo $titre; ?>" /></p>
<p>
<p>Source : <input type="text" size="30" name="pseudo" value="<?php echo $source; ?>" /></p>
<p> </p>
 Contenu :<br />
 <textarea name="contenu" cols="50" rows="10">
 <?php echo $contenu; ?>
 </textarea><br />
 
 <input type="hidden" name="id_news" value="<?php echo $id_news; ?>" />
 <input type="submit" value="Envoyer" />
</p>
</form>
<p align="center"><font size="2"><a href="index.php">Retour</a></font></p>
</body>
</html>

[/spoiler]

Merci d’avance pour vos réponses

Wallabix

Dans le fichier rediger.php, ton formulaire est incorrect pour le champs source, tu as mis à l’input le nom de “pseudo”.

Remplace la ligne suivante :

<p>Source : <input type="text" size="30" name="pseudo" value="<?php echo $source; ?>" /></p>

Par celle-ci :

<p>Source : <input type="text" size="30" name="source" value="<?php echo $source; ?>" /></p>

Ensuite, un petit conseil, tu utilises encore la fonction mysql_fetch_array(), cette fonction est obselète, il vaudrait mieux la remplacer par mysql_fetch_assoc() pour un soucis de compatibilité ascendante en vue des prochaines améliorations de php.

Bonne soirée!

J’ai réalisé les modifications, mais mon index.php plante maintenant, il fait planter le navigateur.

Ensuite, merci pour l’astuce du mysql_fetch_assoc() mais pour le moment, mon hébergeur n’a pas activé cette fonction, donc je vais lui demandé :slight_smile:

Merci :slight_smile:

Bonne soirée