Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/11/2007, 20h28   #1
Membre du Club
 
Inscription : avril 2003
Messages : 219
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 219
Points : 50
Points : 50
Par défaut [SQL] Modifier une table HTML et mettre à jour la base

Bonjour à tou(te)s,

J'ai une page php qui liste un ensemble de livres (titre, auteur, tomme, ..., commentaire) stockés dans une BDD MySQL.

La zone commentaire est une textbox <input type='text' id='commentaire'> afin que l'utilisateur puisse saisir des commentaires par rapport à chaque livre.
Mais mon problème est de pouvoir ensuite sauvegarder ces commentaires.

Je stocke de manière invisible l'ID de chaque livre dans la 1ère colonne afin de pouvoire faire l'update plus facilement.

Mais comment puis-je récupérer (au clic sur un bouton) l'ID et le commentaire de chaque livre présent dans la table ?
Je ne suis même pas sûr que ce soit possible car le clic sur le bouton va forcément me rediriger sur une autre page et donc je vais perdre les données de la table ?

Merci d'avance pour votre aide.
bart64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2007, 21h48   #2
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Bonjour,

Si j'ai bien tout compris tu peux créer par livre (et infos associées) un formulaire <form ...> avec tes <input type=text>... tu ajoutes un champ hidden qui contient l'identifiant du livre concerné, genre <input type="hidden" name="id" value="123">.

Ensuite soit ton bouton est un élément de formulaire type submit dans ce cas rien d'autre à faire. Soit c'est un bouton type button ou un lien hypertexte, dans ce cas tu intervient en javascript pour soumettre le formulaire.

Voilà ...

@+
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2007, 10h10   #3
Membre actif
 
Avatar de fenkys
 
Inscription : octobre 2007
Messages : 157
Détails du profil
Informations personnelles :
Âge : 45

Informations forums :
Inscription : octobre 2007
Messages : 157
Points : 181
Points : 181
Si j'ai bien compris, ta page permet de modifier tous les commentaires en une seule fois

Tu t'arranges pour que chaque input ait un ID différent et défini de façon univoque. Par exemple, l'id du livre ou la concaténation d'un mot constant et de l'id du livre. Ainsi, tu pourras les retrouver facilement dans ta page de destination, il te suffira de parcourir liste des livres dans ta bdd, de reconstituer les ID et de lire le contenu de l'input correspondant.
fenkys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2007, 20h11   #4
Membre du Club
 
Inscription : avril 2003
Messages : 219
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 219
Points : 50
Points : 50
Merci eric190 et fenkys pour vos réponses !

Je vais donc passer par un formulaire. La solution javascript est pour moi un peu lourde.

Pour la solution de repérer l'enregistrement à mettre à jour, je vais faire comme tu me le dis. En revanche, avec cette solution, le tps de traitement dépendra du nombre de livres dans la base.
N'y aurait-il pas une solution pour que le temps de traitement dépende du nombre de livres affichés dans la page ou encore mieux, du nombre de commentaires saisis ?

Par exemple :

Pour chaque input récupéré
Si pas vide
on fait l'update
Sinon
On zappe
FSi
Oui, je sais, j'en demande beaucoup.

Merci !
bart64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2007, 23h52   #5
Membre du Club
 
Inscription : avril 2003
Messages : 219
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 219
Points : 50
Points : 50
Bonjour,

Je vous tiens à vous remercier pour vos réponses.
J'ai pu, grâce à vous, faire ce que j'ai demandé dans mon 1er message.

Bonne soirée
bart64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2007, 11h01   #6
Invité de passage
 
Inscription : février 2006
Messages : 8
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 8
Points : 4
Points : 4
Bonjour,

J'ai hésité à créer un nouveau topic, mais puisque ce sujet est dans les derniers actifs du forum et que mon pb colle parfaitement avec ce topic.... je poste ici...

Tout comme bart64, je souhaite éditer sur une page unique le prix de tous les produits qui sont en vente sur un site.
J'ai donc fait une requête qui donne un tableau avec les colonnes :
Nom de l'article - Prix actuel

Suite aux conseils présents dans ce fil, j'ai un champ input qui ressemble à ceci :
Code :
<input name="prix_id_48" type="text" size="7" value="5.00" />
Mon problème se situe maintenant sur la manière d'introduire la requête SQL qui me permettra de mettre à jour tous les champs input de la page (étant donné le volume de données à traiter, je n'ai pas comme impératif de ne traiter QUE les champs ayant été modifié, mais pkoi pas...)

Dois-je faire une boucle avec une requête par article ?
EcliptuX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2007, 18h06   #7
Membre du Club
 
Inscription : avril 2003
Messages : 219
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 219
Points : 50
Points : 50
Bonjour EcliptuX,

Voici comment tu peux faire :

Dans le form qui contient tous les produits, tu peux créer une ligne invisible qui contient la requête qui t'as permis d'afficher la liste des produits. Un peu comme ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
echo "<tr style='display:none' >";
echo "<td style='display:none' name='reqSQL'>$taRequete</td>";
echo "</tr>";
 
echo "<tr>";
echo "<td style='display:none' name='produit$codProduit'>$codProduit</td>";
echo "<td>nom du produit</td>";
echo "<input name='prix_id_48' type='text' size='7' value='5.00' />";
echo "</tr>";
 
// etc...
Ainsi, en envoyant ton formulaire à la page suivante, tu pourras récupérer la liste des produits qui étaient affichée.

Tu le récupère donc dans la page suivante dans la variable $reqSQL.

Tu l'exécutes et pour chacun des produits (qui contient la clé) tu fais pour chaque produit affiché dans la form précédente :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
while ($data = mysql_fetch_array($reqSQL)) { 
 
	$codProduit = $data['codProduit'];
	$prix = $data['prix'];
 
	$varPrix = "prix_id_".$codProduit;
 
	if (isset($$varPrix)){
		UPDATE
	}else{
		//on fait rien
	}
}
Voilà comment j'ai fait et je pense que ça ne peut pas être mieux.
(je l'ai tapé comme ça sans le tester mais ca fonctionne sur mon code)
bart64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h38.


 
 
 
 
Partenaires

Hébergement Web