8792 sujets

Développement web côté serveur, CMS

RE Bonjour à tous, j'explique mon souci, j'ai des clients qui ont des parcs informatiques, ils peuvent les consulter, et demander une modification du nombre de machine.

Une fois une demande faite, les nombres de machine de demandé sont mis en bdd dans la table demande_modif, l'admin du site a une page qui affiche le contenu de la table demande_modif, il peut valider les modif ou les refuser, en meme temps qu'il valide, ça met le bon nombre de machine dans la table client, et supprime la demande.

Mon script fonctionne presque entièrement à l'exception que peu importe qulle demande je veux accepter/supprimer il accepte/supprime toujours la 1ere de la liste, et je vois pas pourquoi.

Vous avez une idée ?

Je vous join le code du script, certe codé pire qu'un goret mais j'optimiserai plus tard Smiley smile

Je vous met également une copie d'ecran que vous voyez.

Merci d'avance !!

<?php
require_once("header2.php");
require_once("infos.php");
require_once("menu_g2.php");
?>
<div id="centre">
<div id="centretxt">
<div id="texte">
<?php 

include("config.php");

$res = mysql_query('SELECT * FROM demande_modif') or die ('Erreur sql ligne ' . __LINE__ . '<br />'. mysql_error());
$data = mysql_fetch_assoc($res);
$res2 = mysql_query('SELECT * FROM client WHERE nom = "'.$data['nom_client'].'" ') or die ('Erreur sql ligne ' . __LINE__ . '<br />'. mysql_error());
$data2 = mysql_fetch_assoc($res2);
$res = mysql_query('SELECT * FROM demande_modif') or die ('Erreur sql ligne ' . __LINE__ . '<br />'. mysql_error());

while ($data = mysql_fetch_assoc($res) ){
	  echo '  
  <table width="100%" border="1">
<form action="demande_modif_parc.php" method="post">  
    <tr> 
      <td rowspan="6"><strong>Nom client : <strong>'.$data['nom_client'].'</td>
      <td rowspan="6"><strong>Date demande : <strong>'.$data['date_demande'].'</td>
      <td rowspan="6"><strong>Id modification : <strong>'.$data['id_modif'].'</td>
      <td>Nombre actuel de machine</td>
      <td>Nombre de machine demand&eacute en modification</td>
    </tr>
    <tr> 
      <td>PC : '.$data2['pc'].'</td>
      <td>PC : '.$data['nb_pc'].'</td>
    </tr>
    <tr> 
      <td>MAC : '.$data2['mac'].'</td>
      <td>MAC : '.$data['nb_mac'].'</td>
    </tr>
    <tr> 
      <td>Serveur : '.$data2['serveur'].'</td>
      <td>Serveur : '.$data['nb_serveur'].'</td>
    </tr>
    <tr> 
      <td>Imprimante : '.$data2['imprimante'].'</td>
      <td>Imprimante : '.$data['nb_imprimante'].'</td>
    </tr>
    <tr> 
      <td colspan="2">
      <input type="submit" value="Valider la demande" name="ok" /> 
      <input type="submit" value="Refuser la demande" name="no"/> 
      </td>
    </tr>  
</form>
</table>';
}
//traitement

if(isset($_POST["ok"]))
{
$res = mysql_query('SELECT * FROM demande_modif') or die ('Erreur sql ligne ' . __LINE__ . '<br />'. mysql_error());
$res2 = mysql_query('SELECT * FROM client') or die ('Erreur sql ligne ' . __LINE__ . '<br />'. mysql_error());
$data2 = mysql_fetch_assoc($res2);
$data = mysql_fetch_assoc($res);
//On écrit la requête sql
$sql = "
UPDATE client
SET
pc= ".$data['nb_pc'].",
mac=".$data['nb_mac'].",
serveur=".$data['nb_serveur'].", 
imprimante=".$data['nb_imprimante']."
WHERE 
id_client = ".$data2['id_client']."
";

// on insère les informations du formulaire dans la table
mysql_query($sql) or die ('Erreur sql ligne ' . __LINE__ . '<br />'.mysql_error());
 
$sql2 ="DELETE  FROM demande_modif WHERE id_modif = ".$data['id_modif']."";

// on insère les informations du formulaire dans la table
mysql_query($sql2) or die ('Erreur sql ligne ' . __LINE__ . '<br />'.mysql_error());

// on affiche le résultat pour le visiteur
echo 'Le parc a été mis à jour ! Et la demande supprimé';    
}
if(isset($_POST["no"]))
{
    
$sql2 ="DELETE FROM demande_modif WHERE id_modif = ".$data['id_modif']."";
 
  
// on insère les informations du formulaire dans la table
mysql_query($sql) or die ('Erreur sql ligne ' . __LINE__ . '<br />'.mysql_error());
 

// on affiche le résultat pour le visiteur
echo 'Le parc n\'a  pas été mis à jour ! Et la demande a été supprimé';    
}


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


http://oskdvd.free.fr/while.jpg
Salut,

Il y a un problème dans tes formulaires. En effet, tu stockes nul part l'identifiant du client qui est associé au parc informatique. De plus, lorsque tu valides ton formulaire, tu réexecutes la requete de sélection de tous les clients. Il est donc logique qu'au final, seul le premier client soit modifier.

Pour corriger tout cela, je te propose cela :

while ($data = mysql_fetch_assoc($res) ){
	  echo '
  <table width="100%" border="1">
<form action="demande_modif_parc.php" method="post">
    <tr>
      <td rowspan="6"><strong>Nom client : <strong>'.$data['nom_client'].'</td>
      <td rowspan="6"><strong>Date demande : <strong>'.$data['date_demande'].'</td>
      <td rowspan="6"><strong>Id modification : <strong>'.$data['id_modif'].'</td>
      <td>Nombre actuel de machine</td>
      <td>Nombre de machine demandé en modification</td>
    </tr>
    <tr>
      <td>PC : '.$data2['pc'].'</td>
      <td>PC : '.$data['nb_pc'].'</td>
    </tr>
    <tr>
      <td>MAC : '.$data2['mac'].'</td>
      <td>MAC : '.$data['nb_mac'].'</td>
    </tr>
    <tr>
      <td>Serveur : '.$data2['serveur'].'</td>
      <td>Serveur : '.$data['nb_serveur'].'</td>
    </tr>
    <tr>
      <td>Imprimante : '.$data2['imprimante'].'</td>
      <td>Imprimante : '.$data['nb_imprimante'].'</td>
    </tr>
    <tr>
      <td colspan="2">
      [b]<input type="hidden" name="id_client" value="'.$data['id_client'].'" />[/b]
     [b]<input type="hidden" name="id_modif" value="'.$data['id_modif'].'" />[/b]
      <input type="submit" value="Valider la demande" name="ok" />
      <input type="submit" value="Refuser la demande" name="no"/>
      </td>
    </tr>
</form>
</table>';
}

//traitement
if(isset($_POST["ok"]))
{
$res = mysql_query('SELECT * FROM demande_modif [b]where id_modif = '. $_POST['id_modif'] .'[/b]') or die ('Erreur sql ligne ' . __LINE__ . '<br />'. mysql_error());
$res2 = mysql_query('SELECT * FROM client [b]where id_client = '. $_POST['id_client'] .'[/b]') or die ('Erreur sql ligne ' . __LINE__ . '<br />'. mysql_error());
$data2 = mysql_fetch_assoc($res2);
$data = mysql_fetch_assoc($res);


Je pense que comme ca, tout fonctionnera mieux Smiley cligne
désolé je pouvais pas aller sur le net cette semaine, ton scriptme fait une erreur

Erreur sql ligne 158
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


et la ligne d'erreur est

$res2 = mysql_query('SELECT * FROM client where id_client = '. $_POST['id_client'] .'') or die ('Erreur sql ligne ' . __LINE__ . '<br />'. mysql_error());


j'ai du mal avec les " '
Je re avec mon petit souci, j'ai fait comme tu m'as dit , il supprime la bonne demande, mais il ne modifie pas les valeurs.

<?php
require_once("header.php");
require_once("menu_g.php");
?>
<div id="centre">
<div id="centretxt">
<div id="texte">
<?php 

include("../config.php");

$res = mysql_query('SELECT * FROM demande_modif') or die ('Erreur sql ligne ' . __LINE__ . '<br />'. mysql_error());
$data = mysql_fetch_assoc($res);
$res2 = mysql_query('SELECT * FROM client WHERE nom = "'.$data['nom_client'].'" ') or die ('Erreur sql ligne ' . __LINE__ . '<br />'. mysql_error());
$data2 = mysql_fetch_assoc($res2);
$res = mysql_query('SELECT * FROM demande_modif') or die ('Erreur sql ligne ' . __LINE__ . '<br />'. mysql_error());
while ($data = mysql_fetch_assoc($res) ){
	  echo '

  <table width="100%" border="1">

<form action="demande_modif_parc.php" method="post">

    <tr>

      <td rowspan="6"><strong>Nom client : <strong>'.$data['nom_client'].'</td>

      <td rowspan="6"><strong>Date demande : <strong>'.$data['date_demande'].'</td>

      <td rowspan="6"><strong>Id modification : <strong>'.$data['id_modif'].'</td>

      <td>Nombre actuel de machine</td>

      <td>Nombre de machine demandé en modification</td>

    </tr>

    <tr>

      <td>PC : '.$data2['pc'].'</td>

      <td>PC : '.$data['nb_pc'].'</td>

    </tr>

    <tr>

      <td>MAC : '.$data2['mac'].'</td>

      <td>MAC : '.$data['nb_mac'].'</td>

    </tr>

    <tr>

      <td>Serveur : '.$data2['serveur'].'</td>

      <td>Serveur : '.$data['nb_serveur'].'</td>

    </tr>

    <tr>

      <td>Imprimante : '.$data2['imprimante'].'</td>

      <td>Imprimante : '.$data['nb_imprimante'].'</td>

    </tr>

    <tr>

      <td colspan="2">

      <input type="hidden" name="id_client" value="'.$data['id_client'].'" />

     <input type="hidden" name="id_modif" value="'.$data['id_modif'].'" />

      <input type="submit" value="Valider la demande" name="ok" />

      <input type="submit" value="Refuser la demande" name="no"/>

      </td>

    </tr>

</form>

';

$id_suppr = $data['id_modif'];
echo $id_suppr;
}

//traitement

if(isset($_POST["ok"]))

{

$res = mysql_query('SELECT * FROM demande_modif where id_modif = '. $_POST['id_modif'] .'') or die ('Erreur sql ligne ' . __LINE__ . '<br />'. mysql_error());

$res2 = mysql_query('SELECT * FROM client where id_client = "'. $_POST['id_client'] .'"') or die ('Erreur sql ligne ' . __LINE__ . '<br />'. mysql_error());

$data2 = mysql_fetch_assoc($res2);

$data = mysql_fetch_assoc($res);

//On écrit la requête sql
$sql = "UPDATE client SET pc= '".$data['nb_pc']."', mac='".$data['nb_mac']."', serveur='".$data['nb_serveur']."', 
imprimante='".$data['nb_imprimante']."' WHERE id_client = '". $data2['id_client'] ."' "; 

// on insère les informations du formulaire dans la table
mysql_query($sql) or die ('Erreur sql ligne ' . __LINE__ . '<br />'.mysql_error());
 
$sql2 ="DELETE FROM demande_modif WHERE id_modif = ".$data['id_modif']."";

// on insère les informations du formulaire dans la table
mysql_query($sql2) or die ('Erreur sql ligne ' . __LINE__ . '<br />'.mysql_error());

// on affiche le résultat pour le visiteur
echo 'Le parc a été mis à jour ! Et la demande supprimé ';
?>
<script> setTimeout("document.location.href=\"demande_modif_parc.php\"", 3000);</script>    
<?php
}
if(isset($_POST["no"]))
{
$sql2 ="DELETE FROM demande_modif WHERE id_modif = '". $id_suppr ."' "; 
 
  
// on insère les informations du formulaire dans la table
mysql_query($sql2) or die ('Erreur sql ligne ' . __LINE__ . '<br />'.mysql_error());
 

// on affiche le résultat pour le visiteur
echo 'Le parc n\'a  pas été mis à jour ! Et la demande a été supprimé </table>';    
}
?>
</div>
</div>
</div>



La requête
//On écrit la requête sql
$sql = "UPDATE client SET pc= '".$data['nb_pc']."', mac='".$data['nb_mac']."', serveur='".$data['nb_serveur']."', 
imprimante='".$data['nb_imprimante']."' WHERE id_client = '". $data2['id_client'] ."' "; 


Ne fonctionne pas aperemment mais je n'ai pas de message d'erreur Smiley biggol

Une idée ? Merci !
Salut Jack,

Dis-donc ! T'as combien de profils Smiley biggrin ?

Sinon pour ta question, le plus simple quand une requête SQL ne fonctionne pas c'est souvent d'afficher la variable. Donc juste après avoir alimenté $sql tu fais
echo "sql : $sql <br />";
et si tu ne vois pas d'erreur tu la copie et tu la lances directement sur ta base (phpMyadmin ?) pour voir ce que ça donne...

A+
Modifié par Heyoan (22 May 2007 - 19:52)
j'ai un profil pour quand je suis au boulot et un quand je suis chez moi ça m'évite de faire trainer mes mdp Smiley ohwell , je vais tester