Problemes PHP avec UPDATE



  • Bonjour,

    Je viens demander votre aide pour un problème ayant apparu sur mon site…

    Comme parler ne sert à rien, je vous mets le bout de code défectueux :
    Pour précision, cette partie de ma page d'administration sert à modifier une news déjà crée.

    Formulaire :

    $id = htmlentities($_GET['voir'], ENT_QUOTES);
    		$retour = mysql_query('SELECT * FROM news WHERE id="'.$id.'"')or die(mysql_error());
    		$donnees = mysql_fetch_array($retour);
    		?>
    
    			<b>Titre :</b> <?php echo $donnees['titre']; ?><br />
    			<b>Date :</b> <?php echo $donnees['date']; ?><br />
    			<b>Posteur :</b> <?php echo $donnees['posteur']; ?><br />
    			<form action="administration.php?page=news&modify=<?php echo $donnees['id']; ?>" method="post">
    				<b>News :</b> <textarea name="news" rows=10 COLS=40><?php echo $donnees['news']; ?></textarea><br />
    				<input type="submit" name="modify" value="Modifier cette news" />
    			</form>
    

    La ou est envoyé la requete du formulaire :

    if(isset($_GET['modify'])) {
    		$id = $_GET['modify'];
    		$news = $_POST['news'];
    		mysql_query('UPDATE news SET news="'.$news.'" WHERE id="'.$id.'"')or die(mysql_error());
    		?>
    			<img src="../images/valid.png">News modifiée avec succès ! ( ou pas... )
    			<?php echo $news; ?><br /><br />
    			<a href="administration.php?page=news"><img src="../images/retour.png" alt="retour"></a>
    

    Et maintenant le problème :
    La mise à jour dans la base de données ne fonctionne pas.
    Enfin si elle fonctionne mais fais comme si la variable "$news" est vide, ce qui fait que je me retrouve avec une news toute blanche, sans contenu, c'est pourquoi j'ai eu l'idée de placer un "echo $news" et la, surprise, il m'affiche la news que j'ai définit dans le formulaire.

    La variable $news est vidé juste pour la requete de modification en fait.

    J'essaye de voir ce qui ne va pas dessus depuis le debut d'apres-midi mais la, je cale alors svp aidez moi ^^.

    Merci d'avance.

    EDIT : J'ai oublié de préciser que quand je rentre manuellement la variable $news ( c'est à dire en faisant [ $news = "blablabla"; ] ), la news change bien pour devenir blablabla et l'echo fonctionne impec.

    EDIT :

    <?php } elseif($_GET['page'] == 'news') { ?>
    
    	<div id="boiteTexte">
    
    		<p class="titreManga">Gestion des News<br /></p>
    
    		<?php
    		if($_GET['action'] == 'ajouter') { 
    			if((isset($_POST['valider'])) AND ($_POST['date'] != '') AND ($_POST['posteur'] != '') AND ($_POST['news'] != '')) { 
    			$date = $_POST['date'];           
    			$posteur = $_POST['posteur'];
    			$titre = $_POST['titre'];
    			$news = $_POST['news'];
    			mysql_query('INSERT INTO news VALUES ("", "'.$date.'", "'.$posteur.'", "'.$titre.'", "'.$news.'")')or die(mysql_error());
    		?>
    			<img src="../images/valid.png"> News ajoutée avec succès !<br /><br />
    			<a href="administration.php?page=news"><img src="../images/retour.png" alt="retour"></a><br />
    		<?php
    		}
    		else { 
    		?>
    			<form action="administration.php?page=news&action=ajouter" method="post">
    				<b>Titre :</b> <br /><input type="text" name="titre" /><br />
    				<?php
    				$Jour = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");
    				$Mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre", "Décembre");
    				$datefr = $Jour[date("w")]." ".date("d")." ".$Mois[date("n")]." ".date("Y");
    				$jour = date("d");	$mois = date("F");	$annee = date("Y");	$heure = date("H");	$min = date("i");
    					if ($min <= 01)
    					{
    					$pluriel_min = "";
    					}
    					else
    					{
    					$pluriel_min = "";
    					}
    					if ($heure <= 01)
    					{
    					$pluriel = "H";
    					}
    					else
    					{
    					$pluriel = "H";
    					}
    				?>
    				<b>Date :</b> <br /><input type="text" name="date" value="<?php echo $datefr; echo ' à '; ?><?php echo $heure ?><?php echo $pluriel ?><?php echo $min ?><?php echo $pluriel_min ?>"/><br />
    				<b>Posteur :</b> <br /><input type="hidden" name="posteur" value="<?php echo $_SESSION['pseudo'] ?>" /><?php echo $_SESSION['pseudo'] ?><br />
    				<b>News :</b> <br /><textarea name="news" rows=10 COLS=40></textarea><br /><br />
    				<input type="submit" name="valider" value="Ajouter cette news" />
    			</form>					
    			<br /><a href="administration.php">Retour à l'administration</a><br />
    			<?php
    			}
    		}
    
    		elseif(isset($_GET['voir'])) {
    		$id = htmlentities($_GET['voir'], ENT_QUOTES);
    		$retour = mysql_query('SELECT * FROM news WHERE id="'.$id.'"')or die(mysql_error());
    		$donnees = mysql_fetch_array($retour);
    		?>
    
    			<b>Titre :</b> <?php echo $donnees['titre']; ?><br />
    			<b>Date :</b> <?php echo $donnees['date']; ?><br />
    			<b>Posteur :</b> <?php echo $donnees['posteur']; ?><br />
    			<form action="administration.php?page=news&modifier=<?php echo $id; ?>" method="post">
    				<b>News :</b> <textarea name="news" rows=10 COLS=40><?php echo $donnees['news']; ?></textarea><br />
    				<input type="submit" name="modifier" value="Modifier cette news" />
    			</form>
    			<a href="administration.php?page=news"><img src="../images/retour.png" alt="retour"></a> - <a href="administration.php?page=news&supprimer=<?php echo $donnees['id']; ?>" onclick="if (window.confirm('Voulez-vous vraiment supprimer cette news ?')) {return true;} else {return false;}"><img src="../images/supp.png" alt="supprimer"></a>
    		<?php
    		}
    
    		elseif(isset($_GET['supprimer'])) { 
    		$id = htmlentities($_GET['supprimer'], ENT_QUOTES);
    		mysql_query('DELETE FROM news WHERE id="'.$id.'"')or die(mysql_error()); // Execution de la requete
    		?>
    			<img src="../images/valid.png">News supprimée avec succès !<br /><br />
    			<a href="administration.php?page=news"><img src="../images/retour.png" alt="retour"></a>
    		<?php
    		}
    
    		elseif(isset($_GET['modifier'])) {
    		$id = $_GET['modifier'];
    		$news = $_POST['news'];
    		mysql_query("update news set news.news='$news' where news.id=$id");
    		?>
    			<img src="../images/valid.png">News modifiée avec succès ! ( ou pas... )
    			<br />Affichage de la variable news :<br /><?php echo $news; ?><br /><br />
    			<a href="administration.php?page=news"><img src="../images/retour.png" alt="retour"></a>			
    		<?php
    		}
    
    		else { 
    		?>
    			<p align="center">
    			<a href="administration.php"><img src="../images/retour.png"> Retour à l'administration</a><br />
    			<a href="administration.php?page=news&action=ajouter"><img src="../images/nouveau.png" alt="Nouvelle news">Ajouter une news !</a>
    			</p>
    			<table align="center">
    				<tr>
    					<td align="center" valign="middle">Titre</td>
    					<td align="center" valign="middle">Date</td>
    					<td align="center" valign="middle">Voir</td>
    					<td align="center" valign="middle">Supprimer</td>
    				</tr>
    			<?php
    			$retour = mysql_query('SELECT * FROM news ORDER BY id DESC')or die(mysql_error()); // on va chercher toutes les news et on les affiche dans un tableau
    			while($donnees = mysql_fetch_array($retour)) {
    			?>
    				<tr>
    					<td align="center" valign="middle"><?php echo $donnees['titre']; ?></td>
    					<td align="center" valign="middle"><?php echo $donnees['date']; ?></td>
    					<td align="center" valign="middle"><a href="administration.php?page=news&voir=<?php echo $donnees['id']; ?>"><img src="../images/voir.png"></a></td>
    					<td align="center" valign="middle"><a href="administration.php?page=news&supprimer=<?php echo $donnees['id']; ?>" onclick="if (window.confirm('Voulez-vous vraiment supprimer cette série ?')) {return true;} else {return false;}"><img src="../images/supp.png" alt="supprimer"></a></td>
    				</tr>
    			<?php
    			}
    			?>
    			</table>
    		<?php
    		}
    		?>
    
    		<p><img src="../images/separateurTexte.gif" alt="separation" width="415" height="6" /></p>
    
    	</div>
    


  • En supposant que la variable $id soit toujours numérique remplace

    mysql_query('UPDATE news SET news="'.$news.'" WHERE id="'.$id.'"')or die(mysql_error()); 
    
    

    par

    mysql_query('UPDATE news SET news=''.$news.'' WHERE id='.$id)or die(mysql_error()); 
    

    Pour voir ce que sa fait…



  • Toujours rien, que je mette n'importe lequel des 2 codes j'obtiens le même resultat ( je vais mettre quelques images )…

    Page d'édition de la news :

    Page s'affichant après modification de la news

    Page ou est censé s'afficher la news :

    Merci de m'aider…


  • Administrateur

    Perso, je vois pas pourquoi tu te complique la vie, pourquoi ne pas faire un simple :
    mysql_query("UPDATE news SET news='$news' WHERE id='$id'");

    'fin, j'vois pas pourquoi tu te casse le cul avec tes '.variable.', elles ne servent à rien tes ponctuations. Ca ne sert que quand on est dans une boucle ça.



  • De toute façon, ponctuation ou non, le résultat reste le même…


  • Administrateur

    C'est que le problème est au dessus… T'a vérifié toutes les variables que tu passe, notamment la variable id ?



  • Comme je l'ai dit, j'avais fait un test en remplaçant la variable news par une valeur prédéfinie et la requête s'exécutait normalement donc l'id ne doit pas y être pour grand chose ( surtout que c'est bien la news que j'essaye de modifier qui devient vierge donc l'id est correct. )

    EDIT : J'ai essayé en remplaçant l'ID par une autre variable tel que le titre de la news ou la date et le résultat est le même.



  • et si tu utilise $_POST['news'] au lieu de $news dans ta requête?



  • Déjà essayé, ça ne change rien…



  • j'ai pas l'impression en regardant ton code que ça puise venir du $news, vue que tout semble correcte de ce coté.



  • J'avoue que la, je ne comprends pas, et que ça m'énerve quand même car depuis hier en début d'après-midi je suis dessus et je ne trouve pas…

    Et c'est aps comme si cela venait de la BDD car l'ajout de news fonctionne toujours très bien, tout comme la suppression et la vision...

    EDIT : Nan en effet cela ne vient pas de la variable news car j'ai essayé en incluant le titre dans le formulaire avec un input et j'ai mis ma requête pour modifier le titre cela ne marche pas. Le problème vient de l'UPDATE.



  • Ayant eu un énorme doute, j'ai essayé de modifier un manga toujours via un formulaire post et une requête UPDATE, cela a toujours marché et je n'ai rien modifié de ma page pourtant, cela ne marche plus, les données se suppriment…

    C'est pourquoi il y a effectivement un problème avec les formulaires, les requêtes UPDATE et les variables xD

    Bon en fait le problème vient bien de moi mais je vois vraiment pas ou et ca m'énerve...



  • ils pourrait y avoir un conflit entre le fait que ta table s'appelle news et que ton champ à mettre à jour également.

    Essaye cette syntaxe pour voir

    "update news set news.news='$news' where news.id=$id"



  • Je vais essayer mais si ça vient vraiment de ça :

    1 / Pourquoi ça a toujours marché avant ?
    2 / Pourquoi ça ne marche plus pour les animes, les osts, les dramas etc etc…

    Le code donné par lave ne fonctionne pas...


  • Administrateur

    Peut être une include plus haut qui bloque quelque chose.
    La honnêtement, je ne vois pas non plus, on dirais que les register global ne fonctionnent pas correctement ou que ça tourne en PHP4, chose impossible en soit.



  • Je vais voir pour un include, au début je pensais à une défaillance du NS7 mais j'ai tout transféré sur NS6 et même problème…

    Mais ce que je ne comprends pas c'est que même en mettant un vieux backup qui fonctionnait cela ne fonctionne plus :/



  • une accolade n'est pas fermée dans ton code :

    		 if(isset($_GET['modify'])) { 
          $id = $_GET['modify']; 
          $news = $_POST['news']; 
          mysql_query('UPDATE news SET news="'.$news.'" WHERE id="'.$id.'"')or die(mysql_error()); 
          [color=red]}[/color]
    

    peut-etre cela qui pose probleme :)



  • Nan je la ferme plus bas j'ai juste oublié de la mettre sur Freeheberg :p



  • tu peux nous donner les bouts de codes corrects stp?, pour que l'on puisse voir cela correctement ^^



  • Voilou j'ai mis toute l'administration des news.


Log in to reply