Javascript + php à l'aide !!!!

Résolu
alex1025 Messages postés 104 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 8 décembre 2007 - 5 août 2004 à 22:45
alex1025 Messages postés 104 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 8 décembre 2007 - 6 août 2004 à 22:33
Hell !!
Bon là je désespere je teste mes codes mais rien ne marche j ai pas du partir dans le bon sens
je vous explique
j ai un script javascript que je veux automatiser grace au php

j ai un while qui va me chercher les photos que j ai
et il faut que pour chaque photos a la fin je me retrouve avec un truc ecrit comme ça

leftrightslide[0]='[http:// ]'
leftrightslide[1]='[http:// ]'
leftrightslide[2]='[http:// ]'
leftrightslide[3]='[http:// ]'
leftrightslide[4]='[http:// ]'

ça va de 0 à mon nombre de photo

ma variable $max est mon nombre total de photos
et ma boucle while comme ça

$i=0;
while($i<$max)

S'il vous plait à l'aide !!!

14 réponses

aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009
6 août 2004 à 22:19
oui car dans ta boucle while à la fin de celle-ci tu as encore oublié d'incrémenter $i (comme à ton 3e post)

de plus si dans ton tableau de photo tu as par exemple 500 photos, les indices du tableau $photo (apres l'explode) vont de 0 à 499, et $max vaut 499...

jusque la rien d'anormal

sauf que dans ton if tu fais if($photo[($i+2)] == 1)

donc quand $i vaut 498 ($i+2) vaut 500 mais $photo[500] n'existe pas (car les indices vont de 0 à 499)... de plus $photo contient le nom de tes images et donc ne peut pas etre égal à 1...

je pense plutot que tu voulais vérifier que l'indice ($i+2) était valable donc c'est plutot if(isset($photo[($i+2)])==1)
comme ça tu évite de dépasser l'indice (a noter que le ==1 n'est pas nécessaire puisque isset renvoie true ou false)

donc la modification de ta boucle while apres ces deux modifs devient :

while($i<$max)
{
$img=$config[album_dir]."/".str_replace(".jpg",".jpg",$photo[$i]);
$img_tiny=$config[album_dir]."/".str_replace(".jpg","_tiny.jpg",$photo[$i]);

if(isset($photo[($i+2)]))
{

$slide.="leftrightslide[$num]\=''\n";
$num=$num+1;
}
$i++; /* ne pas oublier d'incrémenter $i sinon ça boucle sans fin car $i vaut toujours 0 et est donc toujours inférieur à max.....*/
}
echo "$slide";

voila normalement tu ne devrais plus avoir d'erreur de temps d'exécution du script... (sauf si tu as 10 000 photos bien sur)
-------------
Aurél :big)
3
alex1025 Messages postés 104 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 8 décembre 2007
6 août 2004 à 22:33
En un mot merci merci emerci !!!
t es au top en fait voila le code qui marche final

while($i<$max)
{
$img=$config[album_dir]."/".str_replace(".jpg",".jpg",$photo[$i]);
$img_tiny=$config[album_dir]."/".str_replace(".jpg","_tiny.jpg",$photo[$i]);

if($photo[($i+2)]==1)
{

$slide.="leftrightslide[$num]=''\n";
$num=$num+1;
}
$i++; /* ne pas oublier d'incrémenter $i sinon ça boucle sans fin car $i vaut toujours 0 et est donc toujours inférieur à max.....*/
}
echo "$slide";


Sérieux merci
l'histoire du if($photo[($i+2)]==1) c est par rapport au pipes et qui va sélectionner que les photos car dans ce champs y avait pas que les phtos y avait des commentaire et un numero

Bref t'es super merci pour tout !
3
alex1025 Messages postés 104 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 8 décembre 2007
5 août 2004 à 22:56
$img est ma variable pour les images
0
alex1025 Messages postés 104 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 8 décembre 2007
6 août 2004 à 00:07
Actuellement j ai fait ça

//on affiche les photos ici
$photo=explode("||",$photo);

echo"<table border=0 cellpadding=0 cellspacing=0 align=center width=400>
<tr>";
$max=(count($photo)-1);
$i=0;
$i=0;
while($i<$max)
{
$img=$config[album_dir]."/".str_replace(".jpg",".jpg",$photo[$i]);
$img_tiny=$config[album_dir]."/".str_replace(".jpg","_tiny.jpg",$photo[$i]);

if($photo[($i+2)]==1)
{
$num=0;
$slide.="leftrightslide[$num]\=''\n";
$num++;
}}
echo "$slide";

mais ça me fait Fatal error: Maximum execution time of 30 seconds exceeded in /home/site/www/test.php

Au secours je pete un cable !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009
6 août 2004 à 01:06
yep oublie pas d'incrémenter ton $i dans ton while sinon c boucle infinie assurée ;)

voila
-------------
Aurél :big)
0
alex1025 Messages postés 104 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 8 décembre 2007
6 août 2004 à 01:24
ok c'est fait par contre toujours la meme erreur

Bon je vous donne le script javascript:

<code><script language="JavaScript1.2">

/*
Conveyor belt slideshow script-
© Dynamic Drive (www.dynamicdrive.com)
For full source code, 100's more DHTML scripts, and Terms Of Use, visit dynamicdrive.com
*/

//Specify the slider's width (in pixels)
var sliderwidth="300px"
//Specify the slider's height
var sliderheight="150px"
//Specify the slider's slide speed (larger is faster 1-10)
var slidespeed=3
//configure background color:
slidebgcolor="#EAEAEA"

//Specify the slider's images
var leftrightslide=new Array()
var finalslide=''
leftrightslide[0]='[http:// ]'
leftrightslide[1]='[http:// ]'
leftrightslide[2]='[http:// ]'
leftrightslide[3]='[http:// ]'
leftrightslide[4]='[http:// ]'

////NO NEED TO EDIT BELOW THIS LINE////////////

var copyspeed=slidespeed
leftrightslide='<nobr>'+leftrightslide.join(" ")+'</nobr>'
var iedom=document.all||document.getElementById
if (iedom)
document.write(''+leftrightslide+'')
var actualwidth=''
var cross_slide, ns_slide

function fillup(){
if (iedom){
cross_slide=document.getElementById? document.getElementById("test2") : document.all.test2
cross_slide2=document.getElementById? document.getElementById("test3") : document.all.test3
cross_slide.innerHTML=cross_slide2.innerHTML=leftrightslide
actualwidth=document.all? cross_slide.offsetWidth : document.getElementById("temp").offsetWidth
cross_slide2.style.left=actualwidth+20+"px"
}
else if (document.layers){
ns_slide=document.ns_slidemenu.document.ns_slidemenu2
ns_slide2=document.ns_slidemenu.document.ns_slidemenu3
ns_slide.document.write(leftrightslide)
ns_slide.document.close()
actualwidth=ns_slide.document.width
ns_slide2.left=actualwidth+20
ns_slide2.document.write(leftrightslide)
ns_slide2.document.close()
}
lefttime=setInterval("slideleft()",30)
}
window.onload=fillup

function slideleft(){
if (iedom){
if (parseInt(cross_slide.style.left)>(actualwidth*(-1)+8))
cross_slide.style.left=parseInt(cross_slide.style.left)-copyspeed+"px"
else
cross_slide.style.left=parseInt(cross_slide2.style.left)+actualwidth+30+"px"

if (parseInt(cross_slide2.style.left)>(actualwidth*(-1)+8))
cross_slide2.style.left=parseInt(cross_slide2.style.left)-copyspeed+"px"
else
cross_slide2.style.left=parseInt(cross_slide.style.left)+actualwidth+30+"px"

}
else if (document.layers){
if (ns_slide.left>(actualwidth*(-1)+8))
ns_slide.left-=copyspeed
else
ns_slide.left=ns_slide2.left+actualwidth+30

if (ns_slide2.left>(actualwidth*(-1)+8))
ns_slide2.left-=copyspeed
else
ns_slide2.left=ns_slide.left+actualwidth+30
}
}

if (iedom||document.layers){
with (document){
document.write('')
if (iedom){
write('
')
write('
')
write('

')
write('

')
write('

')
}
else if (document.layers){
write('')
write('<layer name="ns_slidemenu2" left=0 top=0 onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed"></layer>')
write('<layer name="ns_slidemenu3" left=0 top=0 onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed"></layer>')
write('')
}
document.write('')
}
}
</script>

Free DHTML scripts provided by

Dynamic Drive

Ce qui a en rouge faut que je mette mes images qui sont trouvé dans ma base de donnée en fonction de l'id
Une idée pour me faire marché ça? je pete un cable je vais tout jeter lol !
0
aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009
6 août 2004 à 01:32
et ta base elle est comment? c juste les noms de l'image que tu dois changer dans la balise src en récupérant tes images dans la base et en mettant leur nom dans src?
-------------
Aurél :big)
0
alex1025 Messages postés 104 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 8 décembre 2007
6 août 2004 à 01:39
en fait mon système marchait quand j'affichait les images dans un tableau tout simple
la le script permet de faire un effet bien sympa
bien sur je veux que ça reste automatisé
je te donne l'ancien script a moi qui marche parfaitement
et je souhaite adapter l'affichage pour que ça marche dans ce truc mais je galère...galère...galère..

<code>

//on affiche les photos ici
$photo=explode("||",$photo);

echo"\";
$max=(count($photo)-1);
$i=0;
while($i<$max)
{
$img=$config[album_dir].\"/\".str_replace(\".jpg\",\".jpg\",$photo[$i]);
$img_tiny=$config[album_dir].\"/\".str_replace(\".jpg\",\"_tiny.jpg\",$photo[$i]);
if($photo[($i+2)]==1)
{ echo\"
";
echo $photo[($i+1)];}

if((($i+3)%6==0)&&($i<>0))
{
echo"

<table border=0 cellpadding=0 cellspacing=0 align=center width=400>
----

";
}
else
{
echo", \";
}
$i=$i+3;
}
</td>

A l'aide !
ps: y a un explode sur $photo au début car dans la base le champ photo y a des pipes style nom_image.jpg||commentaire||0ou1||ainsi desuite la meme chose
0
aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009
6 août 2004 à 02:02
et ton bout de script quit te faisais ton lefrightside il te servait pas a remplacer tes lignes en rouges et donc à fonctionner?
-------------
Aurél :big)
0
alex1025 Messages postés 104 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 8 décembre 2007
6 août 2004 à 11:24
beh si mais mon script ne marche pas t as pas une idée?
0
aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009
6 août 2004 à 11:52
je l'ai pas testé car g pas d'images... je regarde ça si g le temps en début d'apresm... donc je prends ton code javascript de dynamicdrive et je remplace les lignes en rouge par ton script qui génère ton leftrightside (3e post) c ça?
-------------
Aurél :big)
0
alex1025 Messages postés 104 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 8 décembre 2007
6 août 2004 à 11:56
oui c'est ça mais ça c'est une portio de ma page
y a bien sur la connection a la base de donée et donc l'attribution des valeurs aux variables.

Non il me faut juste que tu me fasse une boucle qui me permettrait de crer ce qui a en rouge

car dans la boucle ça passe chaque image mais bon a la fin il faut que je me retrouve avec toute la stucture en rouge et ça je sais pas faire.

Essaye juste de me faire un script en php qui pourrait créer ce qu'il y a en rouge en fait sinon tu vas perdre trop de temps à tester.

Là je suis désesperé

Merci pour ton aide
0
aurelien0306 Messages postés 181 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 2 mars 2009
6 août 2004 à 12:39
ben ton 3e post le fait tout seul j'ai fait la simulation avec ton script php et ta boucle while qui est dans ton 3e post et j'obtiens bien des lignes du type lefrightside[..] = ...
donc c bon tu a juste a remplacer tes lignes en rouges par le bout de script php que tu as fait au 3e post
et ça marche nickel...

sauf quand ton script au 3e post il faut que tu incrémente tes valeur en tre les crochets de leftrightside...

-------------
Aurél :big)
0
alex1025 Messages postés 104 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 8 décembre 2007
6 août 2004 à 19:41
now j'ai fait ça

//on affiche les photos ici
$photo=explode("||",$photo);

echo"<table border=0 cellpadding=0 cellspacing=0 align=center width=400>
<tr>";
$max=(count($photo)-1);
$num=0;
$i=0;
while($i<$max)
{
$img=$config[album_dir]."/".str_replace(".jpg",".jpg",$photo[$i]);
$img_tiny=$config[album_dir]."/".str_replace(".jpg","_tiny.jpg",$photo[$i]);

if($photo[($i+2)]==1)
{ 

$slide.="leftrightslide[$num]\=''\n";
$num=$num+1;
}}
echo "$slide";



mais j ai ça comme erreur

Fatal error: Maximum execution time of 30 seconds exceeded in /home/site/www/test.php on line ...
0
Rejoignez-nous