Ouvrir popup en boucle [Résolu]

Messages postés
42
Date d'inscription
dimanche 20 février 2011
Statut
Membre
Dernière intervention
1 avril 2018
- - Dernière réponse : zlatan40
Messages postés
42
Date d'inscription
dimanche 20 février 2011
Statut
Membre
Dernière intervention
1 avril 2018
- 22 sept. 2009 à 21:51
Bonjour
Je réalise un petit script qui ouvre une popups pour chaque lien se situant dans un fichier texte. J'ai réalisé ce code mais seul le dernier lien de la liste s'ouvre en popup lorsque j'éxécute le script.
Comment puis-je faire ?
Merci de d'avance !
<SCRIPT type="text/javascript">
function ouvre_popup(page) {
window.open(page,"nom_popup","menubar=no, status=no, scrollbars=no, menubar=no");
}
</SCRIPT>
<?php
$monfichier = fopen('liste.txt', 'r+');

echo '<script type="text/javascript">';
while($lien = fgets($monfichier))
{
$lien = substr($lien, 0, 37);
echo 'ouvre_popup("'.$lien.'");';
}
echo '</script>';

fclose($monfichier);
?>
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
22
3
Merci
Salut,

Je pense plutôt que tes liens s'ouvrent correctement, le problème est qu'ils le sont dans une même fenêtre (qui s'appelle ici nom_popup)
Si tu veux ouvrir chaque lien ds une fenêtre différente il faut la nommer différemment.
Soit tu passes un second argument à ta fonction pour le nom de la fenêtre, soit tu gères ça à l'intérieur de ta fonction. Tout dépends le but en fait (si tu veux contrôler la fenêtre une fois ouverte par exemple)

Cordialement,


Kohntark -

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Commenter la réponse de kohntark
Messages postés
37
Date d'inscription
dimanche 15 mai 2005
Statut
Membre
Dernière intervention
21 septembre 2009
0
Merci
Déjà rajoute à la fin de ton echo 'ouvre_popup("'.$lien.'");'; un petit \n pour avoir un retour à la ligne (echo 'ouvre_popup("'.$lien.'");',"\n";)

Si ma mémoire est bonne en fait... Fgets récupère aussi le saut de ligne à la fin de chaque ligne dans ton fichier.

Donc pour chaque lien il prend le lien ET le saut de ligne. Mais pas pour le dernier. Donc seul le dernier est bon.

Essaye ça pour voir :

while($lien = fgets($monfichier))
{
$lien = substr($lien, 0, 37);
$lien = str_replace("\n","",$lien);
echo 'ouvre_popup("'.$lien.'");';
}


(Et le substr sert à quoi ? Et pense à indenter ton code :p)
Commenter la réponse de DarkM60
Messages postés
42
Date d'inscription
dimanche 20 février 2011
Statut
Membre
Dernière intervention
1 avril 2018
0
Merci
merci pour ta réponse mais le problème ne vient pas de là, en fait le substr réglait déjà le problème du \n car tout mes liens font 37 caractères.
Mais je vais quand même prendre ta solution.
Donc le problème n'est pas réglé, je n'est toujours que le dernier lien qui se lance.
Commenter la réponse de zlatan40
Messages postés
37
Date d'inscription
dimanche 15 mai 2005
Statut
Membre
Dernière intervention
21 septembre 2009
0
Merci
Oh, je n'avais pas fait attention au nom du popup ! Bien vu Kohntark !
Commenter la réponse de DarkM60
Messages postés
42
Date d'inscription
dimanche 20 février 2011
Statut
Membre
Dernière intervention
1 avril 2018
0
Merci
Merci Kohntark !
C'était bien cela, j'ai rajouté un argument à la fonction et le tour est joué.
Cependant j'ai un nouveau soucis, je voudrais en ouvrir 1 toute les 10 sec par exemple. J'utilise pour cela la fonction time() mais rien ne s'ouvre avec ce code :

<script type="text/javascript">
function ouvre_popup(page,nom_popup)
{
    window.open(page,nom_popup,"menubar=no, status=no, scrollbars=no, menubar=no");
}

<?php
$temps = time();
$monfichier = file('liste.txt');
foreach($monfichier as $lien)
{
   while(time()-$temps <= 10)
   {
$temps = time();
$lien = str_replace("\n","",$lien);
echo "\n".'ouvre_popup("'.$lien.'","'.$lien.'");';
}
}
?>
</script>
Commenter la réponse de zlatan40
Messages postés
42
Date d'inscription
dimanche 20 février 2011
Statut
Membre
Dernière intervention
1 avril 2018
0
Merci
up
Commenter la réponse de zlatan40
Messages postés
37
Date d'inscription
dimanche 15 mai 2005
Statut
Membre
Dernière intervention
21 septembre 2009
0
Merci
Tu dois bien comprendre que PHP est éxécuté côté SERVEUR et que javascript est exécuté côté CLIENT.

En gros, ton time() ne te sert à rien ici, il va juste faire "attendre" le serveur, mais les popups seront tous affichés en même temps.

Si tu veux vraiment faire une attente entre les popups il faut utiliser les fonctions d'attente en javascript (Renseigne toi sur setTimeout, ça créé une minuterie)


Tu pourrais tenter quelque chose comme ça :

<script type="text/javascript">
function ouvre_popup(page,nom_popup)
{
    window.open(page,nom_popup,"menubar=no, status=no, scrollbars=no, menubar=no");
}

<?php
$i = 0;
$monfichier = file('liste.txt');
foreach($monfichier as $lien)
{
$milisecondes = ($i * 10000);
$lien = str_replace("\n","",$lien);
echo "\n".'setTimeout("ouvre_popup()",'.$milisecondes.',"'.$lien.'","'.$lien.'");';
$i++;
}
?>

</script>


Dis moi ce que ça donne, je n'ai pas testé, mais l'idée c'est d'utiliser setTimeout.
Commenter la réponse de DarkM60
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
22
0
Merci
ton time() ne te sert à rien ici, il va juste faire "attendre" le serveur

Heu, non, il ne va rien faire attendre du coup. time() retourne un timestamp unix, rien d'autre. Il aurait fallu utiliser sleep, mais c'est une mauvaise idée.

Je ne connais pas le contexte mais il y a de fortes chances que ces ouvertures de popups soient également une mauvaise idée :
- tu vas faire fuir tes visiteurs avec des popups non sollicitées
- tel que tu procèdes n'importe quel anti popup va les bloquer


Cordialement,


Kohntark -
Commenter la réponse de kohntark
Messages postés
42
Date d'inscription
dimanche 20 février 2011
Statut
Membre
Dernière intervention
1 avril 2018
0
Merci
Merci pour vos réponses, j'ai trouvé en fait c'est en JS avec settimeout() que cela fonctionne.
Pour info ce script n'a pas pour but de diffuser des pubs donc cela ne fera pas fuir les visiteurs :)
Je souhaiterai maintenant fermer la popup qui est ouverte avant d'en réouvrir une nouvelle. J'ai essayer avec le nom de la popup mais ce n'est pas bon.
$temps = 0;
$i = 0;
$monfichier = file('liste.txt');
foreach($monfichier as $lien)
{
$i++;
$lien = trim($lien);
echo "\n".'setTimeout(\'ouvre_popup("'.$lien.'","fenetre'.$i.'");\','.$temps.');'."\n";    
        $temps+=10000;
        echo 'fenetre'.$i.'.close();';	
}
Commenter la réponse de zlatan40

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.