Bonjour,

Voici un script en php / mysql pour générer un gros sitemap -avec un sitemap-index à la clé-, la quasi majorité des urls devant constituer le sitemap étant générées à partir d'une table de ma BDD.
À l'exécution, j'ai une erreur système :

syntax error, unexpected end of file, expecting variable (T_VARIABLE) or ${ (T_DOLLAR_OPEN_CURLY_BRACES) or {$ (T_CURLY_OPEN)
Après bien des recherches, l'erreur semble se situer dans l'instruction (ce qui semble d'ailleurs confirmé par la cessation de coloration du script à partir de cette instruction) : fwrite($xml1, $lachaine); (cf. ligne 24 ci-dessous)
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
$conn = mysqli_connect('... mes données personnelles de connexion à la BDD...');
$req = "SELECT nom, prenom, profession, specialite, code_profession, b5, mode_exercice, cp_ville, a3 FROM table WHERE ((cp_ville > ' ') AND (a3 = 'C') AND !((code_profession = '60') AND (b5 = 'S')) OR (code_profession = '86') OR (code_profession = '50') OR (code_profession = '21') OR (code_profession = '28') OR (code_profession = '98'))";
$resultat = $conn->query("SET NAMES utf8");
$resultat = $conn->query($req) or die('Erreur SQL !'. $req .'' . $conn->connect_error());
$num = 0;
$nb = 1;
$nbt = 1;
define ("SITE", "... url de mon site ...");
$traitement = true;
if ( file_exists('sitemaps/sitemap-1.xml') ) {
      if( @unlink('sitemaps/sitemap-*') !== true ) {
            $traitement = false;
      }        
}
if ($traitement) {
// préparation du fichier "sitemap-index.xml"
$xml1 = fopen('sitemaps/sitemap-index.xml',"w");
$lachaine = "<?xml version='1.0' encoding='UTF-8'?>\n" .
            "<sitemapindex xmlns='http://www.sitemaps.org/schemas/sitemap/0.9'>\n" .
            "<sitemap>\n" .
            "<loc>" . SITE . "/sitemaps/sitemap.xml</loc>\n" .
            "</sitemap>\n";
fwrite($xml1, $lachaine);
while($arr = mysqli_fetch_array($resultat)) {
if ($nb == 1) {
// on crée un nouveau fichier sitemap-x.xml
$num = $num + 1;
$fich = 'sitemaps/sitemap-' .$num. '.xml';
echo "<br />création du fichier $fich ";
$xml2 = fopen($fich, 'w');
$lachaine = "<?xml version='1.0' encoding='UTF-8'?>\n" .
            "<urlset xmlns='http://www.sitemaps.org/schemas/sitemap/0.9'\n" .
            "        xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\n" .
            "        xsi:schemaLocation='http://www.sitemaps.org/schemas/sitemap/0.9'\n" .
            "        'http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd'>\n";
fwrite ($xml2, $lachaine);
// on complète le fichier sitemap index
$lachaine = "<sitemap>\n<loc>" . SITE . "/sitemaps/sitemap-" .$num. ".xml</loc>\n</sitemap>\n";
fwrite($xml1, $lachaine);
}
// on complète le fichier sitemap-x.xml
if ($arr[3] == '') {
$spec = trim($arr[2]);
}else{
$spec = trim($arr[3]);
}
// on supprime le code postal devant le nom de ville pour ne conserver que le seul nom de ville
$ville = trim(substr($arr[7],7));
$ville2 = strtoupper($ville);
$pos = strpos($ville2, "CEDEX");
if ($pos === false) {
// cette ville n'est pas suivie du Cedex
$vil = $ville;
}else{
// on va supprimer 'CEDEX ...' après le nom de ville
$ll = strlen($ville) - $pos;
$vil = substr($ville, -$ll);  
}
$prat = trim($arr[1]). '-' .trim($arr[0]);
$lachaine = "<url>\n<loc>" . SITE . "/" .$spec. "/" .$vil. "/" .$prat. "</loc>\n</url>\n";
fwrite($xml2, $lachaine);
$nb = $nb + 1;
$nbt = $nbt + 1;
 
if ($nb > 10) {
// pour les tests (mettre 1000 ensuite dans le if au lieu de 10)
$lachaine = "</urlset>\n";
fwrite($xml2, $lachaine);  
fclose($xml2);
$nb = 1;  
}
// on se contente des 25 premières lignes de la table pour les tests (if à enlever ensuite)
if ($nbt > 25) break;
}
// fin du traitement
$lachaine = "</urlset>\n";
fwrite($xml2, $lachaine);  
fclose($xml2);
$lachaine = "</sitemapindex>\n";
fwrite($xml1, $lachaine);
fclose($xml1);
}else{
echo "<br />Les fichiers de travail 'sitemaps/sitemap-*.xml' ne peuvent pas être effacés (traitement impossible) !";
}
mysqli_close($conn);
?>
<br /><br /><p>FIN du TRAITEMENT</p>
<p class="droite"><a href="">Retour à la page d'accueil</a></p>
Grand merci au cador en php qui me trouvera mon erreur ... en ces jours de fêtes !
Bon dimanche à tous.