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

Langage PHP Discussion :

audio dans boucle foreach


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 35
    Points : 21
    Points
    21
    Par défaut audio dans boucle foreach
    bonjour
    j'ai une boucle foreach avec un <audio> dedans qui doit à chaque ligne prendre un nouveau fichier mp3
    mais dans cette écriture il me donne à chaque ligne le premier mot de la liste ...

    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
    	    		<?php foreach ($results as $row) {   ?>	   
    				<?php echo $row["mot"];?> | 
    				<?php echo $row["ts_m"];?> | 
    				<?php echo $row["ts_or"];?> | 
    				<audio autoplay="false" id="ts2">
            			<source src="modules/mod_tasawaq/audio/<?php echo $row["mot"];?>_ts.mp3" type="audio/mpeg">
    				</audio>
    				<div id="ts2">
    				<img alt="" src="modules/mod_tasawaq/audio/audio0.png" 
    					onclick="joueTs2()" 
    					width="20" 
    					height="20"
    					title="écouter"
    					onmouseover="this.src='<?php echo JURI::base() ?>/modules/mod_tasawaq/audio/audio1.png';" 
    					onmouseout="this.src='<?php echo JURI::base() ?>/modules/mod_tasawaq/audio/audio0.png';"/>				
    				</div><br/>			
    			<?php } ?>
    voici le script utilisé
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <script>        
           function joueTs2() {
                var sound = document.getElementById("ts2");
                sound.play();
            }
    </script>
    merci LJ

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 896
    Points : 6 655
    Points
    6 655
    Par défaut
    Contrôle ce que contient la variable $results: var_dump($results);.

    D'autre part, l'attribut html id doit être unique, il ne peut pas y avoir plusieurs éléments qui ont la même valeur dans la même page.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    $results ramène l'ensemble de mes lignes de ma BD dans un array
    il s'affiche bien l'ensemble des éléments ligne par ligne comme ceci

    argile | labou | Sonraï
    banco | labou | Sonraï
    ciel | bénayo | Sonraï
    colline | takasor | Tamasheq
    eau | ari | Sonraï
    étoile | atri | Tamasheq
    feu | hourou | Sonraï
    fleuve | agaraw | Sonraï

    et devant il y a une image sur laquelle le script audio s'exécute bien mais il exécute seulement le premier mot de la liste même sous les autres lignes affichées
    visible ici
    http://www.ingall-niger.org/aujourd-...nnaire-tasawaq

    j'ai enlevé le id du div et idem

    LJ

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 896
    Points : 6 655
    Points
    6 655
    Par défaut
    Donc $results est correct.

    j'ai enlevé le id du div et idem
    Certes, mais comme chaque balise audio générée par ta boucle aura le même attribut id, le problème reste entier.

    Tu dois changer de stratégie et en adopter une qui ne soit pas basée sur les ids.

  5. #5
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 896
    Points : 6 655
    Points
    6 655
    Par défaut
    Un truc comme ça devrait le faire:

    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
    <ul class="playlist">
        <?php foreach ($results as $row): ?>
        <li class="track">
            <?= "{$row['mot']} | {$row['ts_m']} | {$row['ts_or']} |" ?>
            <audio autoplay="false">
                <source src="modules/mod_tasawaq/audio/<?= $row["mot"] ?>_ts.mp3" type="audio/mpeg"/>
            </audio>
     
            <img src="modules/mod_tasawaq/audio/audio0.png" />
        </li>
        <?php endforeach; ?>
    </ul>
     
    <!-- ... -->
     
    <script>
    const tracks = document.getElementsByClassName('track');
     
    for (const track of tracks) {
        track.querySelector('img').addEventListener('click', function(e) {
            e.target.parentNode.querySelector('audio').play();
        }, false);
    }
    </script>

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    merci c ok

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction reduire texte dans boucle foreach
    Par nanou22 dans le forum Langage
    Réponses: 2
    Dernier message: 01/09/2011, 22h11
  2. [MySQL] Insertion dans boucle foreach
    Par fluxx dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 10/08/2011, 16h26
  3. [2005] Data Flow dans boucle Foreach
    Par JB_paris dans le forum SSIS
    Réponses: 4
    Dernier message: 23/01/2009, 08h23
  4. Insérer puces (UL-LI) dans boucle foreach PHP
    Par RENAUDER dans le forum Langage
    Réponses: 1
    Dernier message: 21/01/2009, 11h18
  5. Problème commande do dans boucle foreach
    Par jchampen dans le forum Langage
    Réponses: 5
    Dernier message: 23/10/2008, 14h56

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