Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 07/12/2010, 18h30   #1
Invité de passage
 
Inscription : octobre 2010
Messages : 10
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 10
Points : 0
Points : 0
Par défaut Probleme de boucle

je cherche à updater des nom de technicien selon le numero de carte via un tableau, mais je me retrouve avec la liste complete des mes carte mise à jour,



comment peut on faire pour la mise à jour ne soit effective uniquement pour une carte unique.

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
// On commence par récupérer les champs
if(isset($_POST['num']))      $num=$_POST['num'];
else      $num="num";
 
if(isset($_POST['nom_tech']))      $nom_tech=$_POST['nom_tech'];
else      $nom_tech="";
 
 
// On vérifie si les champs sont vides
if(empty($nom_tech))
    {
    echo '<font color="red">Attention, aucun champs ne peut rester vide !</font>';
    }
 
// Aucun champ n'est vide, on peut enregistrer dans la table
else     
    {
       // connexion à la base
$db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
// sélection de la base  
 
    mysql_select_db('cartes',$db)  or die('Erreur de selection '.mysql_error());
 
	// on regarde si la carte existe déjà
    $sql = "SELECT id FROM maj ";
    $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
 
    // on compte le nombre de résultats
    $res = mysql_num_rows($req);
 
 
 
    // on écrit la requête sql
    $sql = "UPDATE maj SET nom_tech='$nom_tech' where num=$num";
 
 
 
    // 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
    } 
 
?> 
<?php
// information pour la connection à le DB carte
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'cartes';
 
// connection à la DB badge_list
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
 
 
// requête SQL qui compte le nombre total d'enregistrements dans la table et qui
//récupère tous les enregistrements
$select = 'SELECT num, nom_tech FROM maj';
 
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
 
 
 
 
// si on a récupéré un résultat on l'affiche.
 
 
    // début du tableau
	echo '<br />'."\n";
	echo '<br />'."\n";
	echo "table maj";
    echo '<table bgcolor="#FFFFFF">'."\n";
        // première ligne on affiche les titres 
        echo '<tr>';
		echo '<td bgcolor="#669999"><b><u></u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Numéro carte</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>technicien</u></b></td>';
		echo '<td bgcolor="#669999"><b><u></u></b></td>';
        echo '</tr>'."\n";
    // lecture et affichage des résultats sur 4 colonnes, 1 résultat par ligne.    
    while($row = mysql_fetch_array($result)) {
	    echo '<tr>';
		echo '<td bgcolor="#CCCCCC"></td>';
        echo '<td bgcolor="#CCCCCC">'.$row['num'].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row['nom_tech'].'</td>';
		echo '<td bgcolor="#CCCCCC"><form method="POST" action="tech.php"><input type="text" name="nom_tech" size="20" value="technicien" maxlength="35"><input type="submit" value="Update" name="envoyer"></form></td>';
		echo '<td bgcolor="#CCCCCC"></td>';
		}
   		echo '</tr>'."\n";
 
    echo '</table>'."\n";
 
    // fin du tableau.
 
 
 
// on libère le résultat
mysql_free_result($result);
mysql_close();  // on ferme la connexion
 
?>
<?php echo "<br />" ?>
<?php echo "<br />" ?>
<hr />
 
 
</html>
vince4sx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 19h31   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Il faut que ton formulaire renvoit, dans un champ hidden par exemple, l'id de la ligne a mettre à jour.
Tu as bien prévu un $num dans ta requête mais il ne correspond a rien.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2010, 23h54   #3
Membre à l'essai
 
Inscription : mars 2008
Messages : 89
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 89
Points : 23
Points : 23
Il faut en effet ajoute pour chaque Bouton de ton tableau un champs caché contenant le Numéro de carte du technicien.

Ensuite tu fais l'update via ce Numéro.
boby15000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 11h26   #4
Membre régulier
 
Laurent S.
Inscription : novembre 2010
Messages : 71
Détails du profil
Informations personnelles :
Nom : Laurent S.
Âge : 25
Localisation : France

Informations forums :
Inscription : novembre 2010
Messages : 71
Points : 77
Points : 77
Sinon tu pourrais aussi utiliser un script Ajax qui permettrait ceci :

Nous affichons classiquement le formulaire mais avec un seul bouton update, ou un bouton commun.

Lors de la modification d'un des champs input, nous stockons dans un tableau l'identifiant de l'input modifié.

Ainsi une fois que tout tes inputs ont été modifiés, tu envoi en paramètre le tableau stocké en même temps que les champs input.

Ensuite le travail est fait sur le tableau généré par ajax : toutes les valeurs dedans sont a récupérer et a mettre a jour.

Ainsi cela t'éviterait un cas particulier :

l'utilisateur modifie 2 inputs, mais lors du clic sur update cela n'en met qu'un a jour sur 2.

Bonne continuation
larffas68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 11h50   #5
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
sinon autre variante mettre dans le name de chaque boutton l'id de la carte et tu boucle en reception sur tout les cartes et tu test sur quel boutton

if(isset($_POST['bt_mon ']))
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 13h52   #6
Membre actif
 
Inscription : octobre 2003
Messages : 211
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 211
Points : 153
Points : 153
Envoyer un message via MSN à nabab
Citation:
Code :
1
2
3
4
<?php
// On commence par récupérer les champs
if(isset($_POST['num']))      $num=$_POST['num'];
else      $num="num";
Si num est ton numéro de carte, comment peux-tu lui l'accepter et lui donner la valeur "num" si il n'est pas renseigné??

Citation:
Code :
1
2
3
4
5
6
	// on regarde si la carte existe déjà
    $sql = "SELECT id FROM maj ";
    $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
 
    // on compte le nombre de résultats
    $res = mysql_num_rows($req);
Heu... Non, ici tu ne regardes rien, tu sélectionnes juste tous les id de ta table, et compte le nombre de résultats - et tu ne te ressers d'ailleurs pas de $res.

Comme dit précédemment, il te faut rajouter a chacun de tes formulaires un champ caché:
Citation:
<input type="hidden" name="num" value="<?php echo $row['num']; ?>" />
nabab 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 20h22.


 
 
 
 
Partenaires

Hébergement Web