Probleme pour Modifier mon formulaire

Ludoo
Invité n'ayant pas de compte PHPfrance

26 mars 2006, 22:54

Bonjour à tous,
alors voila je souhaite pouvoir modifier mon forumaire de news dans mon administration.

Pour cela, j'ai 2 pages :
news_modif.php & news_modif2.php
sur la 1e page, il y a le formulaire et le contenu de ce formulaire, faisant appel à la 2e page qui va mettre à jour la base de donnée.

Mon probleme est le suivant : lorsque je valide ma modification, rien ne s'affiche, enfait la requête n'est pas executée :/

Le code de la page news_modif.php :

<link href="style.css" rel="stylesheet" type="text/css">

<script language="javascript" type="text/javascript" src="jscripts/tiny_mce/tiny_mce.js"></script>
<script language="javascript" type="text/javascript">
tinyMCE.init({
mode : "textareas"
});
</script>
<?
require "secret/connect.php";


$id  = $_GET['id'] ;


$sql = mysql_query ("SELECT id,titre,texte, DATE_FORMAT(news.date, '%d/%m/%Y') AS date_formattee FROM news WHERE id = $id ");
	     
     while ($ze_news = mysql_fetch_array ($sql))

        {

            $titre = $ze_news["titre"];
          
            $texte = $ze_news["texte"];

            $id    = $ze_news["id"];
  
  ?> 
  <form name="insertion" action="index.php?p=news_modif2" method="POST">
  <input type="hidden" name="id" value="<?php echo($id) ;?>">
  <table border="0" align="center" cellspacing="2" cellpadding="2">
    <tr align="center">
      <td>Titre</td>
      <td><input type="text" name="Titre" size="60" value="<? echo $titre; ?>"></td>
    </tr>
      
    <tr align="center">
 <td>Texte</td>
       <td><textarea name="texte"  cols="60" rows="25"><? echo $texte; ?></textarea></td> 
    </tr>
    <tr align="center">
      <td colspan="2"><input type="submit" value="modifier"></td>
    </tr>
  </table>
  
</form>
  <?php
  }

  ?>
page news_modif2.php :
<?
require "secret/connect.php";
//connection au serveur


  //récupération des valeurs des champs:

if ( isset($_POST['titre']) && isset($_POST['texte']) && isset($_POST['id'])) 
{ 

     
  $titre = $_POST['titre'] ;
  
  $texte = $_POST['texte'] ;
 
  $id    = $_POST['id'] ;
  
  //création de la requête SQL:
  $sql = mysql_query("UPDATE news SET titre = $titre, texte = $texte WHERE id = $id ") or die( mysql_error());
  

 
  
  //affichage des résultats, pour savoir si la modification a marchée:
  if($requete)
  {
    echo("La modification à été correctement effectuée") ;
    echo ("<p><txt2><a href=index.php?p=new_del>Retour Gestion des News</a> | <a href=index.php?p=news>Ajouter News</a> | <a href=index.php?p=news_del>Retour Gestion News</a></div></txt2>");

  }
  else
  {
    echo("La modification à échouée") ;
    echo ("<p><txt2><a href=index.php?p=new_del>Retour Gestion des News</a> | <a href=index.php?p=news>Ajouter News</a> | <a href=index.php?p=news_del>Retour Gestion News</a></div></txt2>");

  }
  
  }
  else
  {
  echo("<div align=center>Echec de la requête</div>") ;
}
?>
Merci d'avance pour votre aide !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 mars 2006, 00:59

Un petit loupé dans ton code non ? tu colles dans "$sql" le résultat du mysql_query et tu testes ensuite la valeur de "$requete" variable qui n'a pas été déclaré jusque là, et qui à priori doit te retourner faux à chaque fois... :)

Par ailleurs, ta requête n'est à priori pas bonne et doit générer une erreur (à moins que $titre et $texte ne soient dse nombres) car les champs textes doivent être entourés d'apostrophe pour être distingués des mots clés sql :
mysql_query("UPDATE news SET titre = '$titre', texte = '$texte' WHERE id = $id ")  or die( mysql_error()); 
il y a peut être d'autres soucis, mais je ne suis pour l'instant pas allé voir plus loin :)

Ludoo
Invité n'ayant pas de compte PHPfrance

27 mars 2006, 10:42

Merci de ton aide !
En effet, quelques erreurs d'inattention ...

voici code corrigé :
<?
require "secret/connect.php";
//connection au serveur


  //récupération des valeurs des champs:

if ( isset($_POST['titre']) && isset($_POST['texte']) && isset($_POST['id'])) 
{ 

     
  $titre = $_POST['titre'] ;
  
  $texte = $_POST['texte'] ;
 
  $id    = $_POST['id'] ;
  
  //création de la requête SQL:
  $sql = mysql_query("UPDATE news SET titre = '$titre', texte = '$texte' WHERE id = $id ")  or die( mysql_error());
  

  
  //affichage des résultats, pour savoir si la modification a marchée:
  if($sql)
  {
    echo("La modification à été correctement effectuée") ;
    echo ("<p><txt2><a href=index.php?p=new_del>Retour Gestion des News</a> | <a href=index.php?p=news>Ajouter News</a> | <a href=index.php?p=news_del>Retour Gestion News</a></div></txt2>");

  }
  else
  {
    echo("La modification à échouée") ;
    echo ("<p><txt2><a href=index.php?p=new_del>Retour Gestion des News</a> | <a href=index.php?p=news>Ajouter News</a> | <a href=index.php?p=news_del>Retour Gestion News</a></div></txt2>");

  }
  
  }
  else
  {
  echo("<div align=center>Echec de la requête</div>") ;
}
?>
Il m'affiche toujours "Echec de le requête" c'est à dire qu'il n'execute même pas la requête :/

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 mars 2006, 12:43

ça veut donc doire que tu n'entres pas dans le 1er test d'existence des variables...

Tu as un champ < name="Titre" > et testes le retour avec < $_POST['titre'] >
Majuscule / minuscule

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

Ludoo
Invité n'ayant pas de compte PHPfrance

28 mars 2006, 11:48

Merci c'est nickel :)