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