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 07/03/2011, 00h53   #1
Futur Membre du Club
 
Inscription : octobre 2006
Messages : 18
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France

Informations forums :
Inscription : octobre 2006
Messages : 18
Points : 4
Points : 4
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 :
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 :
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 :
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
fwebconcept est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 10h19   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
c'est quoi ca ?
Code :
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 22h50   #3
Futur Membre du Club
 
Inscription : octobre 2006
Messages : 18
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France

Informations forums :
Inscription : octobre 2006
Messages : 18
Points : 4
Points : 4
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 :
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.
fwebconcept est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2011, 13h28   #4
Futur Membre du Club
 
Inscription : octobre 2006
Messages : 18
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France

Informations forums :
Inscription : octobre 2006
Messages : 18
Points : 4
Points : 4
j'ai résolu mon problème en l'attaquant différemment...

merci encore de votre aide
fwebconcept est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h43.


 
 
 
 
Partenaires

Hébergement Web