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

Langage PHP Discussion :

Vérification de résultat MYSQL


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 21
    Points : 16
    Points
    16
    Par défaut Vérification de résultat MYSQL
    Bonjour à tous,

    étant obliger de me mettre au dev php pour ma société, j'ai une intérrogation.

    Voila je fais 2 requête SQL.
    • 1. tmp_ticket

    • 2. tickets


    La tbl tmp_ticket me sert à récupéré des données d'un formulaire de façon temporaire avant traitement. Une fois que le traitement est effectué, je dois injecter cette tbl dans la tbl définitif (tickets), mais avant d'introduire ces données de la tbl tmp_ticket, je dois vérifier que les data contenu dans celle ci n'existe pas dans la tbl tickets.

    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
     
    $res	=	mysql_query('select account_code, calling_number, debut_date, debut_heure FROM tmp_ticket');		
    while ($row = mysql_fetch_assoc($res)) 
    { 
    $contenuROW = $row['account_code'] . $row['calling_number'] . $row['debut_date'] . $row['debut_heure'];
     
    // on liste tout le contenu de la tbl TICKETS par rapport a la date
    $res_ticket	=	mysql_query('select id_trunksip, calling_number, debut_date, debut_heure FROM tickets WHERE id_trunksip = "'.$row["account_code"].'" AND debut_date = "'.$row["debut_date"].'"');
     
    while ($row2 = mysql_fetch_assoc($res_ticket)) 
    			{ 
    				$contenuROW2 = $row2['id_trunksip'] . $row2['calling_number'] . $row2['debut_date'] . $row2['debut_heure'];
    			}
    		}
    Donc voici le bout de code. Ce que j'aimerai faire, c'est que si la ligne de la tbl tmp_ticket est déjà dans la tbl tickets, alors elle ne s'insère pas dans la tbl tickets.

    Je connais les commandes d'insertion mysql, mais c'est surtout à la gestion des conditions a multiple result.

    je vous remercie par avance,

    JJroset

  2. #2
    Membre averti Avatar de Doopeijii
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 215
    Points : 323
    Points
    323
    Par défaut
    Si je comprends bien le but est de transférer les données de ta table tmp_ticket à tickets...
    Tu peux faire un parcours de ta table tmp_ticket (mysql_fetch_array comme tu l'as fait) et à chaque ligne tu fais la même chose sur la table ticket. Si tu trouve le tmp_ticket courant pendant ton parcours de la table ticket tu mets un bool à false et après ce parcours si le bool est à false c'est qu'il faut pas insérer, ainsi de suite pour toutes les lignes de tmp_ticket.
    C'est pas la meilleure méthode, je pense pas qu'elle soit très propre puisque pour chaque ligne de tmp_ticket tu parcours toute la table ticket... Néanmoins elle devrait fonctionner sans soucis !
    Un petit n'est pas de trop si le message est utile

    "Vous êtes très nombreux dans votre cas? J'ai jamais pensé que les cons étaient en minorité..."

  3. #3
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Fais une jointure et pense à indenter correctement ton code aussi

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Table A : x enregistrements
    Table B y enregistrements
    Tu veux mettre A dans B sauf si x existe déjà parmi y, c'est ca ?

    Une fois que tu as récupérés ta table A, dans la boucle qui les récupère, tu dois faire un select avec la valeur en cours sur ta table B pour vérifier si celle-ci existe déjà (select toto from titi where x=y). Suivant le résultat de ce select, soit tu insères soit tu fais rien.

    Le where te permet d'accéder directement à l'élément pour pas te taper tout les enregistrements.

    Sinon inversement, tu récupères tout les y de table B, et tu cherches dans table A tout les x qui n'existent pas, de ce fait tu peux faire une seule requête des inser into ... pour tout le reste
    Règle N° 1 : Si tout va bien, ne touchez à rien.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    Merci à tous !

    Effectivement j'avais oublier le test par BOOLEAN = TRUE.

    voici mon code final et ça marche.

    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
     
    $res	=	mysql_query('select account_code, calling_number, debut_date, debut_heure FROM tmp_ticket');	
    while ($row = mysql_fetch_assoc($res)) 
    { 
    // on liste tout le contenu de la taille TICKETS par rapport a la date
    $res_ticket	=	mysql_query('select id_trunksip, calling_number, debut_date, debut_heure FROM tickets WHERE id_trunksip = "'.$row["account_code"].'" AND debut_date = "'.$row["debut_date"].'" AND debut_heure = "'.$row["debut_heure"].'" AND calling_number = "'.$row["calling_number"].'"');
     
    $result 	= 	mysql_fetch_assoc($res_ticket);
          if ($result == TRUE) 
          {
                   echo 'erreur';
          } else {
                   echo 'ça marche';
          }
    }
    Je cloture le sujet.

    et encore merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Word] Récupérer résultat Mysql pour créer un document word
    Par fat dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 07/06/2007, 16h59
  2. [MySQL] parcourir une deuxième fois un résultat mysql avec mysql_fetch_row
    Par arnogef dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/04/2007, 14h35
  3. Réponses: 1
    Dernier message: 02/03/2007, 22h58
  4. Addition résultat mysql
    Par Invité dans le forum Requêtes
    Réponses: 8
    Dernier message: 09/08/2006, 17h21
  5. Tronquer un résultat MySQL
    Par abou76 dans le forum Requêtes
    Réponses: 1
    Dernier message: 30/05/2006, 16h19

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