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 :

probleme trop de requetes ? [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Autodidacte
    Inscrit en
    Octobre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Octobre 2006
    Messages : 58
    Par défaut probleme trop de requetes ?
    bonjour, j'ai un petit soucis avec le remplissage d'une table ("cbo_annonces_catalogue") a partir de 2 autres ("afssaps_cis_cip" et "afssaps_cis").

    j'ai fait un petit script (a la vas vite) pour faire le boulot... cela marche bien pour les 2 premiers paquets..(2500 enregistrements par paquet) mais j'ai l'erreur suivante au paquet numéro 3 (quand $page=3).

    je précise que j'ai beaucoup d'enregistrement...env 90 000...d'ou le découpage par morceau de 2500 mais ca ne semble pas suffire...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Nombre de résultats : 89774
     
    page= 3
    nb page= 36
    premiereAnnonceAafficher= 5000
    nombreDannoncesParPage= 2500
     
    Warning: mysql_query() [function.mysql-query]: Unable to save result set in /homez.33/fred/www/nomdemonsite/import_base_afssaps.php on line 86
     
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /homez.33/fred/www/nomdemonsite/import_base_afssaps.php on line 89
    # n=0 Next
    voici mes structures de table


    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
     
     
    --
    -- Structure de la table `afssaps_cis`
    --
     
    CREATE TABLE IF NOT EXISTS `afssaps_cis` (
      `CIS` longtext NOT NULL,
      `denomination` longtext NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `afssaps_cis_cip`
    --
     
    CREATE TABLE IF NOT EXISTS `afssaps_cis_cip` (
      `CIS` longtext NOT NULL,
      `cip` longtext NOT NULL,
      `cip13` longtext NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `cbo_annonces_catalogue`
    --
     
    CREATE TABLE IF NOT EXISTS `cbo_annonces_catalogue` (
      `catalog_id` int(20) NOT NULL AUTO_INCREMENT,
      `froid` enum('non','oui') NOT NULL DEFAULT 'non',
      `cip` varchar(7) NOT NULL DEFAULT '',
      `cip13` varchar(13) NOT NULL DEFAULT '',
      `denomination` varchar(255) NOT NULL DEFAULT '',
      `labo` varchar(50) NOT NULL DEFAULT '',
      `non_perissable` tinyint(1) NOT NULL DEFAULT '0',
      KEY `id` (`catalog_id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8520 ;
    et voici le code qui est censé faire le boulot


    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
    <?php 
     
    include_once ('path.php');
    include_once ($path.'/connect.php');
     
     
     
    // On met dans une variable le nombre de messages qu'on veut par page
    $nombreDannoncesParPage = 2500; // Essayez de changer ce nombre pour voir :o)
     
    // On r&eacute;cup&egrave;re le nombre total de messages
    $retour_nb = mysql_query("SELECT COUNT(1) AS nb FROM afssaps_cis_cip");
    $donnees_nb = mysql_fetch_array($retour_nb);
     
    $page=intval($_GET['page']);
     
    if ( empty($page) )
    {
    $page = 1; 
    }
    $page_precedente=$page-1;
    $page_suivante=$page+1;
    // On calcule le nombre de pages &agrave; cr&eacute;er
    $nombreDePages  = ceil($donnees_nb['nb'] / $nombreDannoncesParPage);
     
    // Puis on fait une boucle pour ecrire les liens vers chacune des page
    ?>
    <p align="center">Nombre de résultats : <?php echo $donnees_nb['nb'];?></p>
    <?
     
    // On calcule le num&eacute;ro du premier message qu'on prend pour le LIMIT de MySQL
    $premiereAnnonceAafficher = ($page - 1) * $nombreDannoncesParPage;
     
    ?>
    <p>
    <?php  echo 'page= '.$page; ?><br />
    <?php  echo 'nb page= '.$nombreDePages; ?><br />
    <?php  echo 'premiereAnnonceAafficher= '.$premiereAnnonceAafficher; ?><br />
    <?php  echo 'nombreDannoncesParPage= '.$nombreDannoncesParPage; ?><br />
    </p>
    <?php
     
     
     
    $reponse = mysql_query("SELECT afssaps_cis.denomination, afssaps_cis_cip.cip, afssaps_cis_cip.cip13 FROM afssaps_cis, afssaps_cis_cip WHERE afssaps_cis.CIS = afssaps_cis_cip.CIS LIMIT $premiereAnnonceAafficher , $nombreDannoncesParPage"); // Requête SQL
    $n=0;
     
      while ($donnees = mysql_fetch_array($reponse) )//on affiche les infos
    {
    $modif = array("é","Ã","ô","â","î","è","ê");
    $amodif = array("é","à","ô","â","î","è","ê");
     
     
    $denomination0=str_replace('é','e',$donnees['denomination']);
    $denomination=mysql_real_escape_string($denomination0);
     
    mysql_query("INSERT INTO cbo_annonces_catalogue VALUES('', '', '".$donnees['cip']."', '".$donnees['cip13']."', '$denomination', '', '')")or die(mysql_error());
    $n++;
    //echo $donnees['cip'].' | '.$donnees['cip13'].' | '.str_replace('é','é',$donnees['denomination']).'<br>';
    //echo $donnees['cip'].' | '.$donnees['cip13'].' | '.$denomination.'<br>';
    }
     
     
    echo 'n='.$n;
    mysql_close();
    ?>
     
    <li ><a href="import_base_afssaps.php?page=<?php if ( $n==$nombreDannoncesParPage ) { echo $page_suivante; } else { echo $page; } ?>"> Next </a></li>
    merci par avance de votre aide

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    c'est quoi ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $modif = array("é","Ã","ô","â","î","è","ê");
    $amodif = array("é","à","ô","â","î","è","ê");
    utf8_(d)encode est la pour ca...


    concernant le code avec la boucle il est inutile, puisque tu peux faire un INSERT INTO ... SELECT

  3. #3
    Membre confirmé
    Homme Profil pro
    Autodidacte
    Inscrit en
    Octobre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Octobre 2006
    Messages : 58
    Par défaut
    bonjour,

    merci pour votre réponse,

    j'ai essayé l'instruction sql ci apres en local avec wampserver , elle a fonctionner sauf qu'elle a tournée en boucle jusqu'a ce que je la stoppe... ca m'a fait une base de 20 go !!!!
    comporte t elle une erreur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO   cbo_annonces_catalogue (denomination, cip, cip13)
           SELECT           afssaps_cis.denomination, afssaps_cis_cip.cip, afssaps_cis_cip.cip13
           FROM afssaps_cis, afssaps_cis_cip
    sinon pour le problème des caractères bisares j'essaye de m'en débarrasser ils ont apparu dans mes tables a al a suite de leur déplacement d'un serveur sql a l'autre en utilisant bigdump... je n'arrive pas a trouver la source de se problème... enfin maintenant que mes tables sont déplacées , il faut que je trouve le moyen de corriger le bug...

    merci par avance de votre aide.

  4. #4
    Membre confirmé
    Homme Profil pro
    Autodidacte
    Inscrit en
    Octobre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Octobre 2006
    Messages : 58
    Par défaut
    j'ai résolu mon problème en l'attaquant différemment...

    merci encore de votre aide

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

Discussions similaires

  1. problem de syntaxt requete... a l'Aide!!
    Par Jean Christophe Rangon dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/10/2004, 00h31
  2. PROBLEME AVEC LES REQUETES IS NULL / NOT EXISTS
    Par sylvaine dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/06/2004, 13h26
  3. probleme de sous requete
    Par JD_Lyon dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 09/04/2004, 22h18
  4. au secour probleme avec une requete...
    Par soufiane59 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/09/2003, 10h28
  5. Probleme dans ma requete
    Par Kuroro dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/07/2003, 11h14

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