8791 sujets

Développement web côté serveur, CMS

Bonjour à tous , je reste bloqué devant un gros probleme, je m'explique, j'ai une page A qui envoie sur une page B via un submit et une method GET afin de récupérer l'id du user correspondant à une ligne de tableau jusque la nikel, page B qui pointe vers une page C en ajoutant aux variables GET un type de machine soit pc soit mac soit server soit imprimante, et en remettant biensur l'id du user en question en GET donc arrivé sur la page C je me retrouve avec l'id du compte a modifier ainsi que le type de machine que je souhaite modifier jusque ici pas de souci.

J'affiche donc mon formulaire avec mes champs avec le script ci desssous :

<?php

$titre="Modifier les config ";
require_once("header.php");
include ("../config.php");
error_reporting(0);
?>

<div id="centre">
<?php
if (array_key_exists('rang',$_SESSION)&&$_SESSION['rang']==1) {




$heidi=$_GET['heidi'];
$machine=$_GET['machine'];
$res = mysql_query("SELECT * FROM client WHERE id_client='$heidi'");
$res2 = mysql_query("SELECT * FROM configurations WHERE id_client='$heidi'");

$data2 = mysql_fetch_array($res2);

while ($data = mysql_fetch_array($res) ) {

$machine=$data[$_GET['machine']];
$fonction=$data['fonction'];
$mail=$data['mail'];
$fax=$data['fax'];
$tel=$data['tel'];
$adresse=$data['adresse'];
$code=$data['code'];
$ville=$data['ville'];
$mdp=$data['mdp'];
$nom=$data['nom'];
$prenom=$data['prenom'];
$civilite=$data['civilite'];
$societe=$data['societe'];
$id=$data['id_client'];

}

echo'
id client : '.$id.'<br/>
Machine a modif : '.$machine.'  
<form action="edit_config.php" method="post">';
$color="1";
echo '<table width="95%" cellpadding="2" align="center"  cellspacing="2" >
  <tr class="chapo_tablo">
    <td>Id_Config</td>
    <td>Propriétaire</td>
    <td>Caractéristiques</td>
    <td>Marque</td>
    <td>Logiciel</td>
     </tr>';
  

for ($j=1; $j <= $machine; $j++) {
	  echo ' 
	  <tr'; if($color %2 == "0") 
  echo " class=\"gris\""; 
  else echo " class=\"gris_clair\"";  
  echo'>
	  <td>'.$j.'</td>
	  <td><input type="text" name="proprietaire" value="'.$_POST['propreitaire'].'" /></td>
	  <td><textarea cols="20" name="caracteristique" value="'.$_POST['caracteristique'].'" rows="4"></textarea></td>
	  <td><input type="text" name="marque" value="'.$_POST['marque'].'" /></td>
	  <td><textarea cols="20" name="logiciel" value="'.$_POST['logiciel'].'" rows="4"></textarea></td>
	  </tr>
	  
	  ';
	  
	  $color++;
	  }
	  if(isset($_POST["ok"]) && !empty($_POST["ok"]))
{

if(isset($_POST['proprietaire']))$proprietaire=$_POST['proprietaire'];
else      $proprietaire="";


if(isset($_POST['caracteristique']))$caracteristique=$_POST['caracteristique'];
else      $caracteristique="";


if(isset($_POST['marque']))$marque=$_POST['marque'];
else      $marque="";

if(isset($_POST['logiciel']))$logiciel=$_POST['logiciel'];
else $logiciel="";


 $sql = "INSERT INTO configurations (id_config, id_client, proprietaire, caracteristique, marque, logiciel)
	VALUES 
	('$j', '$id', '$proprietaire', '$caracteristique','$marque','$logiciel')
	";
 
 

}
 
echo '</table> 
<ul>
<li><input  name "ok" type="submit" class="classe_button" value="Appliquer les changements" /></li>
</ul>
</form> ';}



else {echo '<h1>Page non trouvée</h1>
<p>Désolé, mais cette page n\'existe pas ou vous n\'êtes pas autorisé a y accéder.</p>
<p>Si vous avez utilisé un lien sur le site pour accéder à cette page, nous vous invitons à nous contacter pour nous signaler le problème afin que nous le réglions au plus vite. </p>
<p><a href=../index.php>Retour à l\'accueil</a></p> ';} 
?>  

</div>
<?php
require_once("pied.php");
?>



Le tout est nikel à l'affichage, j'ai autant de champs texte que de machine compris dans la table client, seulement quand je submit, tout s'enlève il reste affiché que ce qui ne se trouve pas en boucle c'est à dire quasiment rien , la premeire ligne du tableau et c'est tout il perd la variable id_client et type de machine tout est vierge, je saisis pas le truc là Smiley ohwell

Si vous pouviez m'éclairez avec vos lumière je vous en serais très reconnaissant !!

Merci !!
edit_config.php c'est le nom de la page que tu nous soumet là ou c'est une autre page?

a priori mets tes variables id_client et type de machine dans des variables cachées que tu retournes avec les élements du formulaires.
Modifié par CPascal (07 Jun 2007 - 17:01)
Salut wpcJack Smiley cligne ,

j'ai regardé ton code en diagonale mais c'est normal que tu perdes l'id et la machine : seules les variables qui sont entre <form> et </form> seront envoyées par le submit. Donc pour ça on se sert des input hidden :
...
echo'
id client : '.$id.'<br/>
Machine a modif : '.$machine.'
<form action="edit_config.php" method="post">
<input type="hidden" name="id" value="$id">
<input type="hidden" name="machine" value="$machine">';
...


A+ Smiley smile
Modifié par Heyoan (08 Jun 2007 - 09:45)
Heyoan a écrit :

...seules les variables qui sont entre <form> et </form> seront envoyées par le submit. Donc pour ça on se sert des input hidden :
...
echo'
id client : '.$id.'<br/>
Machine a modif : '.$machine.'
<form action="edit_config.php" method="post">
<input type="hidden" name="id" value="$id">
<input type="hidden" name="machine" value="$machine">';
...

+1

Par contre, tu vas rencontrer un autre problème. En effet, les données présentes dans ton formulaire sont transmises en utilsant la méthode POST. Or les données heidi et machine sont récupérées à travers le tableau $_GET (dans transmis par la méthode GET). Ainsi tu ne récupéraras pas les valeurs présents dans les champs cachés.

Pour résoudre ce problème, tu as plusieurs méthodes.
La première consiste à utiliser la variable $_REQUEST à la place des $_GET. Cette variable est un tableau associatif constitué du contenu des variables $_GET, $_POST, $_COOKIE.
La seconde solution consiste à transmettre ton formulaire par la méthode GET. Dans ce cas, il faut que tu modifies tous les $_POST en $_GET.
Enfin, la dernière solution consiste à transmettre les données heidi et machine par la méthode POST entre les page A et B puis B et C.

J'éspère que cela t'aidera Smiley cligne .
Encore un souci j'arrive à garder la varaible machine mais l'id disparait au subit pourtant j'ai champs caché avec sa valeur ^o) c'est x-files Smiley ohwell


<?php


$titre="Modifier les config ";
require_once("header.php");
include ("../config.php");
error_reporting(0);
?>

<div id="centre">
<?php
if (array_key_exists('rang',$_SESSION)&&$_SESSION['rang']==1) {

$heidi=$_REQUEST['heidi'];
$machine=$_REQUEST['machine'];

$res = mysql_query("SELECT * FROM client WHERE id_client='$heidi'");
$res2 = mysql_query("SELECT * FROM configurations WHERE id_client='$heidi'");

$data2 = mysql_fetch_array($res2);

while ($data = mysql_fetch_array($res) ) {

$machine=$data[$_REQUEST['machine']];
$heidi=$_REQUEST['heidi'];
$fonction=$data['fonction'];
$mail=$data['mail'];
$fax=$data['fax'];
$tel=$data['tel'];
$adresse=$data['adresse'];
$code=$data['code'];
$ville=$data['ville'];
$mdp=$data['mdp'];
$nom=$data['nom'];
$prenom=$data['prenom'];
$civilite=$data['civilite'];
$societe=$data['societe'];

}

echo'

id client : '.$heidi.'<br/>

Machine a modif : '.$machine.'


<form action="edit_config.php" method="request">

<input type="text" name="id" value="'.$heidi.'">

<input type="text" name="machine" value="'.$machine.'">';

$color="1";
echo '<table width="95%" cellpadding="2" align="center"  cellspacing="2" >
  <tr class="chapo_tablo">
    <td>Id_Config</td>
    <td>Propriétaire</td>
    <td>Caractéristiques</td>
    <td>Marque</td>
    <td>Logiciel</td>
     </tr>';
  

for ($j=1; $j <= $machine; $j++) {
	  echo ' 
	  <tr'; if($color %2 == "0") 
  echo " class=\"gris\""; 
  else echo " class=\"gris_clair\"";  
  echo'>
	  <td>'.$j.'</td>
	  <td><input type="text" name="proprietaire" value="'.$_REQUEST['proprietaire'].'" /></td>
	  <td><textarea cols="20" name="caracteristique" value="'.$_REQUEST['caracteristique'].'" rows="4"></textarea></td>
	  <td><input type="text" name="marque" value="'.$_REQUEST['marque'].'" /></td>
	  <td><textarea cols="20" name="logiciel" value="'.$_REQUEST['logiciel'].'" rows="4"></textarea></td>
	  </tr>
	  
	  ';
	  
	  $color++;
	  }
	  if(isset($_REQUEST["ok"]) && !empty($_REQUEST["ok"]))
{

if(isset($_REQUEST['proprietaire']))$proprietaire=$_REQUEST['proprietaire'];
else      $proprietaire="";


if(isset($_REQUEST['caracteristique']))$caracteristique=$_REQUEST['caracteristique'];
else      $caracteristique="";


if(isset($_REQUEST['marque']))$marque=$_REQUEST['marque'];
else      $marque="";

if(isset($_POST['logiciel']))$logiciel=$_REQUEST['logiciel'];
else $logiciel="";


 $sql = "INSERT INTO configurations (id_config, id_client, proprietaire, caracteristique, marque, logiciel)
	VALUES 
	('$j', '$id', '$proprietaire', '$caracteristique','$marque','$logiciel')
	";
 
 

}
 
echo '</table> 
<ul>
<li><input  name "ok" type="submit" class="classe_button" value="Appliquer les changements" /></li>
</ul>
</form> ';}



else {echo '<h1>Page non trouvée</h1>
<p>Désolé, mais cette page n\'existe pas ou vous n\'êtes pas autorisé a y accéder.</p>
<p>Si vous avez utilisé un lien sur le site pour accéder à cette page, nous vous invitons à nous contacter pour nous signaler le problème afin que nous le réglions au plus vite. </p>
<p><a href=../index.php>Retour à l\'accueil</a></p> ';} 
?>  

</div>
<?php
require_once("pied.php");
?>
Salut,

C'est tout à fait normal que tu ne puisses garder la valeur de l'id car dans ton formulaire l'attribut name a pour valeur id :
<input type="text" name="id" value="'.$heidi.'">

alors que tu utilises la valeur heidi dans le tableau $_REQUEST :
$heidi=$_REQUEST['heidi'];

Il faut que les deux valeurs, dans le input et dans le tableau $_REQUEST, soient identiques.

Petite remarque pour finir : tu as du code en double :

$heidi=$_REQUEST['heidi'];
$machine=$_REQUEST['machine'];

et dans boucle while

$machine=$data[$_REQUEST['machine']];
$heidi=$_REQUEST['heidi'];


Une dernière pour la route. Je ne suis pas sûr que method="request" soit valide. Les seules valeurs possibles sont, à priori, get ou post. Smiley cligne