Registre de présence(boucle dans postgrsql)

Mammouth du PHP | 1029 Messages

08 nov. 2005, 15:14

Yes, j'ai enfin terminé.

Merci Cyrano.

Si quelqu'un, sait comment optimiser mon code je suis preneur
<?php
session_start();
include("Base/pgConnect.php");
include("Passwd/PasswdAnnuaire.php");

if ($_POST['DateAnnee']) {
	

$_SESSION['DateMois'] = $_POST['DateMois'];
$_SESSION['DateAnnee'] = $_POST['DateAnnee'];
$_SESSION['DatePlus'] = $_SESSION['DateMois'] + 1;

}

$_SESSION['idParticipant']=$_POST['Nom'];



if ($_POST['Heure']) {
		

$heure = isset($_POST['Heure']) ? $_POST['Heure'] : null;
$date1 = isset($_POST['Date1']) ? $_POST['Date1'] : null;
 
	if(isset($heure))
		{
	//parcours du 1er tableau en mettant les index dans $index et les valeurs
// dans $valeur
foreach ($_POST['Date1'] as $index=>$value) {
    //Récupération de la valeur du tableau 2 dont l'index est celui du tableau 1
    $value2 = $_POST['Heure'][$index];
    //Construction de la requete de mise à jour ou de update function créer grâce au langage pl/pgsql
    $sql = "SELECT insertupdate($value2,'".$value."',$_SESSION[idformateur],$_POST[NomRetour])";
    pg_query($Connect,$sql) or die ('Erreur dans le shéma');
     //insertion ou modification du registre  
    
						}
		echo "<p>Insertion dans le registre OK</p>";
    echo "<meta http-equiv=\"refresh\" content=\"2;url=index.php?section=Registre\" />";			
		}
}
else {
	
	echo "<p>Bonjour <b>".strtoupper($_SESSION['UserName'])."</B> bienvenu(e) dans le registre pour le mois de " .$_SESSION['DateMois']." de l'année ".$_SESSION['DateAnnee']."<p>";
    /**fonction définnissant le mois choissi par le menuregistre.php */
	$num = cal_days_in_month(CAL_JULIAN, date($_SESSION['DateMois']), date($_SESSION['DateAnnee']));
?>
<form id="formulaire_1" action="index.php?section=Registre" method="post">

  <table border="1">
    <tr>
      <td rowspan="2"><p>Choix du participant</p>
        <select name="Nom" onchange="document.forms['formulaire_1'].submit();" >
        <option value="" selected </option>
<?php
/** fonction créant le menu déroulant des personne inscrite dans l'association*/
    $sql = "SELECT idparticipant,parnom, parprenom FROM participant ORDER BY parnom ASC ";
    $result = pg_query($Connect, $sql);
    while ($row = pg_fetch_array($result))
    {
        $id = $row["idparticipant"];
        $valeur = $row["parnom"] ." ". $row["parprenom"];
?>
          <option value="<?php echo($id); ?>"><?php echo($valeur); ?></option>
<?php
    }
?>
        </select>
      </td>
      </tr>
      </TABLE>
      <TABLE border="1">
      </FORM>
      <tr>
      <td><P>Nom du Participant</td>
<?php
/**ici on crée autant de cases que dans la mois numeroter de 1 à la fin du mois*/
    $i=1;
    for($s = 0; $s < $num; $s++)
    {
?>
      <td><?php echo($i); ?></td>
<?php
        $i++;
    }
?>
    </tr>
    <tr>

 <form id="info" action="index.php?section=Registre" method="POST">
    
<?php
if (isset($_SESSION['idParticipant'])) {
	

/***
Ici on récupère le nom et le prénom du participant suite au javascript du menu déroulant
afin de l'afficher dans le <td> Nom du participant
*/
$sql2 = "SELECT idparticipant,parnom, parprenom 
		FROM participant 
		WHERE participant.idparticipant= $_SESSION[idParticipant]";
$resu1 = pg_query($Connect, $sql2);
$affiche = pg_fetch_array($resu1);

$valeur1 = $affiche["parnom"] ." ". $affiche["parprenom"];

/**ici on crée le même nombres de case mais avec récupération des valeurs inscrite dans la base de données
et on crée un champs caché avec les dates du mois*/

$recupsql = "SELECT * FROM registre WHERE regjour  >='$_SESSION[DateAnnee]-$_SESSION[DateMois]-01' AND regjour  <'$_SESSION[DateAnnee]-$_SESSION[DatePlus]-01'
AND registre.idparticipant=$_SESSION[idParticipant]
AND registre.idlogin = $_SESSION[idformateur]";
$soluce = pg_query($recupsql);
$row = pg_numrows($soluce);
}

if ($row!=0) {
	

echo "<td><input  name=\"\" value=\"$valeur1\"></td>";
echo "<INPUT type=\"hidden\"  name=\"NomRetour\" value=\"$_SESSION[idParticipant]\">";	

while ($row =pg_fetch_array($soluce)){
	

	echo "<td><input maxlength=\"1\" size=\"1\" name=\"Heure[]\" value=\"$row[regheure]\"></td>";

}
}
else {
	echo "<td><input  name=\"\" value=\"$valeur1\"></td>";
	echo "<INPUT type=\"hidden\"  name=\"NomRetour\" value=\"$_SESSION[idParticipant]\">";	
	?>
	
	<?PHP
for ($v = 1; $v < $num+1; $v++)
    {
?>
      <td><input maxlength="1" size="1" name="Heure[]" value="0"></td>
    
<?php
    }
}
?>
    </tr>
  </table>
  
<?PHP
for ($v = 1; $v < $num+1; $v++)
    {
?>
 <INPUT type="hidden" id="date1" name="Date1[]" value="<?php echo (date($_SESSION['DateAnnee'].'-'.$_SESSION['DateMois']).'-'.$v)?> ">
<?PHP
    }
?>
  
 <input type="submit" name="envoi" value="Enregistrer" />
</form>
<?php
}
?>
encore merci
L'expérience est la somme de toutes nos erreurs.

Mammouth du PHP | 19672 Messages

08 nov. 2005, 15:56

Proposition d'optimisation :
<?php
session_start();
include("Base/pgConnect.php");
include("Passwd/PasswdAnnuaire.php");

if ($_POST['DateAnnee'])
{
    $_SESSION['DateMois']  = $_POST['DateMois'];
    $_SESSION['DateAnnee'] = $_POST['DateAnnee'];
    $_SESSION['DatePlus']++;
}
$_SESSION['idParticipant']=$_POST['Nom'];
if ($_POST['Heure'])
{
    $heure = isset($_POST['Heure']) ? $_POST['Heure'] : null;
    $date1 = isset($_POST['Date1']) ? $_POST['Date1'] : null;
    if(isset($heure))
    {
        //parcours du 1er tableau en mettant les index dans $index et les valeurs
        // dans $valeur
        foreach ($_POST['Date1'] as $index => $value)
        {
            //Récupération de la valeur du tableau 2 dont l'index est celui du tableau 1
            $value2 = $_POST['Heure'][$index];
            //Construction de la requete de mise à jour ou de update function créer grâce au langage pl/pgsql
            $sql = "SELECT insertupdate(". $value2 .",'". $value ."', ". $_SESSION['idformateur'] .", ". $_POST['NomRetour'] .")";
            pg_query($Connect,$sql) or die ('Erreur dans le shéma');
            //insertion ou modification du registre
        }
?>
<p>Insertion dans le registre OK</p>
<meta http-equiv="refresh" content="2;url=index.php?section=Registre" />
<?php
    }
}
else
{
?>
<p>Bonjour <b><?php echo(strtoupper($_SESSION['UserName'])); ?></b>, bienvenu(e) dans le registre pour le mois de <?php echo($_SESSION['DateMois']); ?> de l'année <?php echo($_SESSION['DateAnnee']); ?><p>
<?php
    /**fonction définnissant le mois choissi par le menuregistre.php */
    $num = cal_days_in_month(CAL_JULIAN, date($_SESSION['DateMois']), date($_SESSION['DateAnnee']));
?>
<form id="formulaire_1" action="index.php?section=Registre" method="post">
  <table border="1">
    <tr>
      <td rowspan="2"><p>Choix du participant</p>
        <select name="Nom" onchange="document.forms['formulaire_1'].submit();">
          <option value="" selected></option>
<?php
    /** fonction créant le menu déroulant des personne inscrite dans l'association*/
    $sql = "SELECT idparticipant,parnom, parprenom FROM participant ORDER BY parnom ASC ";
    $result = pg_query($Connect, $sql);
    while ($row = pg_fetch_array($result))
    {
        $id = $row["idparticipant"];
        $valeur = $row["parnom"] ." ". $row["parprenom"];
?>
          <option value="<?php echo($id); ?>"><?php echo($valeur); ?></option>
<?php
    }
?>
        </select>
      </td>
    </tr>
  </table>
  <table border="1">
  </form>
  <tr>
    <td><p>Nom du Participant</td>
<?php
    /**ici on crée autant de cases que dans la mois numeroter de 1 à la fin du mois*/
    $i=1;
    for($s = 0; $s < $num; $s++)
    {
?>
    <td><?php echo($i); ?></td>
<?php
    $i++;
    }
?>
  </tr>
  <tr>
    <form id="info" action="index.php?section=Registre" method="POST">
<?php
    if (isset($_SESSION['idParticipant']))
    {
        /***
        Ici on récupère le nom et le prénom du participant suite au javascript du menu déroulant
        afin de l'afficher dans le <td> Nom du participant
        */
        $sql2 = "SELECT idparticipant,parnom, parprenom ".
                "FROM participant ".
                "WHERE participant.idparticipant= ".$_SESSION['idParticipant']."";
        $resu1 = pg_query($Connect, $sql2);
        $affiche = pg_fetch_array($resu1);
    
        $valeur1 = $affiche["parnom"] ." ". $affiche["parprenom"];
    
        /**ici on crée le même nombres de case mais avec récupération des valeurs inscrite dans la base de données
        et on crée un champs caché avec les dates du mois*/
    
        $recupsql = "SELECT * ".
                    "FROM registre ".
                    "WHERE regjour  >='". $_SESSION['DateAnnee'] ."-". $_SESSION['DateMois'] ."-01' ".
                    "AND regjour  <'". $_SESSION['DateAnnee'] ."-". $_SESSION['DatePlus'] ."-01' ".
                    "AND registre.idparticipant=". $_SESSION['idParticipant'] ." ".
                    "AND registre.idlogin = ". $_SESSION['idformateur'];
        $soluce = pg_query($recupsql);
        $row = pg_numrows($soluce);
    }
?>
      <td>
        <input  name="" value="<?php echo($valeur1); ?> ">
        <input type="hidden"  name="NomRetour" value="<?php echo($_SESSION['idParticipant']); ?>">
      </td>
<?php
    if ($row!=0) 
    {
        while ($row =pg_fetch_array($soluce))
        {
?>
      <td><input maxlength="1" size="1" name="Heure[]" value="<?php echo($row['regheure']); ?>"></td>
<?php
        }
    }
    else
    {
        for ($v = 1; $v < $num+1; $v++)
        {
?>
      <td><input maxlength="1" size="1" name="Heure[]" value="0"></td>
<?php
        }
    }
?>
    </tr>
  </table>
<?PHP
    for ($v = 1; $v < $num+1; $v++)
    {
?>
  <input type="hidden" id="date1" name="Date1[]" value="<?php echo (date($_SESSION['DateAnnee'].'-'.$_SESSION['DateMois']).'-'.$v)?> ">
<?PHP
    }
?>
  <input type="submit" name="envoi" value="Enregistrer" />
</form>
<?php
}
?>
Je te signale quand même un problème potentiel :
Tu définis $valeur1 (ligne 98 du code ci-dessus : si jamais la condition du if (ligne 86) retourne false, $valeur1 ne sera pas définie et tu auras une erreur ligne 114 "undefined variable valeur1..."

Solution: l'accolade fermante ligne 114 doit être décalée après celle de la ligne 135.

Bon code.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1029 Messages

08 nov. 2005, 17:37

Je jette un oeil à ça.

SUPER MERCI DE TON AIDE.

BONNE CHANCE A TOI
L'expérience est la somme de toutes nos erreurs.