Page 1 sur 1

Comment sélectionner un enregistrement dans un tableau

Posté : 16 oct. 2014, 10:25
par philbov
Bonjour,

J'ai mis en place une base de données toute simple qui sert à contrôler la validité d'un bon et le solde de celui-ci. La consultation s'effectue depuis 4 stations de ski d'une même région. A la remise d'un bon à la caisse, le personnel va consulter la base pour savoir si le bon est valide et combien de journées il reste. Ensuite l'idée est de sélectionner le client par un lien, de récupérer les données dans un formulaire, de modifier ce doit l'être et finalement d'insérer les novelles données dans la base.

En parcourant les forums et en tâtonnant, je suis arrivé à faire fonctionner le tout. Le visuel ne me plaisait pas donc j'ai formaté les données pour qu'elles soient plus agréables à l'œil, et depuis là je bute. Ce qui fonctionne sans mise en forme, ne fonctionne plus à partir d'un tableau html. Un fois dans un tableau, je n'arrive plus à faire passer l'ID d'un enregistrement d'une page à l'autre.

Pouvez-vous me donner un coup de main ? D'avance merci
Philippe

Voici quelques lignes de la page sur laquelle je souhaite sélectionner les enregistrements. (Tous les enregistrements sont là, mais la sélection ne fonctionne pas)
<?php		
//requête SQL:
    $sql = "SELECT * FROM liste_bons ORDER BY nom" ;
 
//exécution de la requête:
    $req = mysql_query( $sql, $base ) ;
 
//affichage des données:
	//while( $result = mysql_fetch_object( $req ) )
	//while( $result = mysql_fetch_array( $req ) )
	while( $result = mysql_fetch_assoc( $req ) )
	{
      
//détermination de la valeur du solde
	$Solde = $result['Nombre']-$result['Champex']-$result['Fouly']-$result['Marecottes']-$result['Vicheres'];
?>

	<tr>
		<td><?php echo ($result['Commande']); ?></td>
		<td><?php echo ($result['Nom']); ?></td>
		<td><?php echo ($result['Prenom']); ?></td>
		<td style="text-align: center"><?php echo ($result['Personne']); ?></td>
		<td style="text-align: center"><?php echo ($result['Nombre']); ?></td>
		<td style="text-align: center"><?php echo "$Solde"; ?></td>
		<td><?php echo '<a href="selection.php?IDliste_bons= . $result->ID. ">' ; ?>Modifier</a></td>
	
	</tr>
	
<?php
}
?>	
	
</table>	
La même page que ci-dessus mais sans mise en forme dans un tableau. Dans ce cas tout fonctionne.
<?php

//requête SQL:
    $sql = "SELECT * FROM liste_bons ORDER BY nom" ;
 
//exécution de la requête:
    $req = mysql_query( $sql, $base ) ;
 
//affichage des données:
    while( $result = mysql_fetch_object( $req ) )
    {
       echo(
           "<div align=\"center\">"
			//.$result->ID." ".$result->Commande." ".$result->Nom." ".$result->Prenom
            .$result->Commande." ".$result->Nom." ".$result->Prenom
           ." <a href=\"selection.php?IDliste_bons=".$result->ID."\">modifier</a></div>\n"
       ) ;
    }
?>


Et là la page qui récupère l'enregistrement choisi dans un formulaire pour l'insérer dans la base un fois modifié. (Cette page ne fonctionne pas avec le 1er script mais mais parfaitement avec le 2ème!)
<?php

//récupération de la variable d'URL qui va nous permettre de savoir quel enregistrement modifier
  $ID  = $_GET["IDliste_bons"] ;
 
//requête SQL:
  $sql = "SELECT *
            FROM liste_bons
			WHERE ID = $ID" ;
 
//exécution de la requête:
  $req = mysql_query( $sql, $base ) ;
 
//affichage des données:
  if( $result = mysql_fetch_object( $req ) )
    {

?>
	
<form name="insertion" action="modification3.php" method="POST">
	<input type="hidden" name="ID" value="<?php echo($ID) ;?>">
		<table border="0" align="center" cellspacing="2" cellpadding="2">
			<tr align="center">
					<td>Commande</td>
					<td><input type="text" name="Commande" value="<?php echo($result->Commande) ;?>"></td>
			</tr>
			<tr align="center">
					<td>Nom</td>
					<td><input type="text" name="Nom" value="<?php echo($result->Nom) ;?>"></td>
			</tr>
			<tr align="center">
					<td>Prenom</td>
					<td><input type="text" name="Prenom" value="<?php echo($result->Prenom) ;?>"></td>
			</tr>
			<tr align="center">
					<td>Personne</td>
					<td><input type="text" name="Personne" value="<?php echo($result->Personne) ;?>"></td>
			</tr>
			<tr align="center">
					<td>Nombre</td>
					<td><input type="text" name="Nombre" value="<?php echo($result->Nombre) ;?>"></td>
			</tr>
			<tr align="center">
					<td>Champex</td>
					<td><input type="text" name="Champex" value="<?php echo($result->Champex) ;?>"></td>
			</tr>
			<tr align="center">
					<td>Marécottes</td>
					<td><input type="text" name="Marecottes" value="<?php echo($result->Marecottes) ;?>"></td>
			</tr>
			<tr align="center">
					<td>Fouly</td>
					<td><input type="text" name="Fouly" value="<?php echo($result->Fouly) ;?>"></td>
			</tr>
			<tr align="center">
					<td>Vichères</td>
					<td><input type="text" name="Vicheres" value="<?php echo($result->Vicheres) ;?>"></td>
			</tr>
					<tr align="center">
					<td colspan="2"><input type="submit" value="modifier"></td>
			</tr>
		</table>
</form>

<?php
	}//fin if 
?>

Re: Comment sélectionner un enregistrement dans un tableau

Posté : 16 oct. 2014, 11:45
par moogli
salut,


le problème viens de l'utilisation du délimiteur de chaine de caractère.
Lorsque tu utilise des ' il n'y a pas de remplacement de d'effectué.
C'est une bonne chose mais il faut employer la concaténation correctement (donc avec des ' pour la concaténation :) ).
<?php echo '<a href="selection.php?IDliste_bons=' . $result->ID.'>' 
@+

Re: Comment sélectionner un enregistrement dans un tableau

Posté : 16 oct. 2014, 13:04
par yann18
dans le 1er script le résultat de la requête renvoie un tableau associatif( mysql_fetch_assoc( $req ) ) et non un tableau d'objet.
tu remplaces cette ligne:
      <td><?php echo '<a href="selection.php?IDliste_bons= . $result->ID. ">' ; ?>Modifier</a></td>
par :
        <td><?php echo '<a href="selection.php?IDliste_bons= '. $result['ID']. '">' ; ?>Modifier</a></td>

Re: Comment sélectionner un enregistrement dans un tableau

Posté : 16 oct. 2014, 15:11
par philbov
Merci yann18,
Le remplacement que tu proposes a résolu mon problème.
Je ne saisis pas encore bien ces différents tableaux array, assoc, object et leurs utilisations !!
Philippe