Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Je n'arrive pas à mettre à jour ma table MYSQ

beegees, le mercredi 15 octobre 2008 à 20:34:00
Bonjour tout le monde,

J'essaie de mettre une table MYSQL nommée "etudiants" à jour.

J'obtiens bien les valeurs de la table dans des zones de texte.

Je peux alors modifier les valeurs mais lorsque je clic sur le bouton, la table ne se met pas à jour.

Le nombre de ligne est bien envoyé à l'autre page (MettreAJour qui est l'action du formulaire).

Je vous laisse mon code, ça sera je pense, un peu plus parlant :

[code]<?php

$compteur = 0;


# script qui permet de créer des zones de texte à la volée et d'afficher le nom des champs de la table
# variable qui contient le nom de ma base de données.
$dbname = 'deliberations';


$link = mysql_connect('localhost', 'root', 'mdp');
if(!$link)
{
echo 'Impossible de se connecter à MySQL';
exit;
}

// Rendre la base de données deliberation, la base courante
$db_selected = mysql_select_db($dbname, $link);
if (!$db_selected)
{
die ('Impossible de sélectionner la base de données : ' . mysql_error());
}

/*echo '<form action="MettreAJour.php?NbLignes='.$compteur.'" method="post" name="frmSaisie" id="frmSaisie">';
echo '<table border="1">';
$query = mysql_query("SELECT * FROM .$_POST[select_Nom_Tables] LIMIT 20") or die (mysql_error());*/

echo '<table border="1">';
$query = mysql_query("SELECT * FROM .$_POST[select_Nom_Tables] LIMIT 20") or die (mysql_error());
echo '<form action="MettreAJour.php?NbLignes='.mysql_num_rows($query).'" method="post" name="frmSaisie" id="frmSaisie">';



echo '<tr>';
for($i=0;$i<mysql_num_fields($query);$i++)
{
echo '<th>'.mysql_field_name($query,$i).'</th>';
}
echo '</tr>';
while($row = mysql_fetch_array($query,MYSQL_NUM))
{
$compteur+=1;
echo 'compteur -->'.$compteur;
echo '<tr>';
foreach($row as $value)
{

echo '<td> <textarea>'.$value.'</textarea> <input name="'.mysql_field_name.$compteur.'" type="hidden" id="txtMatricule'.$compteur.'"value=""></td>';
#echo '<td> <textarea>'.$value.'</textarea> <input name="'.mysql_field_name.$compteur.'" type="text" id="txtMatricule"'.$compteur.'value="'.mysql_field_name.$compteur.'"></td>';
# }


}
echo '</tr>';
}
echo '<input type="submit" name="Submit" value="Mettre la table à jour" />' ;

echo '</p></form>';
echo '</table>';

?>

/code

et voic le code de "MettreAJour.php" qui contient le code SQL qui devrait mettre à jour la table :

[code]

<?php


# script qui permet de créer des zones de texte à la volée et d'afficher le nom des champs de la table
# variable qui contient le nom de ma base de données.
$dbname = 'deliberations';
$compteur = 0;


$link = mysql_connect('localhost', 'root', 'mdp');
if(!$link)
{
echo 'Impossible de se connecter à MySQL';
exit;
}

// Rendre la base de données deliberation, la base courante
$db_selected = mysql_select_db($dbname, $link);
if (!$db_selected)
{
die ('Impossible de sélectionner la base de données : ' . mysql_error());
}

$NbLignes = $_GET["NbLignes"];

echo '&NbLignes vaut '.$NbLignes;

for ($i = 0; $i < $NbLignes;$i++)
{
$Matricule = $_REQUEST["txtMatricule".i];
$Nom = $_REQUEST["txtNom".i];
$Prenom = $_REQUEST["txtPrenom".i];
$DateDeNaissance = $_REQUEST["txtDateDeNaissance".i];
$Email = $_REQUEST["txtEmail".i];
$Photo = $_REQUEST["txtPhoto".i];



$txtSQL = "" ;
$txtSQL = "update [etudiants] set [Nom_Et] = '".$Nom ."' where [Matricule_Et] = '".$Matricule."'" ;



}


?>

/code

Merci d'avance pour votre aide.

beegees
Configuration: Windows XP
Firefox 3.0.3
Répondre à beegees  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
cmoi, le mercredi 15 octobre 2008 à 20:49:41
$txtSQL = "update [etudiants] set [Nom_Et] = '".$Nom ."' where [Matricule_Et] = '".$Matricule."'" ;

déjà pourquoi tu as des [ ] au niveau des tes noms de table ?

ensuite je vois pas de :
mysql_query($txtSQL);
donc il me semble que t'envoie pas la commande a mysql ;)

après je suis pas non plus un spécialiste :)
Répondre à cmoi

2


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
Alain_42, le mercredi 15 octobre 2008 à 20:55:08
Bonsoir,

à la place de $_REQUEST mets $_POST

et $txtSQL = "update [etudiants] set [Nom_Et] = '".$Nom ."' where [Matricule_Et] = '".$Matricule."'" ;

$txtSQL = "UPDATE etudiants SET Nom_Et = '".$Nom ."' WHERE Matricule_Et = '".$Matricule."'" ;


mysql_query($txtSQL);

car il faut qd même à un moment lancer la requette
Répondre à Alain_42

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
beegees, le dimanche 19 octobre 2008 à 13:35:59
Bonjour Alain,

Merci pour ta réponse et désolé pour le retard de ma réaction mais j'étais occupé sur autre chose.

Malheureusement, ça ne fonctionne pas encore.

Voici le code de mon premier fichier :

[code]echo '<table border="1">';
$table = $_POST['select_Nom_Tables'];
$query = mysql_query("SELECT * FROM $table LIMIT 20");
echo '<form action="MettreAJour.php?NbLignes='.mysql_num_rows($query).'" method="post" name="frmSaisie" id="frmSaisie">';



echo '<tr>';
for($i=0;$i<mysql_num_fields($query);$i++)
{
echo '<th>'.mysql_field_name($query,$i).'</th>';
}
echo '</tr>';
while($row = mysql_fetch_array($query,MYSQL_NUM))
{
$compteur+=1;
echo 'compteur -->'.$compteur;
echo '<tr>';
foreach($row as $value)
{

echo '<td> <textarea>'.$value.'</textarea> <input name="'.mysql_field_name.$compteur.'" type="hidden" id="txtMatricule'.$compteur.'"value=""></td>';
echo 'mysql_field_name vaut'.mysql_field_name($query,i);
#echo '<td> <textarea>'.$value.'</textarea> <input name="'.mysql_field_name.$compteur.'" type="text" id="txtMatricule"'.$compteur.'value="'.mysql_field_name.$compteur.'"></td>';
# }


}
echo '</tr>';
}
echo '<input type="submit" name="Submit" value="Mettre la table à jour" />' ;

echo '</p></form>';
echo '</table>';/code

et voici le code de mon second fichier :

[code]<?php


# script qui permet de créer des zones de texte à la volée et d'afficher le nom des champs de la table
# variable qui contient le nom de ma base de données.
$dbname = 'deliberations';
$compteur = 0;


$link = mysql_connect('localhost', 'root', 'mdp');
if(!$link)
{
echo 'Impossible de se connecter à MySQL';
exit;
}

// Rendre la base de données deliberation, la base courante
$db_selected = mysql_select_db($dbname, $link);
if (!$db_selected)
{
die ('Impossible de sélectionner la base de données : ' . mysql_error());
}

$NbLignes = $_GET["NbLignes"];

echo '&NbLignes vaut '.$NbLignes;

for ($i = 0; $i < $NbLignes;$i++)
{
$Matricule = $_POST[mysql_field_name].[i];
$Nom = $_POST["txtNom".i];
$Prenom = $_POST["txtPrenom".i];
$DateDeNaissance = $_POST["txtDateDeNaissance".i];
$Email = $_POST["txtEmail".i];
$Photo = $_POST["txtPhoto".i];



$txtSQL = "" ;
$txtSQL = "UPDATE etudiants SET Nom_Et = '".$Nom ."' WHERE Matricule_Et = '".$Matricule."'" ;



mysql_query($txtSQL);



}


?>

/code

Merci d'avance pour l'aide.

beegees
Répondre à beegees

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Alain_42, le dimanche 19 octobre 2008 à 20:51:46
Bonsoir,

dans cette partie :

while($row = mysql_fetch_array($query,MYSQL_NUM))
{
$compteur+=1;
echo 'compteur -->'.$compteur;
echo '<tr>';
foreach($row as $value)
{

echo '<td> <textarea>'.$value.'</textarea>
<input name="'.mysql_field_name.$compteur.'" type="hidden" id="txtMatricule'.$compteur.'"value=""></td>';


je vois deux erreurs:

tu fais $compteur+=1;

et ou initialises tu la variable $compteur ?

donc avant la boucle while mets:
$compteur=0;


ensuite mysql_field_name.$compteur mets

mysql_field_name($compteur)
Répondre à Alain_42

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Alain_42, le dimanche 19 octobre 2008 à 22:13:23
Plus

erreur de principe, tu mets un textarea sans name= et dans lequel tu mets $value et tu mets un <input type =hidden avec un name mais sans valeur

ça ne peut pas poster qq chose

mets:

foreach($row as $value)
{

echo '<td>  <input name="'.mysql_field_name.$compteur.'" type="text" id="txtMatricule'.$compteur.'"value="'.$value.'"></td>';
</td>';
 }


ensuite $Matricule = $_POST[mysql_field_name].[i];

$Matricule = $_POST['mysql_field_name'.$i];


$Nom = $_POST["txtNom".i];
$Prenom = $_POST["txtPrenom".i];
$DateDeNaissance = $_POST["txtDateDeNaissance".i];
$Email = $_POST["txtEmail".i];
$Photo = $_POST["txtPhoto".i];


et il te manque tous les $ devant i

$Nom = $_POST["txtNom".$i];
$Prenom = $_POST["txtPrenom".i];
$DateDeNaissance = $_POST["txtDateDeNaissance".$i];
$Email = $_POST["txtEmail".$i];
$Photo = $_POST["txtPhoto".$i]; 
Répondre à Alain_42

6


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
beegees, le lundi 20 octobre 2008 à 07:47:18
Bonjour Alain,

Un super GRAND merci pour ta réponse.

Pour ce qui est du compteur, je le déclarais en début de code, code que je n'avais pas copié dans ce message.


Pour ce qui est du for each :

J'ai fait ceci :

foreach($row as $value)
{

	echo '<td>  <input name="'.mysql_field_name.$compteur.'" type="text" id="txtMatricule'.$compteur.'"value="'.$value.'" <input name="'.mysql_field_name.$compteur.'" 					type="hidden" id="'.mysql_field_name.$compteur.'" "value="'.$value.'"></td>';

 }


le problème avec le mysql_field_name (enfin je pense, je peux me tromper) c'est qu'il n'affiche pas le nom des champs une fois la page générée :

Voici une partie de mon code HTML lorsque la page est générée :

<input name="mysql_field_name1" type="hidden" id="mysql_field_name1" "value="Ajourné"></td></tr><input type="submit" name="Submit" value="Mettre la table à jour" /></p></form></table>


On peut voir qu'il y'a bien indiqué :

name="mysql_field_name1"


Ce qui est pour moi (grand débutant) un peu déroutant car je ne sais pas quel nom il a donné à mon widget.

J'ai donc utilisé ceci :

foreach($row as $NomCol => $Valeur)
        {
			echo '<td> <textarea>'.$Valeur.'</textarea> <input name="'.$NomCol.$compteur.'" type="hidden" id="'.$NomCol.$compteur.'" "value="'.$Valeur.'"></td>';
			
	
		}


Il m'indique le nom du champ dans le code HTML :

<input name="Code_Decision1" type="hidden" id="Code_Decision1" "value="1"></td><td> <textarea>Ajourné</textarea> <input name="Nom_Decision1" type="hidden" id="Nom_Decision1" "value="Ajourné"></td></tr><input type="submit" name="Submit" value="Mettre la table à jour" /></p></form></table>


Ce qui est déjà un peu plus partlant.

Maintenant, il faut que je récupère ces valerus, ça c'est un autre problème.

Si tu as une idée, n'hésite pas.

Encore merci pour ton aide.

beegees
Répondre à beegees

7


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
 Alain_42, le dimanche 26 octobre 2008 à 21:22:44
Bonsoir,

effectivement ta partie de nouveau code semble mieux fonctionner pour generer ton HTML mais il y a une petite erreur
foreach($row as $NomCol => $Valeur)
{
echo '<td> <textarea>'.$Valeur.'</textarea> <input name="'.$NomCol.$compteur.'" type="hidden" id="'.$NomCol.$compteur.'" "value="'.$Valeur.'"></td>';


}


tu as une " en trop devant value

regarde bien le code HTML generé:
... id="Code_Decision1" "value="1" .....

donc il faut:

foreach($row as $NomCol => $Valeur)
        {
			echo '<td> <textarea>'.$Valeur.'</textarea> <input name="'.$NomCol.$compteur.'" type="hidden" id="'.$NomCol.$compteur.'" value="'.$Valeur.'"></td>';
			
	
		}


ensuite pourquoi mets tu un textarea ? en plus de l'input ?
Répondre à Alain_42

Résultats pour Je n'arrive pas à mettre à jour ma table MYSQ

Pb!Remplir liste déroulante avec Tables MySql (Résolu) Bonjour, Je cherche depuis un petit moment le moyen de remplir des infos ,se trouvant dans mes tables MySql, dans une liste déroulante. Voici mon code (qui contient surement beaucoup d'erreurs, vu que je ne sais pas par où commencer...) : www.commentcamarche.net/forum/affich-5635919-pb-remplir-liste-deroulante-avec-tables-mysql
Utiliser une table Mysql d'un forum (Résolu) Bonjour,Je voudrait savoir si je pourrait me servir de la table mysql de mon forum en .purforum.com afin de l'utiliser sur mon site Merci www.commentcamarche.net/forum/affich-6546772-utiliser-une-table-mysql-d-un-forum
MySQL Ajouter une table à une autre table (Résolu) Bonjour tout le monde... après recherches infructuseuses, je viens demander aide... Je cherche à copier une sélection d'une table MySQL dans une autre table qui n'est pas vide avec du code PHP. $query = "INSERT INTO table_dest SELECT * FROM... www.commentcamarche.net/forum/affich-2398798-mysql-ajouter-une-table-a-une-autre-table

Résultats pour Je n'arrive pas à mettre à jour ma table MYSQ

MySQL - Update avec jointureSi vous avez deux tables possédant une clé commune (dans le cas ci-dessous il s'agit de la clé primaire "id"), il est possible de mettre à jour un champ d'une des deux tables (update_table) grâce aux données de la seconde (reference_table) à l'aide... www.commentcamarche.net/faq/sujet-10426-mysql-update-avec-jointure
Remplir une ligne ou une colonne avec une suite logiqueVous devez créer un tableau avec le nom des mois dans une ligne ou une colonne : - vous inscrivez au moins 2 mois consécutifs : par exemple, janvier en B4 et février en B5 - vous pointez sur B4, puis en maintenant shift enfoncé, vous pointez B5. ... www.commentcamarche.net/faq/sujet-8654-remplir-une-ligne-ou-une-colonne-avec-une-suite-logique
Import / export de données IngresIngres permet d'exporter les données d'une installation Ingres vers une autre (quels que soient l'OS cible ou source) par les commandes : unloaddb copydb Ce qui change entre ces 2 commandes c'est leur périmètre : unloaddb concerne tous... www.commentcamarche.net/faq/sujet-5470-import-export-de-donnees-ingres

Résultats pour Je n'arrive pas à mettre à jour ma table MYSQ

[PHP/MySQL] Faire la moyenne d'un colonne ? (Résolu)Salut à tous ! J'ai un problème pour faire la moyenne d'un colonne d'une table MySQL en PHP. Je ne sais pas trop comment utiliser la fonction AVG(). Quelqu'un pourrait-il m'aider SVP ? A+ Nico www.commentcamarche.net/forum/affich-1345371-php-mysql-faire-la-moyenne-d-un-colonne
Récupération d'un select multiple (Résolu)Bonjour, J'ai 3 tables Mysql : une table "liste des cours", une table "liste des instructeurs en charge des cours", et une table pour faire la relation (chaque cours est associé à plusieurs instructeurs). Pour la mettre à jour mes tables,... www.commentcamarche.net/forum/affich-8640725-recuperation-d-un-select-multiple

Résultats pour Je n'arrive pas à mettre à jour ma table MYSQ

SQL - Mise à jour d'informationsLe SQL permet la modification d'une table par un utilisateur (pour peu qu'il ait les droits suffisants...). La modification d'une table consiste à: ajouter des tuples modifier des tuples existants ou bien supprimer des tuples Insertion de... www.commentcamarche.net/contents/sql/sqlmaj.php3
Importer et exporter des données sous MySQLImportation et exportation Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant... www.commentcamarche.net/contents/mysql/mysqlimport.php3
Le routage sur InternetLes routeurs Les routeurs sont les dispositifs permettant de "choisir" le chemin que les datagrammes vont emprunter pour arriver à destination. Il s'agit de machines ayant plusieurs cartes réseau dont chacune est reliée à un réseau différent.... www.commentcamarche.net/contents/internet/routage.php3