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 30/11/2010, 21h30   #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 Entrée en doublon dans une table

Je suis actuellement bloqué sur 2 problèmes auquel je ne trouve pas de solutions, elle doit surement être flagrante....
Étant débutant je ne connais pas tout les termes techniques alors j'ai mis un site d'exemple qui reproduit mon problème.

http://4sx.free.fr/badge

puis à droite "exploitation badge" choix "PACA"

Je souhaite lorsque je sélectionne un nom (via le menu déroulant) pour un numéro avoir le résultat dans la colonne "message", jusque la tout va bien sauf que celui ci me fait deux INSERT dans ma table au lieu de un.

Et mon deuxième problème plus important, je pense, se situe au niveau d'une condition que je ne sais pas inclure, ex: pour le Numéro 5678 je souhaite que dans la colonne message affiche uniquement les informations concernant cette référence, alors que pour le moment les deux référence affichent les mêmes mise à jour.

Si une âme charitable aurait une orientation à me donner, je suis preneur.

Le code de la page et les tables utilisées.
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
 
<body>
<?php
 
 
// on se connecte à MySQL
$db = mysql_connect('localhost', '4sx', 'xxxxx');
 
// on sélectionne la base
mysql_select_db('4sx',$db);
 
?>
<table width="125" border="2" cellpadding="0" cellspacing="0">
            <tr bgcolor="#0099FF">
			  <td width="23" bgcolor="#0099FF" class=tabhead><br>
              <b><?php echo 'Numéro'; ?></b></td>
                <td width="25" bgcolor="#0099FF" class=tabhead><br>
              <b><?php echo 'DEPT'; ?></b></td>
                <td width="26" bgcolor="#0099FF" class=tabhead><br>
              <b><?php echo 'Technicien'; ?></b></td>
			  <td width="351" bgcolor="#0099FF" class=tabhead><br>
              <b><?php echo 'Messages'; ?></b></td>
  </tr>
<?php
mysql_query("INSERT INTO paca_badge (numero,departement,commentaire)");      
$result = mysql_query("SELECT numero,departement,commentaire FROM paca_badge ORDER BY departement");
              while ($row = mysql_fetch_array($result)) {
                    echo "<tr valign='middle'>";
					echo "<td class='tabval'><b>".$row['numero']."</b>&nbsp;</td>";
                    echo "<td class='tabval'>".$row['departement']."&nbsp;</td>";
					echo "<td class='tabval'>".$sql = 'INSERT INTO paca_badge_prod VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['message']).'")';
					if(!empty($_POST['auteur'])){
						mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
						}
						echo "<form action='index.php' method='post'>";
						echo "<SELECT NAME='auteur' onChange='FocusObjet()'>";
						$req = mysql_query("SELECT auteur FROM paca_utilisateur ORDER BY auteur");
							while($donnee = mysql_fetch_array($req))
 
						echo "<OPTION VALUE='$donnee[auteur]'>$donnee[auteur] </option>";
 
						echo "</select>";
						echo "<textarea name='message' cols='31' rows='2'></textarea>";
						echo "<input name='go' type='submit' value='Valider'>";
						echo "</form>"; 
						echo "</td>";
					echo "<td class='tabval'>".$sql = 'SELECT auteur, date_signature, message FROM paca_badge_prod ORDER BY date_signature DESC';
						$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
						$nb_signature = mysql_num_rows($req);
						if ($nb_signature == 0) {
						echo 'Aucun mouvement.';
						}
						else {
						while ($data = mysql_fetch_array($req)) {
						sscanf($data['date_signature'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
						echo '<a href=mailto:' , htmlentities(trim($data['email'])) , '>' , htmlentities(trim($data['auteur'])) , '</a>';
						echo ' le ' , $jour , '/' , $mois , '/' , $annee , ' à ' , $heure , ':' , $minute , '<br />';
						echo nl2br(htmlentities(trim($data['message'])));
						echo '<br /><br />';
						}
						}
						// on libère l'espace mémoire alloué pour cette requête
						mysql_free_result ($req);
					echo "</td>";
                	echo "</tr>";
          }
// on ferme la connexion à mysql
mysql_close();
?>
</table>
</body>
</html>
et les tables de la base 4sx:
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
 
CREATE TABLE IF NOT EXISTS `paca_badge` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `numero` varchar(200) CHARACTER SET latin1 COLLATE latin1_general_ci DEFAULT NULL,
  `departement` varchar(200) CHARACTER SET latin1 COLLATE latin1_general_ci DEFAULT NULL,
  `commentaire` varchar(80) CHARACTER SET latin1 COLLATE latin1_general_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ;
 
 
CREATE TABLE IF NOT EXISTS `paca_badge_prod` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `auteur` varchar(50) NOT NULL,
  `date_signature` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `message` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
 
 
CREATE TABLE IF NOT EXISTS `paca_utilisateur` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `auteur` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL,
  `date_signature` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `telephone` varchar(50) NOT NULL,
  `localisation` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ;
vince4sx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 14h55   #2
Membre actif
 
Tobbi Filteau
Inscription : mai 2010
Messages : 176
Détails du profil
Informations personnelles :
Nom : Tobbi Filteau

Informations forums :
Inscription : mai 2010
Messages : 176
Points : 177
Points : 177
Quand tu fais cette ligne:

Code :
mysql_query("INSERT INTO paca_badge (numero,departement,commentaire)");
Tu ne lui donne aucune valeur à insérer dans la base de données. Normalement, un INSERT se construit:

Code :
mysql_query("INSERT INTO paca_badge (numero,departement,commentaire) VALUES ($valeur1, $valeur2, $valeur3)");
Au pire, si tu veux voir le message d'erreur afficher, tu ajoutes la clause "or die" à la fin de ta ligne:

Code :
mysql_query("INSERT INTO paca_badge (numero,departement,commentaire)") or die(mysql_error());
Bonne chance
osuwariboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 16h34   #3
Invité de passage
 
Inscription : octobre 2010
Messages : 10
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 10
Points : 0
Points : 0
autant pour moi, en effet ce code n'est pas correct, c'est un copier/coller abusif, ce code ne sert à rien dans ma page, à retirer.

Merci de ton attention
vince4sx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 17h00   #4
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 viens de tout recommencer en simplifiant au mieux, mais je ne sais comment arrêter la boucle lors du premier enregistrement.

Lorsque je souhaite affecter le badge "6776" à pierre

je me retrouve avec 3 enregistrement dans ma base


Et voici le code
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
<html>
<body>
<?php
// information pour la connexion à le DB carte
$host = 'localhost';
$user = 'xx';
$pass = 'xx';
$db = 'carte';
 
// connexion à 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 numero,departement FROM badge_list';
$sqle = 'SELECT auteur FROM badge_user ORDER BY auteur';
$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 '<table bgcolor="#FFFFFF">'."\n";
        // première ligne on affiche les titres 
        echo '<tr>';
        echo '<td bgcolor="#669999"><b><u>Numéro badge</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Département</u></b></td>';
		echo '<td bgcolor="#669999"><b><u>Technicien</u></b></td>';
		echo '<td bgcolor="#669999"><b><u>localisation</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">'.$row['numero'].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row['departement'].'</td>';
 
		$sql = 'INSERT INTO badge_prod VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['message']).'","'.$row['numero'].'")';
					if(!empty($_POST['auteur'])){
						mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
						}
 
		echo "<form action='carte_prod.php' method='post'>";
		echo '<td bgcolor="#CCCCCC">';
				echo "<SELECT NAME='auteur' onChange='FocusObjet()'>";
				$req = mysql_query($sqle) or die('Erreur SQL !<br>'.$sqle.'<br>'.mysql_error());
				while($data = mysql_fetch_assoc($req))
    			{
    			// on affiche les informations de l'enregistrement en cours
 				echo "<OPTION VALUE='$data[auteur]'>$data[auteur] </option>";
				}
				echo "</select>";
				echo "<input name='go' type='submit' value='Valider'>";
				echo '</form>';
		echo '</td>';
		echo '<td bgcolor="#CCCCCC">'.'</td>';
		}
   		echo '</tr>'."\n";
 
    echo '</table>'."\n";
	exit();
    // fin du tableau.
 
 
 
// on libère le résultat
mysql_free_result($result);
mysql_close();  // on ferme la connexion
 
?>
</body>
</html>
vince4sx 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 04h32.


 
 
 
 
Partenaires

Hébergement Web