IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] Modifier une table HTML et mettre à jour la base


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 262
    Points : 100
    Points
    100
    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.

  2. #2
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    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à ...

    @+

  3. #3
    Membre éprouvé Avatar de fenkys
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 376
    Points : 1 054
    Points
    1 054
    Par défaut
    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.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 262
    Points : 100
    Points
    100
    Par défaut
    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 !

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 262
    Points : 100
    Points
    100
    Par défaut
    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

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <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 ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 262
    Points : 100
    Points
    100
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/09/2011, 11h23
  2. SQL Server 2005 impossible de modifier une table
    Par mad_martigan dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/10/2009, 11h52
  3. Modifier une table temporaire sous SQL Serveur
    Par lunapabu dans le forum Access
    Réponses: 5
    Dernier message: 16/08/2007, 16h18
  4. Réponses: 1
    Dernier message: 13/07/2007, 11h54
  5. Réponses: 2
    Dernier message: 13/12/2006, 17h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo