Accueil > Forum > > > > Modifier plusieurs champs d'un tableau en même temps
Modifier plusieurs champs d'un tableau en même temps
mardi 23 février 2010 à 13:02:13 |
Modifier plusieurs champs d'un tableau en même temps

IchabOd69
|
Bonjour,
Je suis débutant/bidouilleur en php/mysql
J'essaye de me faire ma propre gestion de mes comptes bancaires, et je bloque sur un truc.
J'importe le fichier csv des opérations bancaires, je formatte un tableau avec 8 colonnes, et je souhaite modifier certains champs sur ma page web.
Donc je me retrouve avec potentiellement plusieurs dizaines de champs modifiés lors de la même opération.
Comment coder ça en php/mysql ?
J'ai créé un formulaire en méthode = post, une boucle while récupère toutes les données de la base et les présente dans une table, et lorsque je clique sur le bouton 'modifier', j'envoie les données à une page modif.php.
Et c'est là que je bloque. Je sais mettre à jour une ligne dans une table, mais pas n lignes. J'imagine qu'il faut mettre une boucle mais je n'y arrive pas.
Faut-il utiliser un FOREACH ? (j'ai lu la doc, je comprends pas trop)
Comment est alors la structure ?
Comment être sûr que le formulaire envoie bien TOUTES les lignes et pas seulement la première par exemple ?
Merci de vos lumières.
|
|
mardi 23 février 2010 à 13:16:58 |
Re : Modifier plusieurs champs d'un tableau en même temps

IchabOd69
|
une petite idée comme ça : serait-ce possible de faire ça :
<?php
$tableau1 = array ('colonne1', 'colonne2', 'colonne3', etc...);
$var = 'tableau1';
$nb_elements = count (${$var});
for ($i=0; $i<$nb_elements; $i++) {
$champ1=$_POST['champ1'];
$champ2=$_POST['champ2'];
etc...
et après la requête sql d'update ??
}
?>
|
|
mardi 23 février 2010 à 13:35:00 |
Re : Modifier plusieurs champs d'un tableau en même temps

jimmypage64
|
salut!
si tu met ta requete UPDATE dans la boucle For normalement cela devrait fonctionner ! il fera un UPDATE pour chaque ligne de ton tableau.
Du coup ta requete sera :
"UPDATE TaTable SET ChampTable1 = $champ1, ChampTable2 = $champ2, ... WHERE IdentifiantLigne = Identifiant"
IdentifiantLigne est en fait la clé unique qui te permet d'identifier la ligne de ta Table à modifier. (Il faudra par exemple que tu aies cette valeur stockée dans ton tableau)
PS: Je t'ai donné la requête sans me soucier des guillemets...
[8)]Zoso
|
|
mardi 23 février 2010 à 13:40:12 |
Re : Modifier plusieurs champs d'un tableau en même temps

IchabOd69
|
OK j'ai compris. merci.
Dernière question :
effectivement j'ai bien un index pour chaque ligne, mais est-ce que ça suffit de mettre juste ça : Code PHP : WHERE IdentifiantLigne = Identifiant ou faut-il précédemment faire mention de cet identifiant dans la requête ? (l'initialiser ou autre chose)
merci pour ton aide
|
|
mardi 23 février 2010 à 14:00:01 |
Re : Modifier plusieurs champs d'un tableau en même temps

jimmypage64
|
En fait il faut que tu mette :
WHERE IdentifiantLigne = $Identifiant
$Identifiant étant l'Id de la ligne que tu as récupéré dans la base en initialisant ton tableau.
[8)]Zoso
|
|
mardi 23 février 2010 à 23:11:24 |
Re : Modifier plusieurs champs d'un tableau en même temps

IchabOd69
|
Re-
Bon j'ai une erreur, j'ai trituré et essayé de comprendre mais que dalle.
voilà le code:
Code PHP : $tableau1 = array ('index', 'date_operation', 'montant', 'origine', 'numero', 'libelle_debit', 'libelle_credit', 'Categorie', 'paiement', 'rappro');
$var = 'tableau1';
$nb_elements = count (${$var});
for ($i=0; $i <= $nb_elements; $i++) {
$index=$_POST['index'];
$date_operation=$_POST['date_operation'];
$montant=$_POST['montant'];
$origine=$_POST['origine'];
$numero=$_POST['numero'];
$libelle_debit=$_POST['libelle_debit'];
$libelle_credit=$_POST['libelle_credit'];
$Categorie=$_POST['Categorie'];
$paiement=$_POST['paiement'];
$rappro=$_POST['rappro'];
$sql1 = "UPDATE perso_comptes SET date_operation= '$date_operation' , montant= '$montant' , origine= '$origine' , numero= '$numero' , libelle_debit= '$libelle_debit' , libelle_credit= '$libelle_credit' , Categorie= '$Categorie' , paiement= '$paiement' , rappro= '$rappro' WHERE index= $index";
$var1 = mysql_query($sql1) or die('Erreur SQL !<br>'.$sql1.'<br>'.mysql_error());
}
header('location: ./index.php');
et voilà l'erreur :
Erreur SQL !
UPDATE perso_comptes SET date_operation= '2010-02-17' , montant= '-1,8' , origine= 'Carte' , numero= '' , libelle_debit= ' CB REGIE PERIF.NORD 15/02/10 ' , libelle_credit= '' , Categorie= '' , paiement= '0' , rappro= '1' WHERE index= 163
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'index= 163' at line 1
Je précise que le nombre d'enregistrement aujourd'hui est bien de 163. Il a l'air de bloquer sur la dernière ligne, je ne sais pas pourquoi.
une idée?
|
|
mercredi 24 février 2010 à 08:33:30 |
Re : Modifier plusieurs champs d'un tableau en même temps

kohntark
|
Salut,
Personnellement je n'ai rien compris à ta boucle. A quoi sert elle ?
A première vue à rien puisqu'elle ne fera que mettre à jour la même ligne 10 fois.
Si j'ai bien compris tu souhaites mettre à jour plusieurs lignes de ta base à partir d'un formulaire. Est ce bien cela ?
Si oui il faut boucler sur les lignes et non sur les champs.
Commence donc par mettre un print_r($_POST) tout en haut de ta page et informe nous du résultat. Montre également comment tu construis ton tableau HTML.
Par ailleurs pense à utiliser systématiquement mysql_real_escape_string() sur les données externes.
Cordialement,
Kohntark -
|
|
dimanche 28 février 2010 à 13:29:24 |
Re : Modifier plusieurs champs d'un tableau en même temps

IchabOd69
|
bonjour,
Malgré plusieurs essais je n'y arrive pas.
Mon tableau html est le suivant :
Code PHP : <?php
echo '<FORM method="post" action="modif.php">';
echo '<table border=\'1\' align=\'center\'>';
echo ' <tr border=\'1\'>';
echo ' <td><center>Index</center></td><td><center>Date opération</center></td><td><center>Montant</center></td><td><center>Origine</center></td><td><center>N°</center></td><td><center>Libellé débit</center></td><td><center>Libellé crédit</center></td><td><center>Catégorie</center></td><td><center>Payé</center></td><td><center>Rappro?</center></td>';
echo ' </tr>';
while( $comptes = mysql_fetch_array( $requete ) )
{
echo '<tr><td><center><INPUT type=text name="index" value="'.$comptes['index'].'" size="4"></center></td><td><center><INPUT type=text name="date_operation" value="'.$comptes['date_operation'].'" size="12"></center></td><td><center><INPUT type=text name="montant" value="'.$comptes['montant'].'" size="10"></center></td><td><center><INPUT type=text name="origine" value="'.$comptes['origine'].'" size="11"></center></td><td><center><INPUT type=text name="numero" value="'.$comptes['numero'].'" size="10"></center></td><td><center><INPUT type=text name="libelle_debit" value="'.$comptes['libelle_debit'].'" size="50"></center></td><td><center><INPUT type=text name="libelle_credit" value="'.$comptes['libelle_credit'].'" size="50"></center></td><td><center><INPUT type=text name="categorie" value="'.$comptes['categorie'].'" size="20"></center></td><td><center><INPUT type=text name="paiement" value="'.$comptes['paiement'].'" size="5"></center></td><td><center><INPUT type=text name="rappro" value="'.$comptes['rappro'].'" size="5"></center></td></tr>';
}
echo '<tr><td><INPUT TYPE="SUBMIT" VALUE="Modifier"></td></tr>';
echo '</table>';
echo '</form>';
?>
ma page modif.php est la suivante :
Code PHP : <?php
print_r($_POST);
include("./include/connect.php");
include("./include/functions.php");
$index=$_POST['index'];
$date_operation=$_POST['date_operation'];
$montant=$_POST['montant'];
$origine=$_POST['origine'];
$numero=$_POST['numero'];
$libelle_debit=$_POST['libelle_debit'];
$libelle_credit=$_POST['libelle_credit'];
$Categorie=$_POST['Categorie'];
$paiement=$_POST['paiement'];
$rappro=$_POST['rappro'];
$tableau1 = array ('index', 'date_operation', 'montant', 'origine', 'numero', 'libelle_debit', 'libelle_credit', 'Categorie', 'paiement', 'rappro');
$var = 'tableau1';
$nb_elements = count (${$var});
for ($i=0; $i <= $nb_elements; $i++) {
$sql1 = "UPDATE perso_comptes SET date_operation='$date_operation' , montant= '$montant' , origine= '$origine' , numero= '$numero' , libelle_debit= '$libelle_debit' , libelle_credit= '$libelle_credit' , Categorie= '$Categorie' , paiement= '$paiement' , rappro= '$rappro' WHERE index= $index";
$var1 = mysql_query($sql1) or die('Erreur SQL !<br>'.$sql1.'<br>'.mysql_error());
}
//header('location: ./index.php');
?>
et au final j'ai toujours ce message :
Array ( [index] => 163 [date_operation] => 2010-02-17 [montant] => -1,8 [origine] => Carte [numero] => [libelle_debit] => CB REGIE PERIF.NORD 15/02/10 [libelle_credit] => [categorie] => [paiement] => 0 [rappro] => 1 ) Erreur SQL !
UPDATE perso_comptes SET date_operation='2010-02-17' , montant= '-1,8' , origine= 'Carte' , numero= '' , libelle_debit= ' CB REGIE PERIF.NORD 15/02/10 ' , libelle_credit= '' , Categorie= '' , paiement= '0' , rappro= '1' WHERE index= 163
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'index= 163' at line 1
Si quelqu'un a le temps de regarder 5mn, ça m'arrangerait et ça me ferait comprendre...
Merci
|
|
dimanche 28 février 2010 à 15:42:48 |
Re : Modifier plusieurs champs d'un tableau en même temps

kohntark
|
Par ailleurs pense à utiliser systématiquement mysql_real_escape_string() sur les données externes.
=> Pourquoi ne tiens tu pas compte de cette remarque ?
=> Re : A quoi sert elle ?
Si oui il faut boucler sur les lignes et non sur les champs.
=> Pourquoi ne tiens tu pas compte de cette remarque ?
Attention, index est un mot réservé mySQL, tu devrais renommer ce champ.
Kohntark -
|
|
dimanche 28 février 2010 à 16:35:30 |
Re : Modifier plusieurs champs d'un tableau en même temps

IchabOd69
|
1/ Parce que je n'ai pas eu le temps de chercher de manière approfondie, et que les premiers éléments que j'ai réussi à comprendre de ça étaient pour protéger d'une injection SQL ?
Si c'est bien le cas, j'ai déjà protégé par htaccess le dossier général.
2/ Je souhaiterais, comme expliqué plus haut, mettre à jour plusieurs champs d'un tableau en même temps (en gros je modifie la catégorie des paiements pour pouvoir faire des stats par la suite)
3/ Parce que je ne l'ai pas comprise. Du moins j'ai supposé la comprendre, c'est pour ça que j'ai sorti les $_POST de la boucle, mais ça ne marche pas plus.
4/ C'est le nom du champ d'incrémentation dans la base. Ce n'est pas le but, de l'appeler index justement?
|
|
Cette discussion est classée dans : php, tableau, temps, modifier, champs
Répondre à ce message
Sujets en rapport avec ce message
comment modifier des champs en php [ par medhacen ]
slt ts,je suis debutant en php, je veux modifier quelques champs ds une table de ma base. mais je n'arrive pa à realiser cette tâche.malgré le code n
PHP, formulaire et innerHTML [ par ExeQTd ]
Bonjour à tous,Je suis actuellement confronté à un petit souci technique. Autant le dire tout de suite, je suis débutant dans le monde du web 2.0 et j
Afficher/Modifier PHP/MySQL [ par ljuboja78 ]
Bonjour J'ai une BDD deejayfloo, avec une table 'news' est les champs jour, jour2, mois, annee, news.Je souhaiterais afficher un tableau avec mes cham
extraire à partir un tableau [ par hanen8989 ]
bonjour, je suis une debutante en php ,j'ai un probleme. je veux créer un tableau dans une page php avec la balise ,je veux récupérer les données de
tableau dynamique [ par adlis ]
bonjour à tous je suis nouveau sur le forum donc excusez moi si j'ai mal poster mon message ;)bon voilà je suis pas très fort en php j'ai tout de même
le pot le plus long php [ par fournier anthony ]
Bonjour à tous, Voila, après une bonne douzaine d'heure d'acharnement et de triturage intellectuel, je n'arrive pas à écrire un algorithme qui trouve
Tableau PHP MySQL [ par titoutoufou1 ]
Bonjour tout le monde, Petit probleme avec mon tableau PHP, il me manque un enregistrement et un seul! J'ai 4 enregistrements dans ma bdd, mais seul
php [ par khoubaibma ]
comment faire une jointure entre plus de deux tables?je veut supprimer le contenu d'un champs qui est un clé primaire dans le premier table et étrangé
Transmettre un tableau javascript à Php [ par CODE MAN ]
bonjour à tous,j'ai une fonction javascript qui retourne les cordonnées x et y de mes div sur une page donnée. ma fonction marche très bien sauf que a
Impression page php [ par Uebueb ]
Bonjour,J'aimerais imprimer des pages php qui contiennent des grands tableau html.Je n'arrive pas à avoir le tout sur plusieurs pages, j'ai bien le d
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|