IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Faire tourner une image en fonction des jours


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Faire tourner une image en fonction des jours
    Bonjour

    Je souhaite mettre sur ma page d'accueil une image qui change tous les jours (à minuit par exemple)
    PS: une image, ou bien une vidéo, ou encore un petit texte

    Est-ce que c'est possible en PHP? Si oui, comment faut-il faire? Existe-t-il un script tout fait (parce que je n'en trouve pas)?

    Je vous remercie beaucoup

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    une methode consiste a stocker la liste des éléments en base de données, a chaque visite on controle :
    - si aucun élément n'est défini pour la date courante, on en prend un au hasard et le taf
    - si un élément est défini, on l'utilise.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bonsoir Sabotage, et merci de ton aide

    Citation Envoyé par sabotage Voir le message
    une methode consiste a stocker la liste des éléments en base de données, a chaque visite on controle :
    - si aucun élément n'est défini pour la date courante, on en prend un au hasard et le taf
    - si un élément est défini, on l'utilise.
    Bon, je suis pas fortiche en PHP, mais j'ai essayé un truc:

    J'ai fait un essai: j'ai stocké quelques vidéos dans ma base de données PHPMyAdmin

    Puis, dans ma page index, à l'endroit où je veux inserer ma vidéo, j'ai écrit ceci (j'ai pris comme exemple des vidéos de ma création que j'ai mises sur Dailymotion):

    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
     
     
    <?php
    /* info de la base */
    $nom_table = "video";
    $host = "localhost";
    $login = "root";
    $pass = "";
     
    $id_video = 1;
    $debut = 14;
    $fin = 24;
    $heure = date("G", mktime());
    $heure = date("G", mktime());
    echo $heure;
     
    $connect = mysql_connect($host, $login, $pass)
        or die("Impossible de se connecter : " . mysql_error());
     
    // numéro vidéo
    $action = "SELECT * FROM `num_video` WHERE `num` = 1";
    $result = mysql_db_query($nombase, $action);
    $row = mysql_fetch_object($result);
    $id_video = $row->id_video;
     
    // changement
    if ($heure > $debut && $heure < $fin) {
    $id_video++;
    echo "</br>".$id_video;
    $action = "UPDATE `num_video` SET `id_video` = '".$id_video."' WHERE `num` =1 LIMIT 1 ;";
    $ok = mysql_db_query($nombase, $action);
    }
     
    // donnée vidéo
    $action = "SELECT * FROM `".$nom_table."` WHERE `num` = ".$id_video;
    $result = mysql_db_query($nombase, $action);
    $row = mysql_fetch_object($result);
    $adresse = $row->adresse;
    $x = $row->width;
    $y = $row->height;
     
     
    mysql_close($connect);
     
    echo "
    <div align='center'><br /><object width='".$x."' height='".$y."'><br />
    <param name='movie' value='".$adresse."'>
    </param><param name='allowFullScreen' value='true'></param>
    <param name='allowscriptaccess' value='always'></param>
    <embed src='".$adresse."' type='application/x-shockwave-flash' allowscriptaccess='always' allowfullscreen='true' width='".$x."' height='".$y."'></embed></object>
    </div>";
    ?>
    Dans la base de données, j'ai créé deux tables
    -une appelée "video" avec 4 champs (num, adresse, width et height)
    -une appelée "num_video" avec 2 champs (num, id_video)
    PS: num correspond au numéro de la vidéo


    Je n'ai pas l'impression d'avancer beaucoup...

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Mets toutes tes infos dans une seule table, tu te simplifieras déjà la tâche.

    Je vois que maintenant tu veux changer la vidéo selon l'heure ?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Mets toutes tes infos dans une seule table, tu te simplifieras déjà la tâche.

    Je vois que maintenant tu veux changer la vidéo selon l'heure ?
    En fait, je voudrais que chaque jour, une nouvelle vidéo apparaisse sur ma page d'accueil en lieu et place d'une autre (j'en ai une cinquantaine à faire tourner)

    Le changement de vidéo pourrait avoir lieu à minuit par exemple (ça doit simplifier les choses, peut être, au niveau du code, si l'ordre de changement se fait quand on passe au jour suivant ?)

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    hum non reprends bien mon principe

    une table avec
    id _ chemin _ datediffusion

    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
     
    // on cherche la vidéo d'aujourd'hui
    $sql = "SELECT chemin FROM table WHERE datediffusion = CURDATE()";
     
    si resultat {
    $chemin = .....
    }
    else {
    // s'il n'y en a pas, on cherche la plus veille vidéo diffusée (qui peut être aussi une vidéo non diffusée (champ NULL))
    $sql = "SELECT id,chemin FROM table ORDER BY datediffusion ASC LIMIT 1";
    $id = .......
    $chemin = ......
    // et on la marque a aujourd'hui
    $sql = "UPDATE table SET datediffusion = CURDATE() WHERE id = $i";
    }
     
    echo $chemin;

  7. #7
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 476
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 476
    Points : 4 687
    Points
    4 687
    Par défaut
    Salut,

    j'apporte un autre point de vue (mieux ou pas, je ne sais pas)
    si tu veux une image/jour (pas aleatoire) tu peux les stocker dans une dossier (img par exemple), et les nommer au numero du jour (par exemple 1.png,2.png...)
    puis, tu recupere le jour en cours $num=date("j");
    et afficher l'image
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<IMG src="chemin/img/'.$num.'.png" /> ';
    tu peux faire pareil avec une video.
    et pour le texte, tu les mets dans un txt, et tu te place a la ligne du jour

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bonjour, et encore 1000 fois merci pour vos réponses

    J'ai lu vos conseils, je suis avec un ami qui connait assez bien le PHP (même lui galere ), et on a un peu tout retravaillé:

    voila ce que ça donne au niveau du code:

    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
     
     
    <?php
    /* info de la base */
    $host = "localhost";
    $login = "root";
    $pass = "";
     
    $id_video = 1;
    $debut = 1;
    $fin = 24;
    $jour = date("Y-m-d", mktime());
    $heure = date("G", mktime());
     
    $connect = mysql_connect($host, $login, $pass)
        or die("Impossible de se connecter : " . mysql_error());
     
    // nombre de video
    $total_video = 0;
    $action = "SELECT * FROM `video`";
    $result = mysql_db_query($nombase, $action);
    while ($row = mysql_fetch_object($result)) {
    	$total_video++;
    }
     
    // numéro vidéo
    $action = "SELECT * FROM `num_video` WHERE `num` = 1";
    $result = mysql_db_query($nombase, $action);
    $row = mysql_fetch_object($result);
    $id_video = $row->id_video;
    $date = $row->jour; 
     
    // changement
    if ($heure > $debut && $heure < $fin && $date != $jour) {
    if ($id_video < $total_video) { $id_video++; } else { $id_video = 1; }
    $action = "UPDATE `num_video` SET `id_video` = '".$id_video."', `jour` = '".$jour."' WHERE `num` =1 LIMIT 1 ;";
    $ok = mysql_db_query($nombase, $action);
    }
     
    // donnée vidéo
    $action = "SELECT * FROM `video` WHERE `num` = ".$id_video;
    $result = mysql_db_query($nombase, $action);
    $row = mysql_fetch_object($result);
    $adresse = $row->adresse;
    $x = $row->width;
    $y = $row->height;
     
     
    mysql_close($connect);
     
    echo "
    <div align='center'><br /><object width='".$x."' height='".$y."'><br />
    <param name='movie' value='".$adresse."'>
    </param><param name='allowFullScreen' value='true'></param>
    <param name='allowscriptaccess' value='always'></param>
    <embed src='".$adresse."' type='application/x-shockwave-flash' allowscriptaccess='always' allowfullscreen='true' width='".$x."' height='".$y."'></embed></object>
    </div>";
    ?>

    Maintenant nous avons 2 tables:

    -une table num_video avec 3 champs (num, id_video et jour)
    -une table video avec 4 champs (num, adresse, widht et height)


    Problème: mon ami spécialiste du PHP me soutient qu'on est obligés de définir un laps de temps (ce qu'on a fait, dans le code, de 1.00 à 24.00, on a visé large...) pendant lequel au moins un visiteur doit visiter ma page pour que la vidéo change

    A son avis, il est impossible de définir une heure (par exemple 23.00) qui fasse passer de la vidéo N°1 à la vidéo N°2 le 1er jour, puis de la vidéo N°2 à la N°3 le 2e jour, etc, etc...... Il part du principe que s'il n'y a personne à 23.00 sur mon site, le changement ne se fera pas

    Il m'étonne sur ce coup. Qu'en pensez-vous?


    --> Sabotage: excuse-moi, je viens de m'apercevoir que j'ai oublié de répondre avec précision à ta question de hier: en fait, tous les jours je veux que quelque chose change sur mon index (là on l'a fait pour une vidéo, mais je peux aussi bien parler d'une image que d'un texte, j'ai pas mal de fichiers que je voudrais que mes visiteurs voient dès ma page d'accueil)

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'ai deja donné mon avis puisque je t'ai fourni un exemple basé sur le changement de jour.
    En effet il n'y a aucun interet de définir des heures ou des plages de changement puisqu'on parle de changement de jour.
    De plus je ne vois toujours pas l'interet d'avoir deux bases.

  10. #10
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 476
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 476
    Points : 4 687
    Points
    4 687
    Par défaut
    il est impossible de ...
    Rien n'est impossible (surtout en informatique)
    pour ce qui est de changer a 23h meme s'il n'y a personne, tu peux faire un script qui s'execute tous les jours a la meme heure sur ton serveur
    http://matthieu.developpez.com/execution_periodique/#L6

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par sabotage Voir le message
    J'ai deja donné mon avis puisque je t'ai fourni un exemple basé sur le changement de jour.
    En effet il n'y a aucun interet de définir des heures ou des plages de changement puisqu'on parle de changement de jour.
    Donc je définis la table que tu m'as donné avec les 3 champs, et je vire mes 2 autres tables?

    Quant à ton code, je l'insère à quel endroit de mon code, et qu'est-ce que je supprime de mon code actuel?

    Brrr quelle galère...

Discussions similaires

  1. Comment faire tourner une image GIF ?
    Par Claude_Azoulai dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 28/07/2009, 10h21
  2. Réponses: 8
    Dernier message: 16/07/2009, 18h50
  3. faire tourner une query avec condition de jour
    Par benvanbelgie dans le forum ODS et reporting
    Réponses: 3
    Dernier message: 19/06/2009, 11h06
  4. faire tourner une image
    Par paulselvan dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 10/08/2008, 16h22
  5. Réponses: 7
    Dernier message: 28/06/2007, 08h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo