IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Entrée en doublon dans une table


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Points : 3
    Points
    3
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ;

  2. #2
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    Quand tu fais cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("INSERT INTO paca_badge (numero,departement,commentaire)") or die(mysql_error());
    Bonne chance

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    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

  4. #4
    Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Points : 3
    Points
    3
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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>

Discussions similaires

  1. supprimer les doublons dans une table
    Par mavean dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 26/06/2019, 13h26
  2. Comparaison entre deux dates dans une table
    Par Biskot75 dans le forum Access
    Réponses: 6
    Dernier message: 19/09/2006, 11h16
  3. Suppression de doublons dans une table partionnée
    Par ludmillaj dans le forum Oracle
    Réponses: 10
    Dernier message: 27/12/2005, 14h34
  4. Eliminer des Doublon dans une Table
    Par Soulama dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 03/02/2005, 14h27
  5. [access]doublons dans une table en access !
    Par hackerandco dans le forum Bases de données
    Réponses: 6
    Dernier message: 14/06/2004, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo