Ouvrir popup en boucle [Résolu]

zlatan40 42 Messages postés dimanche 20 février 2011Date d'inscription 1 avril 2018 Dernière intervention - 20 sept. 2009 à 17:46 - Dernière réponse : zlatan40 42 Messages postés dimanche 20 février 2011Date d'inscription 1 avril 2018 Dernière intervention
- 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
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 20 sept. 2009 à 20:39
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 -

Merci kohntark 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de kohntark
DarkM60 37 Messages postés dimanche 15 mai 2005Date d'inscription 21 septembre 2009 Dernière intervention - 20 sept. 2009 à 19:30
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
zlatan40 42 Messages postés dimanche 20 février 2011Date d'inscription 1 avril 2018 Dernière intervention - 20 sept. 2009 à 19:52
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
DarkM60 37 Messages postés dimanche 15 mai 2005Date d'inscription 21 septembre 2009 Dernière intervention - 20 sept. 2009 à 21:23
0
Merci
Oh, je n'avais pas fait attention au nom du popup ! Bien vu Kohntark !
Commenter la réponse de DarkM60
zlatan40 42 Messages postés dimanche 20 février 2011Date d'inscription 1 avril 2018 Dernière intervention - 20 sept. 2009 à 21:32
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
zlatan40 42 Messages postés dimanche 20 février 2011Date d'inscription 1 avril 2018 Dernière intervention - 21 sept. 2009 à 11:33
0
Merci
up
Commenter la réponse de zlatan40
DarkM60 37 Messages postés dimanche 15 mai 2005Date d'inscription 21 septembre 2009 Dernière intervention - 21 sept. 2009 à 15:09
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
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 21 sept. 2009 à 18:03
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
zlatan40 42 Messages postés dimanche 20 février 2011Date d'inscription 1 avril 2018 Dernière intervention - 22 sept. 2009 à 21:51
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.