Problème SQL PHP HTML !!!

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

hx.jonathan
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 115
Inscription: Mer Mar 02, 2005 17:42

Problème SQL PHP HTML !!!

Message le Ven Juil 20, 2007 13:36

Bonjour à tous,

J'ai un petit souci.

J'ai crée une table "JOUR" avec phpmyadmin. Mon but est que l'utilisateur qui mettra à jour ces informations sur le site web puisse donc afficher tous les enregistrements de cette table, faire les modifs qu'il veut et ensuite cliquer sur le bouton valider en bas de page afin de sauver les modifications apportées.

Je fais donc une boucle afin de lister tous les enregistrements. Mais quand je cliquer sur envoyer il me modifie tous les champs avec la même valeur.

Je ne comprends pas. Si vous pouviez m'aider ou me donner un exemple qui marche afin que je comprenne la bonne manière de faire. Merci

Dans ma page php je fais ceci :

--------------------------------------------------------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="styles_club.css" />
<title>Accueil</title>
</head>
<body>

Agenda
<form action="check.php" method="post">
<table>
<tr>
<?php
connexion_DB('bd_club'); //fonction de connexion à la base
$select = mysql_query('SELECT * FROM jour');
while ($donnees = mysql_fetch_array($select)) // On fait une boucle pour lister les enregistrements
{ // début de la boucle
?>





<td><input name="id_jour" value="<?php echo $donnees['id_jour']; ?>" /></td>
<td><input name="num" value="<?php echo $donnees['num']; ?>" /></td>
<td><input name="nom" value="<?php echo $donnees['nom']; ?>" /></td>
<td><input name="autres" value="<?php echo $donnees['autres']; ?>" /></td>

</tr>

<?php
} // Fin de la boucle
?>
</table>
<input type="submit" value="Envoyer" />
</form>

<?php
deconnexion_DB();
?>



</body>


</html>
-----------------------------------------------------------------------------

Voici mon problème.

J'obtiens bien un tableau avec tous les enregistrements.

Mais comment faire pour enregistrer toutes ces informatins dans ma table ?


Krysss
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 139
Inscription: Ven Fév 02, 2007 9:36

Message le Ven Juil 20, 2007 14:48

Regarde ton code dans ta boucle:

Tu liste bien toutes les infos de la base apparement mais tu as toujours les mêmes noms de champs
<input name="id_jour"
<input name="num"
<input name="nom"
<input name="autres"

Quand tu vas poster ton formulaire ces variables vont voir leur valeurs s'ecraser...

Pour remedier à celà il faut en premier différencier les variables par exemple :

...
$i=0;
while ($donnees = mysql_fetch_array($select)) // On fait une boucle pour lister les enregistrements
{ // début de la boucle
?>
<td><input name="id_jour<?=$i;?>" value="<?php echo $donnees['id_jour']; ?>" /></td>
<td><input name="num<?=$i;?>" value="<?php echo $donnees['num']; ?>" /></td>
<td><input name="nom<?=$i;?>" value="<?php echo $donnees['nom']; ?>" /></td>
<td><input name="autres<?=$i;?>" value="<?php echo $donnees['autres']; ?>" /></td>
</tr>
<?php
$i++;
} // Fin de la boucle
...

Je te laisse deviner la suite...

hx.jonathan
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 115
Inscription: Mer Mar 02, 2005 17:42

Message le Ven Juil 20, 2007 15:06

Salut,

Tout d'abord merci de ta réponse.


Ben en fait oui c'est normal que j'ai les mêmes champs. En fait, voici comment se présenterait l'interface de mise à jour:
accès à la BDD pour affichier tous oles enregistrements. Il s'agit en fait de jours donc par exemple:

id_jour(unique) num (numéro du jour) nom(lundi...) autres
-------------------------------------
1 14 lundi erfeef
2 15 mardi
3 16 mercredi
....



1) la personne voit tous ces enregistrements dans des zones de texte.Ceux-ci doivent donc etre modifiables
2) elle doit pouvoir modifier ce qu'elle veut
3) un bouton unique doit permettre de sauvegarder les changements dans la BDD

Tu vois peut être mieux ce que je souhaite comme ça.

Dans ton explication je ne comprends ce qu'est $i=0 ??? pourquoi i et pourquoi 0.

A quoi est censé servir ce bout de code <td>..<?=$i;?></td> ???

Je crois que je ne comprends pas bien la logique. Pourrais-tu m'éclaircir à ce niveau ?

Un grand merci. Je ne suis peut etre pas très clair désolé.

[/img]


Krysss
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 139
Inscription: Ven Fév 02, 2007 9:36

Message le Ven Juil 20, 2007 16:02

je me réexplique si tu as toujours les mêmes champs (on va prendre id_jour par exemple) dans ta page tu auras :

<td><input name="id_jour" value="journumero1" /></td>
.....
.....
.....
<td><input name="id_jour" value="journumero2"/></td>
.....
.....
.....
<td><input name="id_jour" value="journumero3"/></td>
.....
.....
.....

Quand tu vas poster ton formulaire, tu vas avoir id_jour qui va etre envoyé comme variable. Mais tu ne pourra pas récupérer les trois valeur différentes de id_jour. C'est comme si tu faisais :

$id_jour = 1;
$id_jour = 2845;
$id_jour = 0;

Ben id jour là si tu l'affiches il sera égal à 0;

Comprends-tu le problème ?

hx.jonathan
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 115
Inscription: Mer Mar 02, 2005 17:42

Message le Ven Juil 20, 2007 16:13

oui ok, je comprends.

Mais alors comment pourrais-je obtenir ces différentes valeurs de id_jour ?


Marie-Aude
WRInaute accro
WRInaute accro
 
Messages: 4942
Inscription: Lun Juin 05, 2006 14:15

Message le Ven Juil 20, 2007 18:45

le $i est un index supplémentaire, qui permet de créer dans ta boucle des variables différentes.

Le premier jour sera $id_jour=0, et plus id_jour, le deuxième jour sera id_jour=1, etc... tu ajoutes ainsi une colonne supplémentaire à ton tableau qui te permet de différencier plusieurs lignes

hx.jonathan
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 115
Inscription: Mer Mar 02, 2005 17:42

Message le Ven Juil 20, 2007 18:55

Salut,

En fait, mon besoin est simple :

je dois aller chercher des infos dans la BDD (ça ça marche), ensuite les afficher à l'écran pour pouvoir les modifier,finalement je dois réintroduire ces infos dans la BDD pour prendre en compte les modifs.

N'aurais-tu pas un script pour moi car je ne m'en sors pas et c'est assez important.

Merci.[/img]


Krysss
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 139
Inscription: Ven Fév 02, 2007 9:36

Message le Ven Juil 20, 2007 22:54

C'est là l'utilité du $i dans mon premier post.
Quand tu affiches tes lignes tu fais ça :

$i=0;
while ($donnees = mysql_fetch_array($select)) // On fait une boucle pour lister les enregistrements
{ // début de la boucle
?>
<td><input name="id_jour<?=$i;?>" value="<?php echo $donnees['id_jour']; ?>" /></td>
<td><input name="num<?=$i;?>" value="<?php echo $donnees['num']; ?>" /></td>
<td><input name="nom<?=$i;?>" value="<?php echo $donnees['nom']; ?>" /></td>
<td><input name="autres<?=$i;?>" value="<?php echo $donnees['autres']; ?>" /></td>
</tr>
<?php
$i++;
} // Fin de la boucle


le $i va prendre la valeur 0 quand la premiere boucle va être effectuée puis 1 pour la seconde puis 2 pour la troisieme......
Dans le HTML, le $i va donc ajouter un nombre apres les variables et ce pour chaque ligne.

Tu auras dans ton HTML
<tr>
<td><input name="id_jour0" value="donnee_jour" /></td>
<td><input name="num0" value="donnee_num" /></td>
<td><input name="nom0" value="donnee_nom" /></td>
<td><input name="autres0" value="donnee_autres" /></td>
</tr>
<tr>
<td><input name="id_jour1" value="donnee_jour" /></td>
<td><input name="num1" value="donnee_num" /></td>
<td><input name="nom1" value="donnee_nom" /></td>
<td><input name="autres1" value="donnee_autres" /></td>
</tr>
<tr>
<td><input name="id_jour2" value="donnee_jour" /></td>
<td><input name="num2" value="donnee_num" /></td>
<td><input name="nom2" value="donnee_nom" /></td>
<td><input name="autres2" value="donnee_autres" /></td>
</tr>

Voilà pour chaque lignes les variables id_jour, num, nom et autres seront differentes et donc elles seront toutes postées sans s'écraser.

Pour l'enregistrement il faut faire une boucle qui enregistre les données de chaque lignes.

Petite précision il manque un "type" dans tes <input>

hx.jonathan
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 115
Inscription: Mer Mar 02, 2005 17:42

Message le Sam Juil 21, 2007 9:45

Salut,

Merci pour ta réponse.

J'ai bien compris mais j'ai encore 2 points d'interrogation:

1) pq il ne s'incrémente pas malgré que j'ai respecté ton code.
2) ou dois-je alors et comment faire cette boucle :

merci pour tout.


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité