modification dans la base a partir d'un tableau

Invité
Invité n'ayant pas de compte PHPfrance

31 mai 2006, 11:56

Bonjour,

Voila, j'ai créer un tableau, dans celui j'affiche des valeur qui sont dans ma base. Je voudrai que si l'utilisateur le veux puisse modifier a partir de se tableau.

Mais voila, comme le tableau est créer dynamiquement, comment je fais pour connaitre le nom du champ ? Je ne fais peut être pas de la meilleur methode qui existe, mais je n'en voie pas d'autre.

Ma table s'appelle :
TABLEAU_PRIX
il y a comme champs :
CODE_TAB (PK)
PERIODICITE_SEM
TARIF
NUM_CONTRAT (FK)



<html>
<head>
<style type="text/css">
<!--
.Style1 {
	font-family: Tahoma;
	font-size: 24px;
}
.Style2 {
	font-family: Tahoma;
	font-size: 16px;
	font-weight: bold;
}
-->
</style>
</head>
<body>
<form name="form1" method="post" action="">
<?php

if(isset($_GET['mat']))
{$mat=$_GET['mat'];
}
if(isset($_GET['num']))
{$num=$_GET['num'];
}
if(isset($_GET['cop']))
{$cop=$_GET['cop'];
}
include_once("../../../connexion.php");
include_once("../../../fonction.inc.php");

?>

<p>



<?php
if ($cop==1)
{ ?>
<a href="consult_tarif.php?mat=<?php echo $mat ?>&num=<?php echo $num ?>&cop=<?php echo $cop ?>"><img src="../../../image/precedent.gif" width="41" height="25" border="0"></a>
<?php } else { ?>
<a href="consult_tarif.php?mat=<?php echo $mat ?>&num=<?php echo $num ?>&cop=<?php echo $cop ?>"><img src="../../../image/precedent.gif" width="41" height="25" border="0"></a>
<?php }
?>

</p>
<?php 
	$reqsql = mysql_query("SELECT COUNT( DISTINCT periodicite_sem) as period
FROM tableau_prix
where num_contrat='$num'");
while ($rep = @mysql_fetch_object($reqsql)) {
			$sem = $rep->period;

$reqsql2 = mysql_query("SELECT COUNT( DISTINCT superficie) as super
FROM tableau_prix
where num_contrat='$num'");
while ($rep2 = @mysql_fetch_object($reqsql2)) {
			$sup = $rep2->super;
			





?>

<table width="70%" border="1" align="center" >

    <tr>
      <td width="7%" align="center" valign="middle"></td>
	  <?php
	  $reqsql4 = mysql_query("SELECT periodicite_sem
from tableau_prix
where num_contrat='$num'
group by periodicite_sem");
while ($rep4 = @mysql_fetch_object($reqsql4)) {
			$perio = $rep4->periodicite_sem;
	  	
	  ?>
      <td width="7%" align="center" >
        <?php echo $perio ?></td>
	  <?php 
	  }
	  ?>
    </tr>
	<?php 
	$reqsql3 = mysql_query("SELECT superficie
from tableau_prix
where num_contrat='$num'
group by superficie");
while ($rep3 = @mysql_fetch_object($reqsql3)) {
			$super = $rep3->superficie;
			?>
    <tr>
      <td align="center" valign="middle"><?php echo '< '.$super ?></td>
	  <?php
	  $reqsql6 = mysql_query("SELECT periodicite_sem
from tableau_prix
where num_contrat='$num'
group by periodicite_sem");
while ($rep6 = @mysql_fetch_object($reqsql6)) {
			$periode = $rep6->periodicite_sem;
			
			
		$reqsql5 = mysql_query("SELECT tarif
		from tableau_prix
		where num_contrat='$num'
		and periodicite_sem='$periode'
		and superficie='$super'");
		while ($rep5 = @mysql_fetch_object($reqsql5)) {
			$tarif = $rep5->tarif;
		?>
      <td align="center" >
      <input name="<?php $super.'-'.$periode ?>" type="text" id="<?php $super.'-'.$periode ?>"  align="texttop" value="<?php echo $tarif ?>" size="6" maxlength="6"></td>
<?php
   }
}
?>
    </tr>
   <?php
   }
   ?>
 
  </table>   
	<?php
}
}
?>
  
  <p>&nbsp;</p>
  <div align="center"><a href="untitled.php?mat=<?php echo $num ?>"><img src="../../../image/bouton/button2D.gif" width="115" height="23" border="0" ></a></img>
  
</div>
</form>
</boby>
</html>
j'espère que vous m'avez compris et que vous allez pouvoir m'aider

merci d'avance

Invité
Invité n'ayant pas de compte PHPfrance

31 mai 2006, 14:29

on dirait que cela ne vous inspire pas beaucoup ! C'est si mauvais que ça, ou vous ne voyez pas du tout ou je veux en venir ?

Mammouth du PHP | 1353 Messages

31 mai 2006, 14:32

Voila, j'ai créer un tableau, dans celui j'affiche des valeur qui sont dans ma base. Je voudrai que si l'utilisateur le veux puisse modifier a partir de se tableau.

Mais voila, comme le tableau est créer dynamiquement, comment je fais pour connaitre le nom du champ ? Je ne fais peut être pas de la meilleur methode qui existe, mais je n'en voie pas d'autre.
A première vue sans regarder le code je dirai qu'il suffit de mettre les valeurs que tu récupères dans le base dans un formulaire dans ton tableau, chaque valeur dans un input avec un nom bien précis. Si l'utilisateur modifie une valeur et qu'il valide en cliquant par exemple sur un bouton "Modifier" en bas, tu fais un UPDATE de ta base de données en te basant sur les valeurs passées en $_POST.

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

31 mai 2006, 14:36

Regarde cet exemple dans les Faq, ça peut t'intéresser : http://www.phpfrance.com/forums/voir_sujet-18969.php
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Invité
Invité n'ayant pas de compte PHPfrance

31 mai 2006, 14:37

oki, je suis d'accord mais comment je fais pour connaître le nom de mon imput ou plutôt comment je fait pour qu'il n'est pas tous le meme nom ?

Invité
Invité n'ayant pas de compte PHPfrance

31 mai 2006, 14:38

je viens de voir ton message sadeq. Je regade, ça a l'air interresant

merci

Invité
Invité n'ayant pas de compte PHPfrance

31 mai 2006, 15:01

bon j'ai lu, essayer de comprendre. Mais je suis loin d'avoir tout compris. Et de plus, je ne vois pas comment l'adapter a mon cas

je tiens juste a préciser que la page que j'ai afficher m'affiche se tableau

Code : Tout sélectionner

1 2 3 < 20 15.00 25.00 35.00 < 40 20.00 35.00 40.00 < 60 25.00 35.00 45.00 < 80 30.00 40.00 50.00 < 100 35.00 45.00 55.00 < 120 40.00 50.00 60.00
merci

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

31 mai 2006, 16:37

Je viens de lire ton code, je ne pense pas que tu auras besoin du tuto que je t'ai proposé.
Si j'ai bien compris, tu affiches un tableau HTML croisé qui présente à l'intersection d'une ligne supérficie et d'une colonne périodicité le tarif de la supérficie pour cette périodicité.
Et tu veux pouvoir modifier le tarif d'une supérficie/semaine.

Tu as tous prévu c'est bien, sauf la clé primaire avec laquelle la modif peut se faire facilement avec une requête update.
En effet, tu as nommé un input porteur de tarif avec un nom composé du couple (supérficie-périodicité) alors qu'il suffisait de le nommer comme un tableau "tarifs" indexé par la valeur de la clé primaire (CODE_TAB) selon le schèma de ta table de BD :
Ma table s'appelle :
TABLEAU_PRIX
il y a comme champs :
CODE_TAB (PK)
PERIODICITE_SEM
TARIF
NUM_CONTRAT (FK)
Ainsi quand tes inputs (tarifs) sont modifiés, au submit du formulaire, tu recevra une liste "tarifs" indexée par CODE_TAB contenant les tarifs.
Liste que tu va utiliser pour lancer des updates.

Exemple de correction :
$reqsql5 = mysql_query("SELECT code_tab, tarif 
        from tableau_prix 
        where num_contrat='$num' 
        and periodicite_sem='$periode' 
        and superficie='$super'"); 
        while ($rep5 = @mysql_fetch_object($reqsql5)) { 
            $tarif = $rep5->tarif;
            $code_tab = $rep5->code_tab;  
        ?> 
      <td align="center" > 
      <input name="tarifs[<?php echo $code_tab; ?>]" type="text" align="texttop" value="<?php echo $tarif ?>" size="6" maxlength="6"></td>
Si tu place ton tableau dans un form de type GET et tu ajoute un bouton submit : ton programme va recevoir dans $_GET un tableau nommé "tarifs"
dont les indexes sont les "code_tab" (clés primaires) et les valeurs sont les tarifs modifiés.
Le programme de modification se voit ainsi:
//Réception des tarifs
$tarifs = $_GET["tarifs"];

//Mise à jour de la BD à partir des tarifs reçus
if ($tarifs)
  //Parcourir la liste $tarifs : une ligne est indexée par code_tab et contient la valeur du tarif
  foreach ($tarifs as $code_tab=>$tarif){
      //SQL update 
      $sql = "update tableau_prix set tarif = $tarif where code_tab = '$code_tab'";
     //Exécuter SQL
     ....
  } //tarif suivant
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Invité
Invité n'ayant pas de compte PHPfrance

01 juin 2006, 08:47

Bon, je vais tester ça.

Un grand merci a toi

Invité
Invité n'ayant pas de compte PHPfrance

01 juin 2006, 10:14

ça marche merci. Bon maintenant je vais essayer de voir comment ajouter un nouvelle enregistrement.