Rechercher : dans
Par :

Changer une seule valeur dans un tableau

Dernière réponse le 13 mar 2008 à 19:34:24 desc1988, le 12 mar 2008 à 22:35:49 
 Signaler ce message aux modérateurs

Bonjour,
Mon problème actuel est le suivant :

J'ai un tableau avec un numéro d'étudiant, un nom, une date d'absence et une colonne justifié.Pour chaque ligne du tableau est associé un ID.


La colonne justifié est de type enum dans mysql et lorsque :
justifié=0 j'affiche NON.
justifié=1 j'affiche OUI.

La colonne justifié peu être modifiée car j'ai mis des balise <form> et <submit>

Mon script actuel va modifier dans la base de données la valeur de "justifié" lorsque la personne va marquer "oui".

PROBLÈME : toutes les valeurs sont modifiées=> Pour tous les étudiants justifié=1.


Voici mon script (PS :je ne sait pas quoi mettre dans le WHERE) :

<?php

if($_POST['justifie']='oui')

mysql_connect("localhost","root","");
mysql_select_db("gestion_absence");

mysql_query("UPDATE absences SET justif='1' WHERE ?????????");
mysql_close()
?>

<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("gestion_absence"); // Sélection de la base coursphp

$reponse = mysql_query("SELECT * FROM absences WHERE justif=1 ORDER BY classe "); // Requête SQL


// On fait une boucle pour lister tout ce que contient la table :
$classeprecedente=NULL;


while ($donnees = mysql_fetch_array($reponse))
{

if ($donnees['classe'] != $classeprecedente)
{
?>

<p>
<caption>Classe: <?php echo $donnees['classe']; ?></caption>
<table class="sortable">

<tr>
<th>Numero d'étudiant</th>
<th>Nom/Prenom</th>
<th>date d'absence</th>
<th>Justifié</th>
</tr>

<tr>

<td><?php echo $donnees['numero'] ?></td>
<td><?php echo $donnees['np'] ?></td>
<td><?php echo $donnees['date'] ?></td>
<td><form action="./justif_manu.php" method="post">
<p>
<input type="text" name="justifie" value="non" />

<input type="submit" value="Valider" />
</p>
</form>
</td>
</tr>
</table>
</p>

<?php

}
else
{
?>

<table class="sortable">
<tr>

<td><?php echo $donnees['numero'] ?></td>
<td><?php echo $donnees['np'] ?></td>
<td><?php echo $donnees['date'] ?></td>
<td><form action="./justif_manu.php" method="post">

<input type="text" name="justifie" value="non" />
<input type="submit" value="Valider" />

</form>
</td>
</tr>
</table>


<?php

}
$classeprecedente=$donnees['classe'];
}

Configuration: Windows XP
Firefox 2.0.0.12

Meilleures réponses pour « Changer une seule valeur dans un tableau » dans :
Manipulations élémentaires des tableaux sous MatLab VoirSommaire I. Stockage des tableaux II. L'indexation linéaire II.1. Accéder à un élément d'un tableau en utilisant l'indexation linéaire II.2. Passer d'une indexation à l'autre II.2.1. La fonction ind2sub II.2.2. La fonction sub2ind III. La...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
Tableur - Les fonctions mathématiques VoirLes fonctions standards Méthode description ABS() Cette méthode renvoie la valeur absolue d'un nombre, il renvoie donc le nombre s'il est positif, son opposé (positif) s'il est négatif IMPAIR(valeur) Cette méthode renvoie la valeur...

1

Alain_42, le 12 mar 2008 à 23:08:10

Bonsoir,

dans ton formulaire, il faut que tu passes en champ cache l'id


<input type="text" name="justifie" value="non" />
<input type="hidden" name="ID" value="<?php echo  $donnees['ID'];?>" />
<input type="submit" value="Valider" /> 



et tu le récupres dans le scrip d'UDATE:

<?php

if($_POST['justifie']=='oui'){//la il te manquait les accolades et le double = pour le test
$ID=$_POST['ID'];
mysql_connect("localhost","root","");
mysql_select_db("gestion_absence");

mysql_query("UPDATE absences SET justif='1' WHERE ID='".$ID."'");
mysql_close()
}
?> 

Répondre à Alain_42

2

 desc1988, le 13 mar 2008 à 19:34:24

C'est super...

Impeccable, merci beaucoup pour votre aide.

Décidément CCM est très efficace.

Encore merci.

Répondre à desc1988