éditer et sauvegarder

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 : éditer et sauvegarder

par Johnstyle » 05 mars 2006, 20:00

erf
apres verification en fait au lieu d'éditer ça efface ^^"

par Johnstyle » 05 mars 2006, 19:50

oui, c'est vrai que c'est plus simpas si on cherche avant que si vous nous donneriez directement les réponses ^^
et pis ca permet de mieu comprendre :)

bon part contre il ne se passe toujours rien :(

	  <!-- 1ere partie 
	  choix de l'id -->

	  <?php 
// ... 
/* ... code de connexion et d'exécution de la requête */ 
// ... 
    require_once("config.php"); 
    $db = mysql_connect($dbhost, $dbuname, $dbpass);  // connexion &agrave; la base 
    mysql_select_db($dbname,$db); 
     
$sql = "SELECT id,nom FROM js_pages"; 
$exec = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

?> 

<form id="form_maj_pages" action="epage.php" method="post"> 
<select name="listepages" id="listepages" onchange="document.forms['form_maj_pages'].submit();"> 

<?php 
while(($ligne = mysql_fetch_assoc($exec)) != false) 
{ 
?> 

  <option value="<?php echo($ligne['id']); ?>"><?php echo($ligne['nom']); ?></option> 
   
<?php 
} 
mysql_close($db); 

?> 
</select> 
</form> 

<!-- 2eme partie 
renvois des infos -->


<?php 
$id = isset($_POST['listepages']) ? $_POST['listepages'] : null; 

if($id) 
{ 
    $sql2 = "SELECT `nom`, `titre`, `contenu` ". 
            "FROM js_pages ". 
            "WHERE `id` = ". $id .";"; 
			
    // ... 
    /* ... code de connexion et d'exécution de la requête */ 
    // ... 
	
    $db = mysql_connect($dbhost, $dbuname, $dbpass);  // connexion &agrave; la base 
    mysql_select_db($dbname,$db); 
	
	$exec = mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error()); 
	
    if(($ligne = mysql_fetch_assoc($exec)) != false) 
    { 
?> 
<form id="maj_page" action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post"> 
  <fieldset> 
    <label>Nom de la page : <input name="nom" id="nom" value="<?php echo($ligne['nom']); ?>" /></label><br /> 
    <label>Titre de la page : <input name="titre" id="titre" value="<?php echo($ligne['titre']); ?>" /></label><br /> 
    <textarea name="contenu" id="contenu" rows="10" cols="50"><?php echo($ligne['contenu']); ?></textarea><br /> 
    <input type="submit" name="envoi_maj" id="envoi_maj" value="Mettre à jour" /> 
  </fieldset> 
</form> 

<?php 

	  } 	
	  	mysql_close($db); 
}
	   ?>   
	   
	   <!-- 3eme partie 
	   enregistrements des nouvelles infos -->

	   
<?	 

$db = mysql_connect($dbhost, $dbuname, $dbpass);  // connexion &agrave; la base 
    mysql_select_db($dbname,$db); 
	
$sql3 = " UPDATE js_pages ". 
       "SET nom= '". $_POST['nom'] ."', 
            titre = '". $_POST['titre'] ."', 
            contenu= '". $_POST['contenu'] ."' ". 
       "WHERE `id` = ". $id; 
	   
    $exec =  mysql_query($sql3) or die('Erreur SQL !'.$sql3.'<br>'.mysql_error());  
		

	
	mysql_close($db); 
	   ?>


pourtant j'ai bien repris la meme "disposition" que la partie 2

par Cyrano » 05 mars 2006, 19:38

Donc tu as répondu toi-même à la question, c'était du reste le but recherché :D

Ceci posé, est-ce que l'exécution de ce code donne le résultat escompté ?

par Johnstyle » 05 mars 2006, 19:32

ok alors je pense qu'il faut faire comme les ligne du dessus et remplacer par update ?
<?	 

$db = mysql_connect($dbhost, $dbuname, $dbpass);  // connexion &agrave; la base 
    mysql_select_db($dbname,$db); 
	
$sql3 = " UPDATE js_pages ". 
       "SET nom= '". $_POST['nom'] ."', 
            titre = '". $_POST['titre'] ."', 
            contenu= '". $_POST['contenu'] ."' ". 
       "WHERE `id` = ". $id; 
	   
    $exec =  mysql_query($sql3) or die('Erreur SQL !'.$sql3.'<br>'.mysql_error());  
		

	
	mysql_close($db); 
	   ?>

par Cyrano » 05 mars 2006, 19:11

Je vais te répondre en te retournant la question : fais pruve d'un minimum de sens logique et dis-moi comment selon toi ça doit se passer ?

par Johnstyle » 05 mars 2006, 19:00

ok merci,
parcontre comment faire pour que ce morceau de code soit executer dès que l'on clique sur le bouton "mettre à jour" ?

par Cyrano » 05 mars 2006, 17:30

Je viens de réaliser que la requête que je t'ai proposé en correction va générér une erreur, correction:
$sq2 = " UPDATE js_pages ".
       "SET nom= '". $_POST['nom'] ."',
            titre = '". $_POST['titre'] ."',
            contenu= '". $_POST['contenu'] ."' ".
       "WHERE `id` = ". $id;
Les valeurs envoyées étant de type texte, il est nécessaire que dans la requête SQL générée elles soienentre apostrophes.

par Invité » 05 mars 2006, 16:38

Ta deuxième requête manque de propreté dans les oncaténations :
$sq2 = " UPDATE js_pages ".
       "SET nom= ". $_POST['nom'] .", 
            titre = ". $_POST['titre'] .", 
            contenu= ". $_POST['contenu'] ." ".
       "WHERE `id` = ". $id;
merci

Pourquoi avais-tu (presque) correctement inséré l'identifiant mais pas les autres variables PHP ?
sais pas en fait je me suis baser sur les lignes du dessus ^^"

par Cyrano » 04 mars 2006, 16:49

Ta deuxième requête manque de propreté dans les oncaténations :
$sq2 = " UPDATE js_pages ".
       "SET nom= ". $_POST['nom'] .", 
            titre = ". $_POST['titre'] .", 
            contenu= ". $_POST['contenu'] ." ".
       "WHERE `id` = ". $id;
Pourquoi avais-tu (presque) correctement inséré l'identifiant mais pas les autres variables PHP ?

par Johnstyle » 04 mars 2006, 16:40

je suis vraiment désoler de vous embeté autant :? mais je n'y arive vraiment pas :cry:


 
	  <!-- 1ere partie -->

	  <?php 
// ... 
/* ... code de connexion et d'exécution de la requête */ 
// ... 
    require_once("config.php"); 
    $db = mysql_connect($dbhost, $dbuname, $dbpass);  // connexion &agrave; la base 
    mysql_select_db($dbname,$db); 
     
$sql = "SELECT id,nom FROM js_pages"; 
$exec = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

?> 

<form id="form_maj_pages" action="epage.php" method="post"> 
<select name="listepages" id="listepages" onchange="document.forms['form_maj_pages'].submit();"> 

<?php 
while(($ligne = mysql_fetch_assoc($exec)) != false) 
{ 
?> 

  <option value="<?php echo($ligne['id']); ?>"><?php echo($ligne['nom']); ?></option> 
   
<?php 
} 
mysql_close($db); 

?> 
</select> 
</form> 

<!-- 2eme partie -->


<?php 
$id = isset($_POST['listepages']) ? $_POST['listepages'] : null; 

if($id) 
{ 
    $sql2 = "SELECT `nom`, `titre`, `contenu` ". 
            "FROM js_pages ". 
            "WHERE `id` = ". $id .";"; 
			
    // ... 
    /* ... code de connexion et d'exécution de la requête */ 
    // ... 
	
    $db = mysql_connect($dbhost, $dbuname, $dbpass);  // connexion &agrave; la base 
    mysql_select_db($dbname,$db); 
	
	$exec = mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error()); 
	
    if(($ligne = mysql_fetch_assoc($exec)) != false) 
    { 
?> 
<form id="maj_page" action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post"> 
  <fieldset> 
    <label>Nom de la page : <input name="nom" id="nom" value="<?php echo($ligne['nom']); ?>" /></label><br /> 
    <label>Titre de la page : <input name="titre" id="titre" value="<?php echo($ligne['titre']); ?>" /></label><br /> 
    <textarea name="contenu" id="contenu" rows="10" cols="50"><?php echo($ligne['contenu']); ?></textarea><br /> 
    <input type="submit" name="envoi_maj" id="envoi_maj" value="Mettre à jour" /> 
  </fieldset> 
</form> 
<?php 
   
$sq2 = " UPDATE js_pages SET nom=$_POST['nom'], titre=$_POST['titre'], contenu=$_POST['contenu'] WHERE `id` = '. $id .'";
      $req = mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error());  
 
   
   
    } 
mysql_close($db); 

?> 
merci a vous

par Truc » 04 mars 2006, 15:58

tout à fait, pour la forme voilà la doc pour UPDATE

par Johnstyle » 04 mars 2006, 15:47

oki je vient de comprendre le code :D

donc en gros maintenant il faut que j'utilise la fonction "update" ?

par Truc » 04 mars 2006, 15:37

eh bien c'est logique puisque tu ne demande plus rien au script apres la validation du formulaire de modification.

Tu peux t'inspirer de ce que tu as déja pour effectuer les opération apres la validation du formulaire, regarde aussi ce tuto

Dans l'action du formualire tu as $_SERVER['PHP_SELF'] ce qui implique que le traitement est sur la même page que le formulaire il faut donc effectuer un nouveau test de validation du formulaire avec l'opérateur ternaire (par exemple) sur un des champs du formulaire de modification et inclure le traitement à l'interieur de ce test.

par Johnstyle » 04 mars 2006, 15:19

merci ^^

je croi que je n'y arriverai pas :(

maintenant il n'y a plus de message d'ereur mais il ne se passe rien apres avoir cliquer sur "mettre a jour"




  <!-- 1ere partie -->

	  <?php 
// ... 
/* ... code de connexion et d'exécution de la requête */ 
// ... 
    require_once("config.php"); 
    $db = mysql_connect($dbhost, $dbuname, $dbpass);  // connexion &agrave; la base 
    mysql_select_db($dbname,$db); 
     
$sql = "SELECT id,nom FROM js_pages"; 
$exec = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

?> 

<form id="form_maj_pages" action="epage.php" method="post"> 
<select name="listepages" id="listepages" onchange="document.forms['form_maj_pages'].submit();"> 

<?php 
while(($ligne = mysql_fetch_assoc($exec)) != false) 
{ 
?> 

  <option value="<?php echo($ligne['id']); ?>"><?php echo($ligne['nom']); ?></option> 
   
<?php 
} 
mysql_close($db); 

?> 
</select> 
</form> 

<!-- 2eme partie -->


<?php 
$id = isset($_POST['listepages']) ? $_POST['listepages'] : null; 

if($id) 
{ 
    $sql2 = "SELECT `nom`, `titre`, `contenu` ". 
            "FROM js_pages ". 
            "WHERE `id` = ". $id .";"; 
			
    // ... 
    /* ... code de connexion et d'exécution de la requête */ 
    // ... 
	
    $db = mysql_connect($dbhost, $dbuname, $dbpass);  // connexion &agrave; la base 
    mysql_select_db($dbname,$db); 
	
	$exec = mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error()); 
	
    if(($ligne = mysql_fetch_assoc($exec)) != false) 
    { 
?> 
<form id="maj_page" action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post"> 
  <fieldset> 
    <label>Nom de la page : <input name="nom" id="nom" value="<?php echo($ligne['nom']); ?>" /></label><br /> 
    <label>Titre de la page : <input name="titre" id="titre" value="<?php echo($ligne['titre']); ?>" /></label><br /> 
    <textarea name="contenu" id="contenu" rows="10" cols="50"><?php echo($ligne['contenu']); ?></textarea><br /> 
    <input type="submit" name="envoi_maj" id="envoi_maj" value="Mettre à jour" /> 
  </fieldset> 
</form> }
<?php 
    } 
mysql_close($db); 

?> 
en tout cas merci de votre patience :wink:

par Truc » 04 mars 2006, 14:51

si tu regardes bien la requete générée, qui sera exécutée tu veras qu'il manque quelque chose à la fin:
SELECT `nom`, `titre`, `contenu` FROM js_pages WHERE `id` = .. ;
Lors du 1er chargement de la page la varaible POST associée à l'id n'existe pas donc d'apèrs cette ligne:
$id = isset($_POST['listepages']) ? $_POST['listepages'] : null;
$id est égal à null, donc erreur, il faut inclure le code de la 2nde partie dans un test:
$id = isset($_POST['listepages']) ? $_POST['listepages'] : null;

if($id)
{
   $sql2 =".....";
   //reste du code
}
tu peux aussi retirer cette ligne de la 2nde partie du code:
require_once("config.php"); 
car déjà appelé au début de page