[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Передача параметра из php в js
kopoba
Подскажите, пожалуйста, как передать из php из цикла значение пути к картинке. Под каждой картинкой ссылка preview.
Ее нужно как-то связать с соответствующей картинкой, чтобы при клике на ссылку preview в js передавался путь к этой картинке. Вот что есть, но оно ничего не делает =(

Код

# <script language="javascript">
#  function bgchange(background){
#  //var path1=document.form1.checkcounter.value;
#  
#  document.body.style.backgroundImage='url(background)';
#  document.body.style.backgroundRepeat='repeat';
#  }
#  </script>


PHP
# <?    $counter = 0; $maxcounter = 0;
#      foreach($Photos as $n=>$Img)
#      {
#          echo '<div><a href="'.$Img['url'].'" target=_blank class="highslide" onclick="return hs.expand(this)">
#                  <IMG SRC='.$Img['url'].' height="200" width="198" hspace="10" vspace="10"></a></div>';
#                  echo '<a href="#" onClick="bgchange('.$Img['url'].')">preview</a>';
#          print "<center><b>".$Img['url']."</b>    ";
#          print "<input type=checkbox name='checkcounter' value=0>";
#          print "<input type=hidden  name='hiddencounter' value=".$Img['url'].">";
#          $counter++; $maxcounter=$counter;
#      }
#      print "<input type=hidden  name='hiddenmax' value=$maxcounter>";
#  




Спустя 18 минут, 54 секунды (19.06.2009 - 13:27) glock18 написал(а):
Код
<script type="text\javascript">
var myimage = '<?php echo $myimage;?>';
</script>


это надо на сервере воткнуть.
на клиенте у тебя будет переменная myimage с нужным значением.

Спустя 19 минут, 6 секунд (19.06.2009 - 13:46) kopoba написал(а):
Не совсем понял как это пристроить.
Все картинки уже выведены во фрейме. Сами они хранятся в папке img/.
И текст js, и php у меня в одном файле.
Я так понимаю, мне нужно что-то написать вместо onClick="bgchange('.$Img['url'].') (точнее вместо '.$Img['url'].'), потому что в таком виде php не передает путь в bgchange(background). Не пердает он его также, если написать, к примеру onClick="bgchange('img/4.jpg'). Работает зато, если написать
Код

# <script language="javascript">
#  function bgchange(background){
#  //var path1=document.form1.checkcounter.value;
#  
#  document.body.style.backgroundImage='url(img/4.jpg)'; //!
#  document.body.style.backgroundRepeat='repeat';
#  }
#  </script>

Спустя 8 минут, 5 секунд (19.06.2009 - 13:54) sergeiss написал(а):
Попробуй вместо
Код
document.body.style.backgroundImage='url(background)';

написать
Код
document.body.style.backgroundImage='url('+background+')';


ПХП всё передаёт. Только ты, похоже, неправильно обрабатываешь в ДжаваСкрипте.

Спустя 10 минут, 36 секунд (19.06.2009 - 14:05) glock18 написал(а):
вопрос ведь не в том как сделать, чтобы картинки заработали, а в том, чтобы передать переменную из php в js.

Вот я и говорю. там где вы выводите js, вставляете ту строчку, которую я привел. а потом используете в своих функциях переменные, которые объявили в этих строках (myimage в примере).

Спустя 1 минута, 33 секунды (19.06.2009 - 14:07) glock18 написал(а):
sergeiss, да, пожалуй, ты прав. все похоже на то, что проблема проще, чем изложена smile.gif

Спустя 41 минута, 13 секунд (19.06.2009 - 14:48) kopoba написал(а):
sergeiss, сделал как вы сказали.
Код

document.body.style.backgroundImage='url('+background+')';


В пхп не работает ни один из вариантов:
PHP
onClick="bgchange('.$Img['url'].')" //не меняется фон
onClick="bgchange(.$Img['url'].)" //syntax error
onClick="bgchange(".$Img['url'].")" //syntax error
onClick="bgchange(.$Img[/'url/'].)" //syntax error
onClick="bgchange(addslashes(.$Img['url'].))" //syntax error
onClick="bgchange(addslashes(.img/3.jpg.))" //не меняется фон
onClick="bgchange('.img/3.jpg.')" //syntax error
onClick="bgchange('img/3.jpg')" //syntax error
onClick="bgchange(img/3.jpg)" //не меняется фон


Из всех вариантов самые хорошие те, где не меняется фон. Может быть в js что-то неправильно?
Единственный работающий вариант, который мне удалось получить:

Код

<script language="javascript">
function bgchange(){

//document.body.style.backgroundImage='url('+background+')';
document.body.style.backgroundImage='url(img/3.jpg)';
document.body.style.backgroundRepeat='repeat';
}
</script>

onClick="bgchange()"


Так и знал, что погибну, расставляя кавычки =(((

Спустя 8 минут, 11 секунд (19.06.2009 - 14:56) twin написал(а):
Если скрипт в отдельном файле, нужно просто собрать всю инфрмацию, которую тут дали в одну кучу. А если все в одном, то тоже самое.


HTML
<script language="javascript">

function bgchange(){
var background='<?php echo $Img['url'] ?>';
document.body.style.backgroundImage='url('+background+')';
document.body.style.backgroundRepeat='repeat';
}
</script>


или так
HTML
<head>
<script type="text\javascript">
var background = '<?php echo $Img['url'] ?>';
</script>
<script type="text\javascript" src="подключаемый скрипт"></script>
</head>


подключаемый скрипт
HTML
function bgchange(){
document.body.style.backgroundImage='url('+background+')';
document.body.style.backgroundRepeat='repeat';
}

Спустя 7 минут, 22 секунды (19.06.2009 - 15:03) kopoba написал(а):
Все в одном файле, но, если сделать, как вы сказали, то есть если bgchange без параметра, то как понять по onClicky, на какую именно картинку (ссылку) я нажал?

Спустя 3 минуты, 29 секунд (19.06.2009 - 15:07) twin написал(а):
Так. И я попался. Точно все гораздо сложнее.
Ты сначала уясни, что php на сервере, а js дома. Сервер далеко и понятия не имеет, куда ты нажмешь. Что бы выбрать, надо передать все пути, потом уже выбирать из них.

Спустя 2 минуты, 33 секунды (19.06.2009 - 15:09) kopoba написал(а):
А все на сервере. И там же выполняется. Выделено место, там и лежит: и картинки, и пхп, и хтмл, и js, и css.

Вот пример того, как должно быть: http://www.dinpattern.com/index.php
Но у меня картинки в цикле выводятся, а не каждая со своим именем.

Спустя 10 минут, 58 секунд (19.06.2009 - 15:20) twin написал(а):
А какое это отношение имеет к JS? Там банальные ссылки. Причем со всеми путями сразу. Выводи их в цикле или как угодно. Суть от этого не меняется

Спустя 4 минуты, 8 секунд (19.06.2009 - 15:24) kopoba написал(а):
Дак ведь не работает так, как я наверху на самом написал)
Добавил
Код

document.body.style.backgroundImage='url('+background+')';

и тоже ничего.
А js мне для того, чтобы onClick обработать) Я по-другому не знаю как)

Спустя 7 минут, 27 секунд (19.06.2009 - 15:32) sergeiss написал(а):
Цитата (kopoba @ 19.06.2009 - 15:48)
В пхп не работает ни один из вариантов:
onClick="bgchange('.$Img['url'].')" //не меняется фон
onClick="bgchange(.$Img['url'].)" //syntax error
onClick="bgchange(".$Img['url'].")" //syntax error
onClick="bgchange(.$Img[/'url/'].)" //syntax error
onClick="bgchange(addslashes(.$Img['url'].))" //syntax error
onClick="bgchange(addslashes(.img/3.jpg.))" //не меняется фон
onClick="bgchange('.img/3.jpg.')" //syntax error
onClick="bgchange('img/3.jpg')" //syntax error
onClick="bgchange(img/3.jpg)" //не меняется фон

Среди всех вариантов нету правильного smile.gif Потому и ошибки

Надо
PHP
// или так
echo onClick="bgchange('{$Img['url']}')";
// или эдак - этот вариант предпочтительнее
echo onClick="bgchange('".$Img['url']."')"


А вообще, во всех браузерах есть волшебная возможность: посмотреть, какой код в итоге ты получил с сервера. Например, в Опере это Ctrl+F3. И по этому коду можно понять, что же ты не так сделал в ПХП.

Спустя 4 минуты, 53 секунды (19.06.2009 - 15:37) twin написал(а):
Не нужно тебе онклик никакой
PHP
echo '<a href="'.$Img['url'].'" ><img src="'.$pic.'" border="0" /></a>';

Спустя 4 минуты, 40 секунд (19.06.2009 - 15:41) kopoba написал(а):
PHP
echo '<center><a href="#" onClick="bgchange('".$Img['url']."')">preview</a> | ';
и
echo '<center><a href="#" onClick="bgchange('{.$Img['url'].}')">preview</a> | ';


выдает синтаксическую ошибку, либо анэкспэктэд '", либо анэкспэктэд {.

Спустя 4 минуты, 57 секунд (19.06.2009 - 15:46) sergeiss написал(а):
"Я фигею, дорогая редакция" (с)
Сравни расстановку скобок и кавычек у меня (я ранее немного погорячился smile.gif, тут исправляюсь):

PHP
echo "onClick=\"bgchange('{$Img['url']}')\"";
// или эдак - этот вариант предпочтительнее
echo "onClick=\"bgchange('".$Img['url']."')\""


И у себя:
PHP
echo '<center><a href="#" onClick="bgchange('".$Img['url']."')">preview</a> | ';
и
echo 
'<center><a href="#" onClick="bgchange('{.$Img['url'].}')">preview</a> | ';


Да еще twin предлагает другой вариант... Его ты пробовал?

Спустя 6 минут, 33 секунды (19.06.2009 - 15:53) kopoba написал(а):
sergeiss
Это я скопировал не то) Я просто перепробовал все варианты с точечками, с фигурными скобочками и с кавычками, и скопировал не тот. Во всех вариантах синтаксическая ошибка.

Спустя 4 минуты, 3 секунды (19.06.2009 - 15:57) sergeiss написал(а):
А не надо пробовать все варианты... Надо написать один, правильный.

Например, вот этот; и можешь добавить внутрь то, что тебе нужно еще, только добавь правильно!!! :

PHP
echo "onClick=\"bgchange('".$Img['url']."')\"";

Спустя 3 минуты, 16 секунд (19.06.2009 - 16:00) kopoba написал(а):
twin
А как это связать с установкой фонового изображения?
В вашей строке сама картинка - ссылка, а у меня ссылка под картинкой, а с картинкой она связана только тем, что они обрабатываются в одинаковом проходе цикла. Как их увязать, чтобы было понятно под какой картинкой нажата ссылка?

Спустя 3 минуты, 59 секунд (19.06.2009 - 16:04) glock18 написал(а):
Цитата (sergeiss @ 19.06.2009 - 12:46)
"Я фигею, дорогая редакция" (с)

+1000 biggrin.gif

Ну я сумасошелбы так спокойно объяснять.

Цитата (kopoba @ 19.06.2009 - 12:53)
sergeiss
Это я скопировал не то) Я просто перепробовал все варианты с точечками, с фигурными скобочками и с кавычками, и скопировал не тот. Во всех вариантах синтаксическая ошибка.


kopoba, вы ради интереса посмотрите "как надо", а не гадайте на кофейной гуще. Вам уже столько раз озвучили как надо и как можно, а вы донеприличия бесполезно применили каждый из этих вариантов.

Спустя 56 секунд (19.06.2009 - 16:05) twin написал(а):
Если все таки не нужно переходов, то return false еще.
PHP
echo '<center><a href="#" onClick="bgchange('.$Img['url'].'); return false" >preview</a> | ';

Спустя 8 минут, 59 секунд (19.06.2009 - 16:14) kopoba написал(а):
Пишу вот так

PHP
echo "<center><a href="#" onClick=\"bgchange('".$Img['url']."')\">preview</a> | ";
echo "<center><a href="#" onClick=\"bgchange('{$Img['url']}')\">preview</a> | ";
echo "<center><a href="#" onClick=\"bgchange('".$Img['url']."')\">preview</a> | ";


Во всех вариантах синтаксическая ошибка unexpected T_PRINT.

На всякий случай вот что получилось:

Код

<script language="javascript">
function bgchange(background){
//var path1=document.form1.checkcounter.value;
//var background='<?php echo $Img['url'] ?>';

document.body.style.backgroundImage='url('+background+')';
//document.body.style.backgroundImage='url(img/3.jpg)';
document.body.style.backgroundRepeat='repeat';
}
</script>

PHP
<?    $counter 0$maxcounter 0;
    foreach(
$Photos as $n=>$Img)
    {
                if (
$Img['url']!="$ImgDir/4.jpg") {
                
$img_params getimagesize($Img['url']);
        
$width $img_params[0];
        
$height $img_params[1];
        echo 
'<div><a href="'.$Img['url'].'" target=_blank class="highslide" onclick="return hs.expand(this)"><IMG SRC='.$Img['url'].'  
                height="200" width="198" hspace="10" vspace="10"></a></div>'
;
                
//height='.$height.' width='.$width.' hspace="10" vspace="10"></a></div>';
echo "<center><a href="#" onClick=\"bgchange('".$Img['url']."')\">preview</a> | ";
                
print "<b>".$Img['url']."</b>";
        print 
"<input type=checkbox name='checkcounter' value=0>";
        print 
"<input type=hidden  name='hiddencounter' value=".$Img['url'].">";
        print 
"<br>";
        
$counter++; $maxcounter=$counter;
    }}
    print 
"<input type=hidden  name='hiddenmax' value=$maxcounter>";


и напомню, что я идиот. sad.gif

Спустя 3 минуты, 35 секунд (19.06.2009 - 16:18) sergeiss написал(а):
Ну вот ты хотя бы обрати внимание на то, что подсветка синтаксиса тут, на форуме, как-то "не так" твой текст подсвечивает!!!!!!! ("Спокойно Вася, спокойно...." laugh.gif laugh.gif laugh.gif )

У тебя
PHP
echo "<center><a href="#" onClick=\"bgchange('".$Img['url']."')\">preview</a> | ";

а надо
PHP
echo "<center><a href=\"#\" onClick=\"bgchange('".$Img['url']."')\">preview</a> | ";

Спустя 6 минут, 3 секунды (19.06.2009 - 16:24) kopoba написал(а):
PHP
echo '<center><a href="#" onClick="bgchange('.$Img['url'].'); return false" >preview</a> | ';


вот с такой строчкой стало работать, фон по ссылкам не меняется, но зато ошибок синтаксических нет. IE по-прежнему выдает в строке статуса значок, а там ошибка на первой строке js
function bgchange(background){
"Ожидается наличие ')'"

Спустя 4 минуты, 35 секунд (19.06.2009 - 16:28) kopoba написал(а):
sergeiss
Вот с такой строчкой стало работать!
PHP
echo "<center><a href=\"#\" onClick=\"bgchange('".$Img['url']."')\">preview</a> | ";

и даже фон менять на зеленый, то есть на
Код

document.body.style.color='#FFFF00';

который поставил в случае отсутсвия картинки.
Это очень хорошо) Осталось только, чтобы фон на картинку менялся, то есть в js правильный путь приходил.

Спустя 2 минуты, 17 секунд (19.06.2009 - 16:31) kopoba написал(а):
Ой, ребятушки!!!! Солнышки вы мои хорошие, заработало!!! ВСЕ ЗАРАБОТАЛО!!!
Спасибо вам прегигантское, боженьки вы пхпэшные. Я теперь непомерно счастлив! Накуплю лукошек сейчас ягодных целое ведро! Ох спасибо, ох хорошо-то как мне!

Спустя 40 секунд (19.06.2009 - 16:31) kopoba написал(а):
Ну блин.. ну вы крутые черти.. я прямо не могу на вас нарадоваться..

Спустя 5 минут, 50 секунд (19.06.2009 - 16:37) sergeiss написал(а):
"Спасибо сгущёнкой не пахнет" (с), как сказал недавно один товарищ на работе smile.gif

А вообще, я настойчиво рекомендую скачать хэлп по ПХП (ссылка у меня в подписи) и очень внимательно почитать его.

Спустя 2 часа, 33 минуты, 58 секунд (19.06.2009 - 19:11) kopoba написал(а):
А я сгущенку доел вчера, мне кушать было нечего =(
А справок я скачал три штуки, но уж больно препод говнистенький - не любит меня, глупого =(
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.