Registre de présence(boucle dans postgrsql)

Mammouth du PHP | 1029 Messages

15 sept. 2005, 16:26

Dans le code que tu me proposes, pour afficher le prénom, il faut pousser sur le boutton, mais alors le NOM se remet au début.

Donc le nom ne correspond pas avec le prenom.

Pour la variable $reg, effectivement elle ne sert à rien et je l'ai donc enlevé.

J'ai essayé de faire une fonction en javascript avec une variable pour que sur l'action onchange, il affecte la valeur parnom et que mon deuxième select récupère cette variable pour afficher le bon prénom, mais cela ne fonctionne pas.

Voila ce que j'ai fais
<?php
include("../Ekoke/Base/pgConnect.php");
$num = cal_days_in_month(CAL_JULIAN, date('m'), date('Y'));

?>
<SCRIPT> 
var prop
function main(){
document.forms['form_1'].elements['parprenom'].value = prop;

}
</SCRIPT>
<form id="form_1" action="<?php echo($_SERVER['PHP_SELF']) ?>" method="post">
  <table border="1">
    <tr>
      <td>
        <select name="Nom" onchange="main();">
<?php
$sql = "SELECT DISTINCT parnom FROM participant ORDER BY parnom ASC ";
$result = pg_query($Connect, $sql);
while ($row = pg_fetch_array($result))
{
    $valeur = $row["parnom"];
    $selected = $valeur ? " selected" : null;
?>
          <option value="<?php echo($valeur); ?>"<?php echo($selected); ?>><?php echo($valeur); ?></option>
<?php
}
?>
        </select>
      </td>
<?php
$i=1;
for($s = 0; $s < $num; $s++)
{
?>
      <td><?php echo($i); ?></td>
<?php
    $i= $i+1;
}
?>
    </tr>
    <tr>
      <td>
        <select name="Prenom"size="1">
<?php
$sql2 = "SELECT parprenom FROM participant where parnom= '".prop."'";
$result = pg_query($Connect, $sql2);
while ($row = pg_fetch_array($result))
{
    $valeur = $row["parprenom"];
    $selected = $valeur ? " selected" : null;
?>
          <option value="<?php echo($valeur); ?>"<?php echo($selected); ?>><?php echo($valeur); ?></option>
<?php
}
?>
        </select>
      </td>
<?php
for ($v = 0; $v < $num; $v++)
{
?>
      <td><input maxlength="1" size="1" name="Heure[]"></td>
<?php
}

?>
    </tr>
  </table>
  <input type="submit" name="envoi" value="Enregistrer" />
</form>
je cherche encore!
Bonne soirée
L'expérience est la somme de toutes nos erreurs.

Mammouth du PHP | 19672 Messages

15 sept. 2005, 19:13

Pourquoi ne mets-tu pas nom et prénom dans la même option ? Ce n'est qu'une question d'affichage : pour la valeur du champ option, tu peux mettre seulement la clé primaire te permettant d'identifier l'élève (ou le prof) pour tes requêtes SQL. Simplifions donc:
<?php
include("../Ekoke/Base/pgConnect.php");
$num = cal_days_in_month(CAL_JULIAN, date('m'), date('Y'));
?>
<form id="form_1" action="<?php echo($_SERVER['PHP_SELF']) ?>" method="post">
  <table border="1">
    <tr>
      <td rowspan="2">
        <select name="Nom" onchange="main();">
<?php
$sql = "SELECT DISTINCT parnom, parprenom FROM participant ORDER BY parnom ASC ";
$result = pg_query($Connect, $sql);
while ($row = pg_fetch_array($result))
{
    $valeur = $row["parnom"] ." ". $row["parprenom"];
?>
          <option value="<?php echo($valeur); ?>"><?php echo($valeur); ?></option>
<?php
}
?>
        </select>
      </td>
<?php
$i=1;
for($s = 0; $s < $num; $s++)
{
?>
      <td><?php echo($i); ?></td>
<?php
$i= $i+1;
}
?>
    </tr>
    <tr>
<?php
for ($v = 0; $v < $num; $v++)
{
?>
      <td><input maxlength="1" size="1" name="Heure[]"></td>
<?php
}

?>
    </tr>
  </table>
  <input type="submit" name="envoi" value="Enregistrer" />
</form>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1029 Messages

16 sept. 2005, 13:23

Bonjour; des fois je me demande pourquoi j'y pense pas.

Un point pour éclaircir ma lanterne quand tu dis.
pour la valeur du champ option, tu peux mettre seulement la clé primaire te permettant d'identifier l'élève (ou le prof) pour tes requêtes SQL.
Or suivant ton code la variable $valeur va contenir le nom et le prénom, dans ma table sql ce sont 2 attrbuts différents, devrais-je faire un explode de cette variable pour récupérer les bonnes données.

de plus la javascript n'est plus nécéssaire, je vois plus un page de ce style là :
if (-_POST[Nom])
{
//code sql

//ton code

}

else
{
//ton code
}

Ce qui me permet la première fois de ne pas éxécuter sql.

je sais je part dans tous les sens
que penses-tu de l'explode, ou existe-il une autre proposition?
L'expérience est la somme de toutes nos erreurs.

Mammouth du PHP | 19672 Messages

16 sept. 2005, 13:32

Pourquoi faire ? les informations sont déjà dans la base de données : donc ce qui nous intéresse, c'est de pouvoir identifier un élève: chaque ligne doit avoir un identifiant unique : la clé primaire. Lors de la construction des options, tu mets :

Code : Tout sélectionner

<option value="cle_primaire">Nom Prénom</option>
En clair, pour l'utilisateur, on affiche quelque chose de "parlant", en l'occurence un nom/prénom : pour l'application, on ne sait pas ce que signifie de nom, ce n'est qu'une chaine de caractère. Par contre, la valeur qu'on met dans l'attribut value de la balise option, c'est un identifiant qui est la clé : à partir de cette clé, on peut mettre à jour très précisément une ligne de la table.

Est-ce que visualises sommairement ce schéma ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1029 Messages

16 sept. 2005, 14:23

oui.......oui :lol:
<select name="Nom" onchange="main();">
<?php
$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>
donc si je comprend bien, là on dispose

de l'info sur le prof grâce a l'id de session et de l'élèves grâce au select :lol:
L'expérience est la somme de toutes nos erreurs.

Mammouth du PHP | 19672 Messages

16 sept. 2005, 15:32

Ben voilà, tout simplement. Essaye d'avancer avec ça et dis moi si tu bloques plus loin.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1029 Messages

16 sept. 2005, 19:52

ok merci, je remet un post ce lundi, en fait je n'ai pas accès au net en dehors du boulot.

Un bon W-K :lol: :lol:

on va y arriver \:D/
L'expérience est la somme de toutes nos erreurs.

Mammouth du PHP | 1029 Messages

19 sept. 2005, 10:52

Bonjour, as-tu passez un bon W-K? :lol:
Donc 2 problèmes se pose à moi :

1) récupérer les valeurs du champ $_POST[heure]
2)assigner et récupérer une date par rapport au même champs.

Pour le premier j'essaye ceci, mais cela ne fonctionne pas

if ($_POST[heure]) {
	foreach ($_POST[heure] as $salut)
	{
	echo $salut;
	}
	
}
Merci de ton aide
L'expérience est la somme de toutes nos erreurs.

Mammouth du PHP | 19672 Messages

19 sept. 2005, 10:58

De la manière dont tu l'as écrit, heure est considéré comme une constante ... qui n'existe pas :
if ($_POST['heure'])
{
    foreach ($_POST['heure'] as $salut)
    {
        echo $salut;
    }
}
Comme ça, il y a des chances que ça fonctionne mieux.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1029 Messages

19 sept. 2005, 12:13

Cela ne fonctionne pas non plus,

en fouillant le début du post, j'ai récupéré ceci, qui fonctionne
if(isset($_POST['Heure']))
{
    foreach($_POST['Heure'] as $var => $valeur)
    {
        ${$var} = $valeur;
        echo $valeur;
    }
} 
Maitenant quel direction je dois prendre pour assigner les dates au champs date?
L'expérience est la somme de toutes nos erreurs.

Mammouth du PHP | 19672 Messages

19 sept. 2005, 12:37

Fais donc un bout de code comme ceci que je sache ce qu'il y a dans ton tableau $_POST['Heure']
<pre>
<?php
var_dump($_POST['heure']);
?>
</pre>
À première vue, c'est un tableau à deux dimensions, et écrire ${$var} consiste à créer dynamiquement des variables portant le nom des index, par exemple, on pourrait avoir :
$heures = $_POST['heure'];
$heure_msg = $heure['hr'] . $heure['mn'] . $heure['sc'];
Avec l'utilisation de ${$var} pour initialiser les valeurs, on pourrait à la place faire:
if(isset($_POST['Heure']))
{
    foreach($_POST['Heure'] as $var => $valeur)
    {
        ${$var} = $valeur;
        echo $valeur;
    }
    $heure_msg = $hr . $mn . $sc;
}
Mais il faudrait connaître exactement l'intitulé des index.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1029 Messages

19 sept. 2005, 13:06

Le var dump donne null comme réponse
À première vue, c'est un tableau à deux dimensions, et écrire ${$var} consiste à créer dynamiquement des variables portant le nom des index, par exemple, on pourrait avoir :
.

Je ne comprend pas bien la
L'expérience est la somme de toutes nos erreurs.

Mammouth du PHP | 19672 Messages

19 sept. 2005, 18:35

Le var dump donne null comme réponse
:shock: Ça, c'est encore moins normal... refais la même chose avec simplement var_dump($_POST);, tu verras bien ce qui est envoyé
À première vue, c'est un tableau à deux dimensions, et écrire ${$var} consiste à créer dynamiquement des variables portant le nom des index, par exemple, on pourrait avoir :
.

Je ne comprend pas bien la
Il m'est arrivé d'utiliser une astuce pour certains formulaires avec de nombreux champs pour initialiser mes variables , voici, les explications suivent;
if(isset($_POST['rechercher_x']))
{
    /* Récupération des paramètres du formulaire */
    foreach ($_POST as $champ => $valeur)
    {
        ${$champ} = $valeur;
    }
}
Suppose que tu aies un formulaire avec une soixantaine de champs. Lors de la récupération, pour chaque champ, tu devrais initialiser une variable du style:
$champ = $_POST['champ'];
Faire ça pour 60 champs peut devenir fastidieux : donc mon petit bout de code plus haut permet de faire la même chose automatiquement pour tous les champs. Et ainsi, si un champ de mon formulaire a pour attribut name="champ1", je peux avec cette manière de faire utiliser ensuite directement $champ dans la page de traitement, à la manière dont on procédait lorsque par défaut le register_globals était à ON.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1029 Messages

20 sept. 2005, 09:26

Bonjour,

Var dump[$_POST], donne ceci
array(3) {
  ["Nom"]=>
  string(2) "89"
  ["Heure"]=>
  array(30) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "1"
    [2]=>
    string(1) "1"
    [3]=>
    string(0) ""

....

 [21]=>
    string(0) ""
    [22]=>
    string(0) ""
    [23]=>
    string(0) ""
    [24]=>
    string(0) ""
    [25]=>
    string(0) ""
    [26]=>
    string(0) ""
    [27]=>
    string(0) ""
    [28]=>
    string(0) ""
    [29]=>
    string(0) ""
  }
  ["envoi"]=>
  string(11) "Enregistrer"
}
L'expérience est la somme de toutes nos erreurs.

Mammouth du PHP | 19672 Messages

20 sept. 2005, 10:01

Ok, un nom de variable ne pouvant commencer que par une lettre ou un _ ça ne risquait pas de fonctionner puisque ce sont des index numériques. Il te faudra donc définir des variables toi-même au lieu d'utiliser la création dynamique du style $heure_0 = $_POST['heure'][0] quoique ce serait peut-être possible malgré tout avec quelque chose comme $h{$var} = $valeur, il faudrait tester, je n'ai jamais essayé
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: