Le contenu de ma BDD ne s'affiche pas toujours

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Le contenu de ma BDD ne s'affiche pas toujours

Re: Le contenu de ma BDD ne s'affiche pas toujours

par xTG » 29 mars 2014, 17:19

Tout à fait.

Re: Le contenu de ma BDD ne s'affiche pas toujours

par Invité » 29 mars 2014, 14:58

Ah mais oui !
Donc serait- ce un truc comme ça ?
/*
 * si le paramètre "lang" est défini dans l'url et s'il existe dans la liste
 * $lang prend la valeur de $_GET['lang']
 */
if (isset($_GET['lang']) && in_array($_GET['lang'], $langues)) {
    $lang = $_GET['lang'];
}

/*
 * sinon vérifier prendre la valeur du cookie $_COOKIE['lang']
 * (s'il est défini)
 */
else if (isset($_COOKIE['lang']) && in_array($_COOKIE['lang'], $langues)) {
    $lang = $_COOKIE['lang'];
}
/*
 * sinon donner une valeur par défaut à $lang
 */

else {
$lang = $default_lang ;}

Re: Le contenu de ma BDD ne s'affiche pas toujours

par xTG » 29 mars 2014, 13:04

/*
 * si le paramètre "lang" est défini dans l'url et s'il existe dans la liste
 * $lang prend la valeur de $_GET['lang']
 */
if (isset($_GET['lang']) && in_array($_GET['lang'], $langues)) {
    $lang = $_GET['lang'];
}

/*
 * sinon vérifier prendre la valeur du cookie $_COOKIE['lang']
 * (s'il est défini)
 */
else if (isset($_COOKIE['lang']) && in_array($_COOKIE['lang'], $langues)) {
    $lang = $_COOKIE['lang'];
}
Et si aucun paramètre dans l'url et aucun cookie que vaut $lang ? ;)

Le contenu de ma BDD ne s'affiche pas toujours

par patefilo » 28 mars 2014, 23:08

Bonjour !

J'ai fait une page en Php qui affiche des infos stockées dans une base MySQL. Cette page est en 2 langues et a un menu dynamique (qui je pense est la source du problème).

Parfois, lorsque je je vais sur cette page après avoir fermé mon navigateur, les news n'apparaissent pas. Il faut que je change de page et que je revienne OU que je change de langue pour qu'elles apparaissent.

Je pensais que c'était un problème de cookie mais non. Après tests, je pense vraiment que ça vient du code de mon menu dynamique.

Auriez-vous une idée pour m'aider ? Voici le code de la page en question :
<?php
include('langue.php');
include("admin/connect.php");
include("admin/include/lib/db_mysql.inc.php");
include("admin/include/function.php");
?>
<!doctype html>
<html>

<head>
    <?php  ?>
    <?php include('head.php'); ?>
    <?php include('menu.php');?>    
    <style type="text/css">
    body {
        background:url(images/BG_HOME.jpg) #fff no-repeat left top;
    }
    </style>  

    <link href="owl-carousel/owl.carousel.css" rel="stylesheet">
    <link href="owl-carousel/owl.theme.css" rel="stylesheet">
    <link href="owl-carousel/owl.transitions.css" rel="stylesheet">

    <link rel="stylesheet" media="screen" type="text/css" href="css/leanbackPlayer.default.css" />
    <script type="text/javascript" src="js/leanbackPlayer.pack.js"></script>
    <script type="text/javascript" src="js/leanbackPlayer.en.js"></script>
    <script type="text/javascript" src="js/leanbackPlayer.de.js"></script>

</head>

<body>
    <?php include_once("analyticstracking.php") ?>
    <div id="wrapper">
    <header>
            <nav>
                <ul>
                    <li><?php echo $accueil; ?></li>
                    <li><?php echo $biographie; ?></li>
                    <li><?php echo $musique; ?></li>
                    <li><?php echo $spectacles; ?></li>
                    <li><?php echo $contact; ?></li>
                    <li><?php echo $fr; ?> / <?php echo $en; ?></li>
                </ul>
            </nav>

            <h1>Guy Marin</h1>
            <div class="ligne"></div>
            <h3><?php echo $label6?></h3>
    </header>
            <article>
            <!-- Diaporama -->

            <div id="owl-demo" class="owl-carousel">
                <div><img src="images/1.jpg" alt=""></div>
                <div><img src="images/4.jpg" alt=""></div>
                <div><img src="images/3.jpg" alt=""></div>
            </div>
            <script src="owl-carousel/jquery-1.9.1.min.js"></script> 
            <script src="owl-carousel/owl.carousel.js"></script>
            <!-- Fin du Diaporama -->

            <script>
            $(document).ready(function() {

              var owl = $("#owl-demo");

              owl.owlCarousel({
                navigation : false,
                singleItem : true,
                transitionStyle : "fade",
                autoPlay : 5000,
                dragBeforeAnimFinish : false,
                mouseDrag : false,
                touchDrag : false,
                pagination : false,     });

            });
            </script>
            </article>
    <div class="fondcontenu">
        <article class="news">
                    <?php
                        $requet = "SELECT * FROM `actus` ORDER BY id DESC LIMIT 0,3;";
                        $result = mysql_query($requet) or die("Erreur SQL !".$requet."<br>".mysql_error());
                        while ($row = mysql_fetch_array($result)){
                    ?>
                    <?php
                        if ( $lang == "fr" ) { ?>
                        <article class="news">
                        <div class="newsdate"><?php echo date("d-m-Y", strtotime($row["date"]));?></div>
                        <div class="newstitre"><?php echo $row["titre"]; ?></div>
                        <div class="newscontenu"><?php echo $row["actu"]; ?></div>
                        </article>
                    <?php
                        }
                        elseif ( $lang == "en" ) { ?>
                        <article class="news">
                        <div class="newsdate"><?php echo date("d-m-Y", strtotime($row["date"]));?></div>
                        <div class="newstitre"><?php echo $row["titreen"]; ?></div>
                        <div class="newscontenu"><?php echo $row["actuen"]; ?></div>
                        </article>
                    <?php
                    }
                    }
                    ?>
        </article>

Le problème peut éventuellement venir aussi de mon fichier de gestion de langues :
    <?php //header("Cache-Control: no-cache"); //vider le cache
$default_lang = 'fr'; //langue par défaut
$dir_lang = './langues/'; //répertoire des fichiers langues
$extension = '.php'; //extension des fichiers langue

/*
 * liste des fichiers langue disponibles
 * s'assurer que chacun de ces fichiers existe bien dans
 * le répertoire
*/
$langues = array('en', 'fr');
$lang = '';

/*
 * si le paramètre "lang" est défini dans l'url et s'il existe dans la liste
 * $lang prend la valeur de $_GET['lang']
 */
if (isset($_GET['lang']) && in_array($_GET['lang'], $langues)) {
    $lang = $_GET['lang'];
}

/*
 * sinon vérifier prendre la valeur du cookie $_COOKIE['lang']
 * (s'il est défini)
 */
else if (isset($_COOKIE['lang']) && in_array($_COOKIE['lang'], $langues)) {
    $lang = $_COOKIE['lang'];
}

/*
 * sauver la valeur de $lang dans le cookie $_COOKIE['lang']
 */
if (!empty($lang)) {
    setcookie('lang', $lang);
}
/*
 * quelque soit la langue d'affichage sélectionnée
 * inclure le fichier langue par défaut pour ne manquer
 * aucune variable 
 */
include($dir_lang . $default_lang . $extension);

/*
 * seulement après, vérifier que le fichier langue
 * défini dans $lang existe et l'inclure
 */
if (!empty($lang) && $lang != $default_lang && 


is_file($dir_lang. $lang . $extension)) {
    include($dir_lang . $lang . $extension);
}
?>

Ou, comme je le pense, de mon gestionnaire de menu :
<?php
/*
On définit 6 variables correspondant aux liens des 6 pages du menu.
En précisant ?page=nom_de_la_page dans chaque adresse, on transmettra une variable par la méthode GET quand le lien en question sera cliqué. Cette variable ($_GET['page']) aura comme valeur : nom_de_la_page.
*/

$accueil = '<a href="index.php?page=accueil">'.$label1.'</a>';
$biographie = '<a href="biographie.php?page=biographie">'.$label2.'</a>';
$musique= '<a href="musique.php?page=musique">'.$label3.'</a>';
$spectacles = '<a href="spectacles.php?page=spectacles">'.$label4.'</a>';
$contact = '<a href="contact.php?page=contact">'.$label5.'</a>';
$fr = '<a href="index.php?page=accueil&lang=fr">FR</a>';
$en = '<a href="index.php?page=accueil&lang=en">EN</a>';

/*
On récupère la valeur de la variable $_GET['page'].
Si par exemple la page html a été appelée, $_GET['page'] = html.
Pour que le lien $html ne soit plus cliquable il faut lui donner une autre valeur.
$html = '<span class="StyleClick">Html et Css</span>';
Le lien $html est désormais un texte, mis en forme avec le StyleClick (voir plus bas).
En fonction de la valeur de $_GET['page'] les liens initiaux seront ou non "transformés". 
*/

if($_GET['page']== "accueil") { $accueil ='<span class="active">'.$label1.'</span>'; }
if($_GET['page']== "biographie") { $biographie ='<span class="active">'.$label2.'</span>'; }
if($_GET['page']== "musique") { $musique ='<span class="active">'.$label3.'</span>'; }
if($_GET['page']== "spectacles") { $spectacles ='<span class="active">'.$label4.'</span>'; }
if($_GET['page']== "contact") { $contact ='<span class="active">'.$label5.'</span>'; }
if($lang == "fr") { $fr ='<span class="active">FR</span>'; }
if($lang == "en") { $en ='<span class="active">EN</span>'; }

?>

Merci !