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 :

Optimisation d'un traitement arrêté par mon hébergeur [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut Optimisation d'un traitement arrêté par mon hébergeur
    Bonjour,

    Je suis chez ovh et j'ai un traitement de suppression de doublons sur une table de 30 000 enregistrements quid ure trop longtemps. OVH me déconnecte avant la fin.

    Voici mon traitement

    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
    $select="SELECT id_tiers, $doublon 
    		 FROM $table 
    		 order by $doublon";
    $resultat=mysql_query($select);
    while($ligne=mysql_fetch_array($resultat))
    {
     
    	$ligne["tiers_nom"]=addslashes($ligne["tiers_nom"]);
    	$ligne["tiers_adr1"]=addslashes($ligne["tiers_adr1"]);
    	// Recherche dans la table temporaire de l'existence de cet enregistrement
    	$sql = "SELECT * FROM tabletemp 
    			WHERE tiers_nom = '".$ligne["tiers_nom"]."'
    			AND tiers_adr1 = '".$ligne["tiers_adr1"]."'";
     
    	$requete=mysql_query($sql);
    	while($line=mysql_fetch_array($requete))
    	{
    		$req = "UPDATE $table 
    				SET tiers_cpt_banque = '".$line["id_tiers"]."'
    				WHERE id_tiers = '".$ligne["id_tiers"]."'";
     
    		mysql_query($req);
    	}
    }
    Est-il possible de l'optimiser ?

    Merci d'avance
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  2. #2
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    sans parler de l'optimiser (j'ai pas lu le code ) tu peux rajouter ini_set("max_execution_time", "300"); au début de ton fichier.
    Au lieu d'être déconnecté au bout de 30 secondes, tu sera déconnecté au bout 5 minutes... normalement ça devrait suffir

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    L'optimiser je ne sais pas mais en désespoir de cause il existe une petite feinte pour contourner le timeout avec ce genre de traitement.

    Faire le traitement en plusieurs fois : un compteur limite le nombre de doublons traités et rappelle la page une fois le nombre limite atteint.

    La condition de sortie sera la non présence de doublons.
    Ce n'est pas propre, mais ca m'avait sauvé la vie dans un cas similaire une fois
    Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ?

    Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée"

  4. #4
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Salut,

    Je ne comprends pas le code, en particulier ces deux lignes qui ne font pas partie de la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ligne["tiers_nom"]=addslashes($ligne["tiers_nom"]);
    $ligne["tiers_adr1"]=addslashes($ligne["tiers_adr1"]);
    A moins qu'elles ne soient contenues dans $doublon ?

    D'où ma question : quelle est la structure de cette variable / objet ?

    Et mon but : effectuer une requête qui ne repère que les doublons réels, sans avoir à balayer toute la table. Cela doit être faisable en utilisant les GROUP BY et HAVING COUNT.
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Après réflexion je me demande : ne serait ce pas plus efficace de lister la table temporaire et de vérifier l'existence dans la table finale, plutot que l'inverse ?

    En général les tables temporaires sont moins grosses, donc le traitement en serait diminué.
    Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ?

    Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée"

  6. #6
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Citation Envoyé par jml94
    Salut,

    Je ne comprends pas le code, en particulier ces deux lignes qui ne font pas partie de la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ligne["tiers_nom"]=addslashes($ligne["tiers_nom"]);
    $ligne["tiers_adr1"]=addslashes($ligne["tiers_adr1"]);
    A moins qu'elles ne soient contenues dans $doublon ?

    D'où ma question : quelle est la structure de cette variable / objet ?

    Et mon but : effectuer une requête qui ne repère que les doublons réels, sans avoir à balayer toute la table. Cela doit être faisable en utilisant les GROUP BY et HAVING COUNT.

    Dans l'ancienne base que je récupère, il n'y avait aucun contrôle. Donc dans les champs "TEXT" ou "VARCHAR", il y a plein de caractères bizaroïde qui font que la requête se plante. En mettant "addslashes", je protège tous les caractères spéciaux.

    La base temporaire est effectivement plus petite, elle contient moins de 7 000 enregistrements. Elle a été constituée avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $strsql = "CREATE TABLE tabletemp SELECT DISTINCT * FROM t_tiers group by tiers_nom, tiers_adr1";
    mysql_query( $strsql);
    J'ai 3 tables qui sont liés sur les enregistrements de "$table=t_tiers".

    J'ai donc ensuite un traitement par table lié pour connecter chaque enregistrement vers l'enregistrement de t_tiers restant. C'est pourquoi j'utilise un champ non utilisé "tiers_cpt_banque" pour garder le nouveau lien.

    J'espère avoir été plus clair.

    Merci
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  7. #7
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par lodan
    Dans l'ancienne base que je récupère, il n'y avait aucun contrôle. Donc dans les champs "TEXT" ou "VARCHAR", il y a plein de caractères bizaroïde qui font que la requête se plante. En mettant "addslashes", je protège tous les caractères spéciaux.

    ...

    J'espère avoir été plus clair.
    Hélas non, mais peut-être que ma question ne l'était pas non plus.

    Je vouslais dire que je ne vois aucune trace des colonnes "tiers_nom" et "tiers_adr1" dans la requête.
    J'en déduisais qu'elles doivent être dans $doublon...
    Donc il ressemble à quoi ce $doublon ?
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  8. #8
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Citation Envoyé par jml94
    Hélas non, mais peut-être que ma question ne l'était pas non plus.

    Je vouslais dire que je ne vois aucune trace des colonnes "tiers_nom" et "tiers_adr1" dans la requête.
    J'en déduisais qu'elles doivent être dans $doublon...
    Donc il ressemble à quoi ce $doublon ?
    Tu me fais douter.

    Dans ma requête c'est quoi ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = "SELECT * FROM tabletemp 
    			WHERE tiers_nom = '".$ligne["tiers_nom"]."'
    			AND tiers_adr1 = '".$ligne["tiers_adr1"]."'";
    Ce n'est pas l'utilisation des colonnes "tiers_nom" et "tiers_adr1" ?
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  9. #9
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Si bien sûr, mais ta requête de base est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $select="SELECT id_tiers, $doublon 
    		 FROM $table 
    		 order by $doublon";
    Et le curseur de résultats est parcouru :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $resultat=mysql_query($select);
    while($ligne=mysql_fetch_array($resultat))
    Donc $ligne contient les colonnes de ta requête.
    Et je ne vois pas mes deux fameuses colonnes...

    Donc moi aussi, je doute
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  10. #10
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Et j'avouerais que ce qui me chagrine encore plus, c'est que ça marche sans se planter...
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  11. #11
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Si tiers_nom et son acolyte ne sont pas dans $doublon alors ils sont null et leur utilisation ultérieur entraîne des chaînes vides qui ne gênent pas le reste du code. Par contre, est-ce que le code est bon ?

    Edit: y a pas des warnings en mode E_STRICT ? (ou alors je ne réponds plus de rien ; )

  12. #12
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Citation Envoyé par jml94
    Si bien sûr, mais ta requête de base est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $select="SELECT id_tiers, $doublon 
    		 FROM $table 
    		 order by $doublon";
    Et le curseur de résultats est parcouru :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $resultat=mysql_query($select);
    while($ligne=mysql_fetch_array($resultat))
    Donc $ligne contient les colonnes de ta requête.
    Et je ne vois pas mes deux fameuses colonnes...

    Donc moi aussi, je doute

    Oups, autant pour moi, je n'avais pas mis les 1ère ligne du code juste avant ma requête de base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $table='t_tiers';
    $doublon='tiers_nom, tiers_adr1';
    $identifiant='id_tiers';
    ce sera plus clair comme cela
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  13. #13
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Salut,
    tu peux mettre tes structures de tables aussi ? (enfin les champs concernés)
    Ok oublie, c'est l'utilisation des variables $line et $ligne qui m'a troublé.

    Tu peux déjà virer ton ORDER BY qui sert à rien et nommer le champ qui t'intèresse ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Recherche dans la table temporaire de l'existence de cet enregistrement
    	$sql = "SELECT id_tiers FROM tabletemp ..
    C'est un plus long si tu le nommes pas, en plus tu récupères tiers_nom et tiers_adr1 alors que tu t'en sers pas.

    Ensuite tu peux tout passer en fetch_row(), moins lisiblve mais sans doute un peu plus rapide sur 30000 enregistrements, l'accès par index à un tableau est censé être plus rapide, enfin bon, sur un tableau de 4 ou 5 éléments ca doit pas changer grand chose.


    Ensuite c'est clair qu'il vaut mieux passer par la table temporaire avant s'il est toujours plus petite, un truc du style devrait fonctionner, non ? (si j'ai bien compris la structure de tes tables) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $sql = "SELECT id_tiers, $doublon FROM tabletemp;";
    $res = mysql_query($sql);
    while($row = mysql_fetch_row($res))	{
    	$sql2 = "UPDATE $table SET tiers_cpt_banque = '".$row[0]."' WHERE tiers_nom = '".$row[1]."' AND tiers_addr1 = '".$row[2]."'";
    	mysql_query($sql2);
    }
    [edit]Petit changement je passais pas un tableau temporaire inutile
    Ah oui mais ca règle pas ton problème d'addslashes. Au pire tu peux passer un coup d'addslashes définitif à toute la table avant.
    [/edit]

    bye
    Vive les roues en pierre

  14. #14
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Citation Envoyé par Djakisback

    C'est un plus long si tu le nommes pas, en plus tu récupères tiers_nom et tiers_adr1 alors que tu t'en sers pas.
    Ben, si je m'en sert ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ligne["tiers_nom"]=addslashes($ligne["tiers_nom"]);
    	$ligne["tiers_adr1"]=addslashes($ligne["tiers_adr1"]);
    	// Recherche dans la table temporaire de l'existence de cet enregistrement
    	$sql = "SELECT * FROM tabletemp 
    			WHERE tiers_nom = '".$ligne["tiers_nom"]."'
    			AND tiers_adr1 = '".$ligne["tiers_adr1"]."'";
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  15. #15
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Je parlais de cette requête en fait :

    // Recherche dans la table temporaire de l'existence de cet enregistrement
    $sql = "SELECT * FROM tabletemp

    Tu te sers que d'id_tiers de la tabletemp
    Vive les roues en pierre

  16. #16
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Citation Envoyé par Djakisback
    Ensuite c'est clair qu'il vaut mieux passer par la table temporaire avant s'il est toujours plus petite, un truc du style devrait fonctionner, non ? (si j'ai bien compris la structure de tes tables) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $sql = "SELECT id_tiers, $doublon FROM tabletemp;";
    $res = mysql_query($sql);
    while($row = mysql_fetch_row($res))	{
    	$sql2 = "UPDATE $table SET tiers_cpt_banque = '".$row[0]."' WHERE tiers_nom = '".$row[1]."' AND tiers_addr1 = '".$row[2]."'";
    	mysql_query($sql2);
    }
    Ce n'est pas possible de passer par la table temporaire en 1er.

    Je vais essayer d'expliquer.

    J'ai une table des "clients" composé d'un identifiant (la clé d'accès) et d'un nom.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    01 DUPOT
    02 TATI
    03 DUPOT
    J'ai une table des "contacts" composé d'un identifiant, de l'identifiant du client et d'un nom :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    001 01 ATCHOUM
    002 02 TIMIDE
    003 02 JOYEUX
    004 03 GRINCHEUX
    Mon traitement doit faire en sorte que je me retrouve avec ceci

    Table client

    Table contact
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    001 01 ATCHOUM
    002 02 TIMIDE
    003 02 JOYEUX
    004 01 GRINCHEUX
    Donc je dois marqué la table des clients en disant 01 et 03 c'est la même chose, je sauvegarde donc 01 sur l'enregistrement de 03. (C'est le marquage que je veux faire dans le traitement que j'ai mis dans mon 1er post)
    Ensuite j'ai un traitement qui lit les contacts. Il trouve que le 004 dont le client est 03. En lisant le client 03, on sait que c'est comme le client 01 dont sur le contact on remplace 03 par 01. (Ce traitement est fait après le traitement placer dans mon 1er post).

    Une fois que j'ai fait tout cela, j'ai besoin de nettoyer "client" de tous les codes dont la clé est différente de la clé sauvegardée.

    Suis-je plus clair ?

    Merci
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  17. #17
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Re,
    selon le jeu de données que tu fournis voilà ce que ca pourrait donner en utilisant un tableau temporaire pour trier les données sur le nom du client, cela me paraît plus optimisé en terme de vitesse mais c'est pas sûr (moins de requêtes mais plus de mémoire consommée par php)

    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
    // Récupération et formatage des ids de clients par nom
    $sql = "SELECT id, nom FROM clients ORDER by id ASC"; // Ici faut pas oublier l'order by id asc
    $res = mysql_query($sql) or die(mysql_error().' - '.$sql);
    while($row = mysql_fetch_row($res))	{
    	$recs[$row[1]][] = $row[0];
    }
     
    /*
    var_dump($recs) donne :
    array(2) {
      ["dupot"]=>
      array(2) {
        [0]=>
        string(1) "1"
        [1]=>
        string(1) "3"
      }
      ["tati"]=>
      array(1) {
        [0]=>
        string(1) "2"
      }
    }
    */
     
    // Création des tableaux d'ids à modifier et à supprimer
    $idsToUpdate = array();
    $idsToDelete = array();
    foreach($recs as $datas)	{
    	$datasCount = count($datas);
    	$idsToUpdate = null;
    	if(count($datas) > 1)	{
    		for($i = 1; $i < $datasCount; $i++)	{
    			$idsToUpdate[] = $datas[$i];
    			$idsToDelete[] = $datas[$i];
    		}
    		// Update
    		$sql2 = "UPDATE contacts SET id_client = '".$datas[0]."' WHERE id_client IN(".implode(', ', $idsToUpdate).")"; // $datas[0] contient l'id à conserver (l'id le plus petit)
    		echo '<br>'.$sql2;
    	}
    }
     
    /*
    var_dump($idsToDelete) donne :
    array(1) {
      [0]=>
      string(1) "3"
    }
    */
     
    // Delete
    $sql3 = "DELETE FROM clients WHERE id IN(".implode(', ', $idsToDelete).")";
    echo '<br>'.$sql3;
    Il faut bien sur que l'id de la table clients soit unique.
    J'espère que ca pourra t'aider.
    Bye ^^
    Vive les roues en pierre

  18. #18
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Merci beaucoup pour cette exemple, je vais effectivement essayer cela et on verra ce que l'on peut gagner.

    L'id est effectivement unique.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/06/2014, 10h49
  2. Les processus créés par system() ne sont pas arrêtés quand mon service windows stoppe
    Par Glavio dans le forum Programmation et administration système
    Réponses: 6
    Dernier message: 30/04/2012, 23h25
  3. Réponses: 5
    Dernier message: 11/03/2005, 17h48
  4. Détection passerelle par mon provider
    Par devmat dans le forum Réseau
    Réponses: 4
    Dernier message: 20/01/2005, 12h41
  5. Comment faire générer du rtf par mon application?
    Par nickylarson dans le forum C++Builder
    Réponses: 3
    Dernier message: 13/08/2003, 10h35

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