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 27/09/2006, 14h34   #1
Invité régulier
 
Inscription : juin 2005
Messages : 164
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 164
Points : 8
Points : 8
Par défaut [Conception] Mettre a jour tout les champs d'un table lors d'un update

Bonjour, Je suis un peu ennuyé pour mettre a jour une table.
Dans ma page tri.php, j'affiche chaque PID en fonction de chaque nom , avec la possibilité de modifier le PID de chaque nom:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
echo '<form method="post" action="insert_tri.php">';
echo '<table width="505"  border="1">';
 
// on se connecte à MySQL
$db = mysql_connect('localhost', 'root', '');
 
// on sélectionne la base
mysql_select_db('phplistdb',$db);
 
// on crée la requête SQL
$sql = 'SELECT DISTINCT name,pid FROM phplist_listattr_marque';
 
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
    {
    // on affiche les informations de l'enregistrement en cours
 
    echo '<tr height="41"><td>Marque : '.$data['name'].'</td>';
	echo '<td>PID : <input type="text" name="pid" value="'. $data['pid'] . '" size="40"></td></tr>';
    }
	echo '</table>';
	echo '<br><br><input type=submit name="subscribe" value="Subscribe">';
	echo '</form>';
 
?>



dans insert_tri.php, j'aimerai recuperer tout les noms et PID, et les inserer dans la table. Il me dit que les infos sont bien ajoutées, mais rien de modifié dans la base.

insert_tri.php :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
// On commence par récupérer les champs
if(isset($_POST['name']))      $name=$_POST['name'];
else      $name="";
 
if(isset($_POST['pid']))      $pid=$_POST['pid'];
else      $pid="";
 
echo  'nom :'.$name.'<br><br>';
echo 'pid :'.$pid.'<br><br>' ;
 
 
// connexion à la base
$db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
// sélection de la base  
mysql_select_db('phplistdb',$db)  or die('Erreur de selection '.mysql_error());
 
    // on écrit la requête sql
    $sql = "UPDATE  phplist_listattr_marque SET pid ='$pid' WHERE name='$name' ";
 
    // on insère les informations du formulaire dans la table
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
    // on affiche le résultat pour le visiteur
    echo 'Vos infos on été ajoutées.';
 
    mysql_close();  // on ferme la connexion
 
?>

Quand je fais un UPDATE phplist_listattr_marque SET pid ='4' WHERE name='voiture' direct dans PhpMyAdmin par exemple, tout les champs voiture sont bien modifiés.
Voyez vous ce qui ne va pas dans mon code ? j'ai l'impression que l'ensemble des noms et PID ne sont pas passés a insert_tri.php, car dans le echo il maffiche juste PID = 1...

Auriez vous une idée ? Merci d'avance de votre aide.
metatron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 14h42   #2
Membre habitué
 
Avatar de Cyberbob002
 
Inscription : mai 2003
Messages : 140
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 140
Points : 130
Points : 130
fait un echo $sql; pour voir ce que ca donne
Cyberbob002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 14h49   #3
Membre éclairé
 
Avatar de nicoaix
 
Homme
Chef de projet MOA
Inscription : décembre 2004
Messages : 561
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 561
Points : 325
Points : 325
Dans tri.php je ne vois pas dans ton formulaire le champ 'name'. Or tu récupères cette variable dans ton autre fichier ($_POST['name']) et tu t'en sert comme condition dans ta requête (...WHERE name = '.$name.'
Est-ce normal? Peut-être n'as tu pas mis tout ton code?

Dans tri.php à un moment tu écris:
value="'. $data['pid'] . '"
Je pense que les espaces à coté des points sont en trop. Il vaudrait mieux écrire:
value="'.$data['pid'].'"
nicoaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 14h52   #4
Invité régulier
 
Inscription : juin 2005
Messages : 164
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 164
Points : 8
Points : 8
wep nico, je viens de modif, la pour info un echo $sql m'affiche bien :

Code :
1
2
3
4
5
nom :abc
pid :1
 
UPDATE phplist_listattr_marque SET pid ='1' WHERE name='abc' 
Vos infos on été ajoutées.
Voila et en fait je voudrai que cette mise a jour se fasse sur TOUT les noms de la table ? pourriez vous me dire quel type de code je dois inserer pour faire boucler (je pense) la recuperation des valeurs et la requete ? Merci d'avance de votre precieuse aide.
metatron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 15h04   #5
Membre éclairé
 
Avatar de nicoaix
 
Homme
Chef de projet MOA
Inscription : décembre 2004
Messages : 561
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 561
Points : 325
Points : 325
Y'a un truc que je saisi pas trop...Si tu fais un formulaire dans lequel tu entres la valeur à mettre à jour, tu ne peux pas mettre à jours toutes les lignes de ta table, à moins d'utiliser la même valeur pour toutes les lignes...
Et si inversement tu veux modifier chaque ligne en fonction d'un valeur saisie, tu es obligé de le faire ligne par ligne (à moins d'avoir l'info à insérée dans une autre table ou dans un fichier).
nicoaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 15h14   #6
Invité régulier
 
Inscription : juin 2005
Messages : 164
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 164
Points : 8
Points : 8
bien dans le code generé par le fichier php, j'ai ca :

Code :
1
2
3
<input type=hidden name="name" value="A.C.M"> 
A.C.M
<input type="text" name="pid" value="1" size="20">
qui se repete pour chaque nom. Si je modifie la valeur de plusieurs PID puis valide, il n'est pas possible de mettre a jour toutes les valeurs qui etaient presentes dans le form ?
metatron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2006, 15h29   #7
Membre régulier
 
Inscription : mai 2006
Messages : 60
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : mai 2006
Messages : 60
Points : 73
Points : 73
Envoyer un message via Skype™ à Tiois
Est-ce que tu peux modifier seulement un PID à la fois, ou tu fais un POST de plusieurs champs ?

Si tu peux seulement modifier un PID à la fois, tu dois fermer ton form pour chaque PID, si tu POST toute le form, et qu'il y a plusieurs input avec le nom "pid", et bien tu vas avoir un problème..

Je ne sais pas si tu comprends ce que je veux dire, ou peut-être que c'est moi qui comprend mal ton problème !
Tiois est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h29.


 
 
 
 
Partenaires

Hébergement Web