Bonjour à tous.
Tout d'abord, je m'excuse pour ce titre vague qui reflète ma totale incompréhension de mon problème.
Contexte : j'ai développé un site web pour le partage des agendas au sein de mon entreprise.
Dans un premier temps, je l'ai fais en local sur mon pc avec wamp manager et tout marche bien.
J'ai ensuite migré le site sur internet et plus précisément sur l'hébergeur amen.
J'ai transféré mes fichiers par le biais de FileZilla.
J'ai importé la Base de donnée MySQL.
Problème : Les bases de données sont identiques(celle en local sous wamp et celle que j'ai migré sur Amen) au niveau du nommage des champs.
J'ai bien changé la connexion à la base de donnée en fonction de l'hébergeur. Voici la ligne qui correspond :
Bien sûr [user] et [mdp] sont à remplacer par les vrais champs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 //connexion à la BDD $bdd = new PDO('mysql:host=localhost;dbname=calendrier_ventana', '[user]', '[mdp]');
Normalement, ce changement aurait du suffire(enfin je pense) au bon fonctionnement du site.
Seulement j'ai eu des erreurs : certaines requêtes SQL ne fonctionnaient plus.
Par exemple, ici je parcours un tableau associatif contenant, en clé, le nom de l'entreprise, et en valeur, le tableau des employés de l'entreprise.
Pour chaque entreprise j'affiche son nom en h5
Pour chaque employé j'affiche son nom sous forme de liste li
Si la dernière maj est vieille de plus d'un semaine, je surligne en rouge le nom de l'employé
La requête plante et, suite à celle-ci, le code s'arrête complètement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 foreach($membres as $entreprise => $liste_membres){ echo "<h5>".$entreprise."</h5>"; foreach($liste_membres as $membre){ //cette ligne plante $date_maj = $bdd->query("SELECT date_derniere_maj FROM employe WHERE nom ='".$membre."'")->fetch(); $couleur=(mktime()-strtotime($date_maj[0])>(7 * 24 * 60 * 60))?"style=\"background-color:red;\"":""; echo "<li ".$couleur.">".$membre."</li>"; } }
Code source générée par ce script:
(ce sera la dernière ligne de code HTML générée dans la page car le script fait planter le chargement de la page)
Code : Sélectionner tout - Visualiser dans une fenêtre à part <h5>CIMB</h5>
Alors que la bdd contient 5 entreprises et plusieurs personnes dans chaque entreprise
Après j'ai résolu d'autre problèmes similaire en changeant le nom des variables => peut être des conflits vu que j'utilisais tout le temps $result et $ligne comme récepteur des résultats des requêtes SQL mais jamais sur plusieurs requêtes à la fois
ou encore en optimisant les requêtes(en imbriquant deux requêtes ensemble) => Amen empêche t il l'exécution de trop de requête à la suite?
Ex:
devient
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $result = $bdd->query("SELECT * from entreprise ORDER BY nom"); while($ligne = $result->fetch()){ $occurence = $bdd->query("SELECT COUNT(*) FROM employe WHERE id_entreprise='".$ligne["id_entreprise"]."' ")->fetch(); if($occurence[0]!=0) echo '<input type="checkbox" name ="CB_entreprise_'.$ligne['id_entreprise'].'" value="'.$ligne['nom'].'"/><span style="position:relative;top:2px;">'.$ligne['nom'].'</span><br/><br/>'; }
Si quelqu'un a une idée... je suis perdu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $liste_entreprises = $bdd->query("SELECT DISTINCT ent.id_entreprise as id_entreprise, ent.nom as nom from entreprise ent, employe e WHERE e.id_entreprise = ent.id_entreprise ORDER BY nom"); while($entreprise = $liste_entreprises->fetch()){ echo '<input type="checkbox" name ="CB_entreprise_'.$entreprise['id_entreprise'].'" value="'.$entreprise['nom'].'"/><span style="position:relative;top:-2px;">'.$entreprise['nom'].'</span><br/><br/>'; }
Partager