If et else qui ne marche pas :(

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

22 déc. 2005, 01:01

je ne vois pas d'erreur majeure mais tu peut modifier la requete pour séléctionner les champs dont tu as besoin et enlever les quotes autour de l'id puisque c'est un champ numérique.
$retour = "SELECT titre,timestamp,contenu FROM news WHERE id=".$id;
as tu bien un contenu dans la base ? :roll:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 31 Messages

22 déc. 2005, 13:05

Le code marche pas , et oui j'ai bien un contenu news dans la BDD. Serait-t'il possible que quelqun qui est prêt à m'aider me donne son adresse msn com me celà je lui donne tout les fichiers qui ont rapport avec mes news.

Eléphanteau du PHP | 31 Messages

22 déc. 2005, 19:41

Excusez-moi pour le double poste , mais j'ai compris pourquoi le contenu des news ne s'affiche pas. En faîte, dans la BDD tout s'écrit correctement , seulement , le CHAMP "CONTENU" est tourjours vide , donc rien ne s'enregistre. C'est pour ça qu'il y'a pas de contenu. Maintenant il faut trouver la bonne erreur dans mes scripts ^^.

Voici rediger_news.php ( c'est là oû on poste les news )
<?php $bbcode = "TRUE"; include ("../inc/haut.php"); ?>
   <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
mysql_connect("***", "***", "***");
mysql_select_db("***");


if (isset($_GET['modifier_news'])) // Si on demande de modifier une news
{
    // On récupère les infos de la correspondante
    $retour = mysql_query('SELECT * FROM news WHERE id=' . $_GET['modifier_news']);
    $donnees = mysql_fetch_array($retour);
   
    // On place le titre et le contenu dans des variables simples
    $titre = $donnees['titre'];
    $contenu = $donnees['contenu'];
    $id_news = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
}
else // C'est qu'on rédige une nouvelle news
{
    // Les variables $titre et $contenu sont vides, puisque c'est une nouvelle news
    $titre = '';
    $contenu = '';
    $id_news = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
}
?>

<form id="news" method="post" action="liste_news.php">
<p>Titre : <input type="text" size="30" name="titre" value="<?php echo $titre; ?>" /></p>

											<input type="button" value="gras" style="font-weight:bold" onclick="storeCaret('gras')" />
											<input type="button" value="italic" style="font-style:italic" onclick="storeCaret('italic')" />
											<input type="button" value="souligner" style="text-decoration:underline" onclick="storeCaret('souligner')" />
											<input type="button" value="centrer" onclick="storeCaret('centrer')" />
											<input type="button" value="url" style="width:30px;" onclick="storeCaret('url')" />
											<input type="button" value="image" onclick="storeCaret('image')" /><br />
											<select name="couleur" onchange="bbcode_couleur()">
											<option value="">Choisir une couleur</option>
											<option style="color: red;" value="rouge">Rouge</option>
											<option style="color: blue;" value="bleu">Bleu</option>
											<option style="color: green;" value="vert">Vert</option>
											<option style="color: black;" value="noir">Noir</option>
											<option style="color: olive;" value="olive">Olive</option>
											<option style="color: maroon;" value="marron">Marron</option>
											</select >
											<select name="taille" onchange="bbcode_taille()">
											<option value="">Taille du texte</option>
											<?php
											$taille = 8;
											while ($taille != 38)
											
											{
											 echo '<option value="' . $taille . '">' . $taille . '</option>';
											 $taille++;
											 $taille++;
											}
											?>
											</select ><br />
											<form id="news">
										<p>
										
    Contenu :<br />
    <textarea name="contenu" id="newst"rows="5" cols="50"></textarea>
    <?php echo $contenu; ?>
    </textarea><br />
   
    <input type="hidden" name="id_news" value="<?php echo $id_news; ?>" />
    <input type="submit" value="Envoyer" />
</p>
</form>


</body>
</html>
<? include ("../inc/bas.php"); ?>
Et voici , liste news.php ( c'est la page qui traite les news postée etc...)
<?php $bbcode = "TRUE"; include ("../inc/haut.php"); ?>
   <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:0.5px solid black;
            margin:auto;
        }
        th, td
        {
            border:.0.5px solid black;
        }
        </style>
    </head>
   
    <body>


<h2><a href="rediger_news.php">Ajouter une news</a></h2>

<?php
mysql_connect("***", "***", "***");
mysql_select_db("***");


//-----------------------------------------------------
// 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']);
	$contenu =avant_postage(addslashes($_POST['contenu']));
    // On vérifie si c'est une modification de news ou pas
    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 news VALUES('', '" . $titre . "', '" . $contenu . "', '" . time() . "')");
    }
    else
    {
        // C'est une modification, on met juste à jour le titre et le contenu
        mysql_query("UPDATE news 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 on demande de supprimer une news
{
    // Alors on supprime la news correspondante
    mysql_query('DELETE FROM news 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 news 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>
<? include ("../inc/bas.php"); ?>
Voilà , pourtant j'ai essayer de trouver l'erreur de l'enregistrement pour le cotenu news dans la BDD , mais sans succès :( .

Mammouth du PHP | 19672 Messages

22 déc. 2005, 20:10

As-tu testé ta requête dans phpMyAdmin : est-ce que le retour est correct ?

Si oui, alors tu as un problème lors de la récupération et tu ne dois pas pointer sur le bon index quelque part.

Enfin deux chose: utilises donc le bouton [php] au lieu de [code], ça nous donnera une coloration syntaxique plus facile à suivre qu'un vert uniforme. Ensuite, évite donc le SELECT * et au lieu de * mets les noms des champs à récupérer, ce sera plus facile à débugguer par la suite, surtout pour nous parce que tu as peut-être bien justement une erreur à ce niveau-là.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 déc. 2005, 20:08

Il y a un probleme pour le textarea...
<textarea name="contenu" id="newst"rows="5" cols="50"></textarea>
    <?php echo $contenu; ?>
</textarea>
tu le fermes 2 fois dont une fois avant d'y mettre du contenu.

autre chose, sur ces 2 lignes (dont une ne sert a rien, la 1ere :wink: ):
$contenu = addslashes($_POST['contenu']);
$contenu =avant_postage(addslashes($_POST['contenu'])); 
que fait avant_postage() ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute