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 :

Update multi inputs [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Him
    Him est déconnecté
    Membre régulier Avatar de Him
    Profil pro
    Inscrit en
    Février 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut Update multi inputs
    Bonjour,

    Je possède un annuaire avec +- 400 catégories, et je viens de rajouter deux champs dans ma base de donnée.

    Je voudrais faire une page de mise à jour rapide sur laquelle j'affiche via une boucle ( while ) tous les champs titre, description, mots clés de ces catégories.

    Maintenant je bloque pour l'envoi du formulaire ?
    Comment faire pour enregistrer ( mettre à jour ) chaque "row" de ma boucle via son id ? ( j'ai créer un input hidden de nom id )

    Merci d'avance

  2. #2
    Him
    Him est déconnecté
    Membre régulier Avatar de Him
    Profil pro
    Inscrit en
    Février 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut
    Bonjou
    je vais réexpliquer mon problème, & vous montrer le code actuel.

    Je viens de lui ajouter un champ dans la base de donnée pour ma table catégorie, & d'une pierre deux coup je voudrais pouvoir optimiser les descriptions de mes catégories.

    Alors je me suis dit que pour gagner du temps & ne pas devoir editer catégories par catégories, je pourrais me réaliser une page de "mise à jour rapide" sur laquelle je vais via une boucle afficher toutes mes catégories avec systématiquement un input pour la description & les mots clés :-°

    Jusque la, pas de soucis, ma page éxiste & mon formulaire aussi !
    Seulement, je n'arrive pas à gèrer le retour d'information dans la base, j'ai beau chipoter rien ne s'enregistre dans la base.
    Pourtant j'arrive bien sur mon echo 'success'

    Dois-je faire aussi un while sur l'enregistrement ? Actuellement je n'ai fait qu'une requête sur le champ ID.

    Voici mon code actuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php 
    $submit = isset($_POST['submit']) ? $_POST['submit'] : '';
    $submit = htmlentities($submit);
    if ($submit)
    {
    	$id = $_POST['id'];
    	$texte_2 = $_POST['texte'];
    	$texte = htmlentities($texte_2);
    	$keywords_2 = $_POST['keywords'];
    	$keywords = htmlentities($keywords_2);
    	$lk = connection_BD();
    	mysql_query("UPDATE $T_categories SET texte='".$texte."', keywords='".$keywords."' WHERE id='".$id."'") or die(mysql_error());
    	mysql_close($lk);
    	echo 'succes';
    }
    else
    {
    ?>
    du html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    			echo '<table width="100%" align="center">';
    			echo '<form action="'.addsess2url('meta_annuaire.php',$session_id).'" name="update" method="post">';
    			$sql = mysql_query("SELECT id, cat_name, texte, keywords FROM $T_categories ORDER BY cat_name ASC") or die(mysql_error());
    			while($meta_info = mysql_fetch_array($sql))
    			{
    				echo '<tr><td><b>&raquo;</b> '.$meta_info['cat_name'].'<br>';
    				echo '<input type="hidden" name="id" value="'.$meta_info['id'].'" />';
    				echo '<textarea name="texte" cols="45" rows="5">';
    				echo $meta_info['texte']; // LE TEXTE DOIT ETRE SEPARE ET COMMENCER EN COL 0 DANS UNE ZONE DE TEXTE --> SINON KO
    				echo '</textarea></td>';
    				echo '<td>Mots clés pour la catégorie '.$meta_info['cat_name'].'<br>';
    				echo '<textarea name="keywords" cols="45" rows="5">';
    				echo $meta_info['keywords']; // LE TEXTE DOIT ETRE SEPARE ET COMMENCER EN COL 0 DANS UNE ZONE DE TEXTE --> SINON KO
    				echo '</textarea></td></tr>';
    			}
    			echo '<tr><td colspan="2"><input type="submit" name="submit" value="C\'est partiiii !!!" /></td></tr></form>';
    			echo '</table>';
    ?>
    Merci d'avance pour votre aide, car la vraiment je sêche !

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bonjour

    Si j'ai bien compris que ton problème se situe sur le bon fonctionnement de ton update, c'est probablement qu'il ya un problème syntaxique dans ta requête. Ce que je te propose, c'est d'afficher ta requête, histoire de voir à quoi elle ressemble...
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $rq = "UPDATE $T_categories SET texte='".$texte."', keywords='".$keywords."' WHERE id='".$id."'" ; 
    echo "requete update : $rq ";
    mysql_query($rq) or die(mysql_error());
    Si id est un nombre, il n'y a pas besoin de ' ' autour de la valeur.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    Alors je vois deja plusieurs probleme.
    Tout d'abord tu dois nommer differement chaque textarea au sein du formulaire ou alors les definir sous forme de tableau.
    Le plus simple est de donne un nom commun en concatenant l'-id de lenregistrement.

    Ensuite il faut effectivement que tu boucles sur la recuperation des resultats en creant une requete par update necessaire.
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  5. #5
    Him
    Him est déconnecté
    Membre régulier Avatar de Him
    Profil pro
    Inscrit en
    Février 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut
    @ celira,

    ma requêtapes retour, est bien correcte.
    Cependant, tu m'as fait comprendre qu'il n'y avait QUE le dernier input qui est mis à jour.

    @ stunti : je suis un peu noobs en la matière, peux tu me donner un exemple de ce que tu énonces ?

    Merci d'avance à vous

  6. #6
    Him
    Him est déconnecté
    Membre régulier Avatar de Him
    Profil pro
    Inscrit en
    Février 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut
    Donc voilà, dans un premier temps j'ai nommé mes textarea comme ce :

    echo '<textarea name="texte' . $id . '" cols="45" rows="5">';

    Idem sur les mots clés.

    Maintenant, j'ai vraiment pas trop d'idée pour la boucle d'enregistrement, surement avec un foreach, mais comment ?

  7. #7
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    en gros ton html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <?php
    			echo '<table width="100%" align="center">';
    			echo '<form action="'.addsess2url('meta_annuaire.php',$session_id).'" name="update" method="post">';
    			$sql = mysql_query("SELECT id, cat_name, texte, keywords FROM $T_categories ORDER BY cat_name ASC") or die(mysql_error());
    			while($meta_info = mysql_fetch_array($sql))
    			{
    				echo '<tr><td><b>&raquo;</b> '.$meta_info['cat_name'].'<br>';
    				echo '<input type="hidden" name="id[]" value="'.$meta_info['id'].'" />';
    				echo '<textarea name="texte_'.$meta_info['id'].'" cols="45" rows="5">';
    				echo $meta_info['texte']; // LE TEXTE DOIT ETRE SEPARE ET COMMENCER EN COL 0 DANS UNE ZONE DE TEXTE --> SINON KO
    				echo '</textarea></td>';
    				echo '<td>Mots clés pour la catégorie '.$meta_info['cat_name'].'<br>';
    				echo '<textarea name="keywords_'.$meta_info['id'].'" cols="45" rows="5">';
    				echo $meta_info['keywords']; // LE TEXTE DOIT ETRE SEPARE ET COMMENCER EN COL 0 DANS UNE ZONE DE TEXTE --> SINON KO
    				echo '</textarea></td></tr>';
    			}
    			echo '<tr><td colspan="2"><input type="submit" name="submit" value="C\'est partiiii !!!" /></td></tr></form>';
    			echo '</table>';
    ?>


    et le php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <?php 
    $submit = isset($_POST['submit']) ? $_POST['submit'] : '';
    $submit = htmlentities($submit);
    if ($submit)
    {
    	$arr_id = $_POST['id']; //on recupere un tableau 
            $lk = connection_BD();
    	foreach($arr_id as $id)) { //pas optimal et 
            $texte_2 = $_POST['texte_'.$id];
    	$texte = htmlentities($texte_2);
    	$keywords_2 = $_POST['keywords_'.$id];
    	$keywords = htmlentities($keywords_2);
     
     
     
    	mysql_query("UPDATE $T_categories SET texte='".$texte."', keywords='".$keywords."' WHERE id='".$id."'") or die(mysql_error());
           }
    	mysql_close($lk);
    	echo 'succes';
    }
    else
    {
    ?>
    C'est surement pas optimal et tu va devoir un peu de changements.
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  8. #8
    Him
    Him est déconnecté
    Membre régulier Avatar de Him
    Profil pro
    Inscrit en
    Février 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut
    Developez.com c'est trop de la balle !

    Merci à toi,
    je plonge dans la doc & je regarde comment optimiser ça, & je reviens donner mon retour pour ceux que cela intéresserait.

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

Discussions similaires

  1. problème update multi-tables
    Par steevest dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/10/2009, 11h44
  2. Créer un Update multi valeur
    Par BeWiiMyFred dans le forum Développement
    Réponses: 2
    Dernier message: 19/09/2008, 15h10
  3. Un UPDATE multi-table
    Par Séb. dans le forum Requêtes
    Réponses: 5
    Dernier message: 17/07/2008, 03h51
  4. Update d'input après saisie d'un autre input
    Par jbulysse dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/05/2008, 16h58
  5. UPDATE multi-tables sous SQL Server
    Par Cybernet dans le forum Langage SQL
    Réponses: 8
    Dernier message: 25/03/2004, 15h34

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