[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: получить случайное число в php с jquery и java
skolozhabskiy
добрый день!

нужно получить случайное число.

вот код страницы test.php php:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Untitled Document</title>
<
script src="http://code.jquery.com/jquery-latest.js"></script>

<
script type="text/javascript">
$(document).ready(function(){
function rand(max, min) {
if ( max ) {
return Math.floor(Math.random() * (max - min + 1)) + min;
} else {
return Math.floor(Math.random() * (min + 1));
}
}


function _imgUpdate() {
var randomnumber = rand(0,7);
$('#imgbox').get('test.php', { poster : randomnumber }, function(data) { alert(data); });
}
window.setInterval( _imgUpdate, 1000 );
});
</
script>
</
head>

<
body>

<?php
$poster = isset($_GET['poster']) ? $_GET['poster'] : 0;
?>
<div id="imgbox">number of poster = <?php echo $poster; ?></div>

</
body>
</
html>


но он не работает.

подскажите где моя ошибка?
почему я не могу получить значение переменной $poster.
значение этой перменной мне обязательно нужно на этой же (test.php) странице.

спасибо за помощь и поддержку.



Спустя 9 минут, 20 секунд (9.05.2011 - 18:29) skolozhabskiy написал(а):
такой вариант тоже не работает:


<script type="text/javascript">
$(document).ready(function(){
$(function() {
function rand(max, min) {
if ( max ) {
return Math.floor(Math.random() * (max - min + 1)) + min;
} else {
return Math.floor(Math.random() * (min + 1));
}
}


setInterval(function () {
var randomnumber = rand(0,7);
$('#imgbox').get('test.php', { poster : randomnumber }, function(data) { alert(data); });
}, 1000 );
});
});
</
script>

Спустя 9 секунд (9.05.2011 - 18:29) alex12060 написал(а):
Функции должны объявляться до этого:

$(document).ready(function(){

Спустя 2 минуты (9.05.2011 - 18:31) skolozhabskiy написал(а):
alex12060, пожалуйста приведете пример, я не понял вашего пояснения.

такой вариант тоже не работает:


<script type="text/javascript">
function rand(max, min) {
if ( max ) {
return Math.floor(Math.random() * (max - min + 1)) + min;
} else {
return Math.floor(Math.random() * (min + 1));
}
}

$(document).ready(function(){
$(function() {
setInterval(function () {
var randomnumber = rand(0,7);
$('#imgbox').get('test.php', { poster : randomnumber }, function(data) { alert(data); });
}, 1000 );
});
});
</
script>


извините по тексту досадная опечатка - надо <script type="text/javascript">

спасибо за любую помощь.

Спустя 15 часов, 24 минуты (10.05.2011 - 09:55) skolozhabskiy написал(а):
доброе утро,

прошу профессионалов подсказать где ошибка в моем коде и возможные варианты вывода информации в переменную php по данному коду. если не затруднит с примерами по приведенному коду. выполнение приведенного мною кода, в alert показывает, что переменной $poster присваиваются новые значения, но она почему-то по ходу кода реально (без alert!) не визуализируется. почему?

спасибо за любую помощь.

Спустя 1 час, 39 минут, 37 секунд (10.05.2011 - 11:35) skolozhabskiy написал(а):
я задал слишком сложный вопрос?
просмотров более полусотни, а ответов никаких.
профессионалы, как решить данную проблему?
все же привел и полные коды и свои мысли.
где ошибка?

спасибо.

Спустя 6 минут, 57 секунд (10.05.2011 - 11:42) sharki написал(а):
skolozhabskiy
Данная функция rand(max, min) при её вызове всегда выполняется? т.е ошибок она не вызывает, и дает то, что нужно?

Спустя 1 час, 55 минут, 55 секунд (10.05.2011 - 13:38) skolozhabskiy написал(а):
все работает отлично. в алерт я вижу нормальный вывод результата ответа от сервера, но не могу визуализировать ответ и получить значение переменной php для дальнейшей обработки без алерта. а он мне уже не нужен. что изменить или добавть в коде.

спасибо.

Спустя 42 минуты, 55 секунд (10.05.2011 - 14:21) sharki написал(а):
как я понял данный скрипт работает отлично, данные на сервер нормально отправляются, так же нормально и приходят в переменную data.
Что должно прийти с сервера? Как вы выдаете результат в PHP скрипте, хотя бы кусочек кода покажите

Спустя 36 минут, 9 секунд (10.05.2011 - 14:57) skolozhabskiy написал(а):
не только кусочек, а всю страницу я написал в первом посте. пожалуйста, посмотрите первый пост, чтобы заново не переписывать весь код. да, все отлично в data, только вывести я могу только увидев это в алерет, а мне нужно в конкретном коде, чтобы переменной было присвоено передаваемое значение.

спасибо

Спустя 6 минут, 54 секунды (10.05.2011 - 15:04) sharki написал(а):
skolozhabskiy

$.get('test.php', { poster : randomnumber }, function(data) { $('#imgbox').html(data); });


<?php
$poster = isset($_GET['poster']) ? $_GET['poster'] : 0;
?>
<div
id="imgbox">number of poster = <?php echo $poster; ?></div>


В твоем коде плохо то, что при каждом вызове и вставке значения, будет дублироваться <div id="imgbox"></div> в итоге будет такая бесконечная вложенность =)

Странная логика данного скрипта, тогда лучше прям сразу подставлять в ДИВ полученное число, а не делать лишние действия.

Спустя 1 час, 35 минут, 57 секунд (10.05.2011 - 16:40) skolozhabskiy написал(а):
спасибо, это работает, только я не понял как именно можно сразу вытащить из data нужное число и подставлять его в див? покажите примером, пожалуйста.

спасибо

Спустя 6 минут, 23 секунды (10.05.2011 - 16:46) sharki написал(а):
skolozhabskiy
Имеется введу без отправки на сервер. Т.е напрямую
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Untitled Document</title>
<script
src="http://code.jquery.com/jquery-latest.js"></script>

<script
type="text/javascript">
$(document).ready(function(){
function rand(max, min) {
if ( max ) {
return Math.floor(Math.random() * (max - min + 1)) + min;
} else {
return Math.floor(Math.random() * (min + 1));
}
}


function _imgUpdate() {
var randomnumber = rand(0,7);
$('#imgbox').html("number of poster ="+randomnumber);
}
window.setInterval( _imgUpdate, 1000 );
});
</script>
</head>

<body>

<div
id="imgbox">number of poster = 0</div>

</body>
</html>

Спустя 14 минут, 7 секунд (10.05.2011 - 17:00) skolozhabskiy написал(а):
так мне нужна переменная со значением изменяющимся с rand. так не получится. как-то ее нужно мне передать из java в php. вы мложете подсказать как?

спасибо за ответ

Спустя 1 минута, 39 секунд (10.05.2011 - 17:02) sharki написал(а):
skolozhabskiy
А ну тогда как и было с аяксом, больше никак

Спустя 2 минуты, 5 секунд (10.05.2011 - 17:04) skolozhabskiy написал(а):
но при вашем изменении кода страница как-то странно ведет себя - постоянно перезагружается и не фоном, с подвисанием например оперы. может есть еще путь синтаксиса, как вытянуть это значение из data

спасибо

Спустя 25 минут, 34 секунды (10.05.2011 - 17:30) sharki написал(а):
вот этого?
$.get('test.php', { poster : randomnumber }, function(data) { $('#imgbox').html(data); });

Спустя 26 минут, 31 секунда (10.05.2011 - 17:56) Guest написал(а):
при таком варианте :


$.get('test.php', { poster : randomnumber }, function(data) { $('#imgbox').html(data); });


через пару минут виснет браузер.

есть все же какое то решение как в фоновом режиме все же передать переменной php эти значения. метод чеез адресную строку не подходит. на аяксе это можно все же сделать?

Спасибо

Спустя 7 минут, 21 секунда (10.05.2011 - 18:03) sharki написал(а):
Смотри что получается, первую секунду он подгружает новый контент в див
Содержимое в контенте воот такое, и он сразу запускает свой интервал, получается уже двойной интервал, браузер ахиревает от этого, он опа, и еще раз этот кусок загрузил, получается у тебя на одной странице 1+(n+1)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Untitled Document</title>
<script
src="http://code.jquery.com/jquery-latest.js"></script>

<script
type="text/javascript">
$(document).ready(function(){
function rand(max, min) {
if ( max ) {
return Math.floor(Math.random() * (max - min + 1)) + min;
} else {
return Math.floor(Math.random() * (min + 1));
}
}


function _imgUpdate() {
var randomnumber = rand(0,7);
$('#imgbox').get('test.php', { poster : randomnumber }, function(data) { alert(data); });
}
window.setInterval( _imgUpdate, 1000 );
});
</script>
</head>

<body>

<?php

$poster = isset($_GET['poster']) ? $_GET['poster'] : 0;
?>
<div
id="imgbox">number of poster = <?php echo $poster; ?></div>

</body>
</html>


надо выносить в отдельный файл вот этот кусок

<?php
echo isset($_GET['poster']) ? $_GET['poster'] : 0;
?>

Спустя 1 минута, 40 секунд (10.05.2011 - 18:05) sharki написал(а):
skolozhabskiy
Ты понимаешь что у тебя страницы дублируются? Получается эффект направления видеокамеры на телевизор в тот момент когда она выводит изображение на этот же телевизор.

Спустя 6 минут, 5 секунд (10.05.2011 - 18:11) Guest написал(а):
я понимаю, но мне нужна эта переменная именно на этой странице. есть какой-то иной выход?

Спустя 2 минуты, 48 секунд (10.05.2011 - 18:14) skolozhabskiy написал(а):
и как тогда подключить вот так в первый файл второй с
<?php
echo isset($_GET['poster']) ? $_GET['poster'] : 0;
?>


<?php
include_once('test2.php');
?>


спасибо

Спустя 2 минуты, 51 секунда (10.05.2011 - 18:17) skolozhabskiy написал(а):
файл test2.php:


<?php
$poster = isset($_GET['poster']) ? $_GET['poster'] : 0;
?>


файл test1.php:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Untitled Document</title>
<
script src="http://code.jquery.com/jquery-latest.js"></script>

<
script type="text/javascript">
$(document).ready(function(){
function rand(max, min) {
if ( max ) {
return Math.floor(Math.random() * (max - min + 1)) + min;
} else {
return Math.floor(Math.random() * (min + 1));
}
}


function _imgUpdate() {
var randomnumber = rand(0,7);
$.get('test2.php', { poster : randomnumber }, function(data) { $('#imgbox').html($('#imgbox', data)); });
}
window.setInterval( _imgUpdate, 1000 );
});
</
script>
</
head>

<
body>

<?php
include_once('test2.php');
?>

<div id="imgbox">number of poster = <?php echo $poster; ?></div>
</
body>
</
html>


спасибо

Спустя 1 минута, 49 секунд (10.05.2011 - 18:19) sharki написал(а):
skolozhabskiy
Второй файл как обработчик, он там делает все манипуляции, все что угодно, и выдает только результат в data, вообще-то так аякс и должен работать.
Можно во втором файле генерить нужный кусок страницы, и все время просто подгружать содержимое в див

<body>

<div
id="imgbox"></div>

</body>
</html>

Получается что данный
<?php
echo isset($_GET['poster']) ? $_GET['poster'] : 0;
?>

обработчик обрабатывает и выдает свой результат, и помещает в div id="imgbox"></div>, если что-то серьезнее то так же в обработчике делай что хочешь, хоть из базы картинки загружай, хоть текст, а потом уже готовенькое подставится в див

Спустя 2 минуты, 23 секунды (10.05.2011 - 18:21) sharki написал(а):
файл test2.php:
<?php
echo isset($_GET['poster']) ? $_GET['poster'] : 0;
?>

файл test1.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Untitled Document</title>
<script
src="http://code.jquery.com/jquery-latest.js"></script>

<script
type="text/javascript">
$(document).ready(function(){
function rand(max, min) {
if ( max ) {
return Math.floor(Math.random() * (max - min + 1)) + min;
} else {
return Math.floor(Math.random() * (min + 1));
}
}


function _imgUpdate() {
var randomnumber = rand(0,7);
$.get('test2.php', { poster : randomnumber }, function(data) { $('#imgbox').html(data) });
}
window.setInterval( _imgUpdate, 1000 );
});
</script>
</head>

<body>

<div
id="imgbox"></div>
</body>
</html>


Спустя 12 минут, 1 секунда (10.05.2011 - 18:33) skolozhabskiy написал(а):
спасибо за ответы, но получается что не могу все равно получить и манипулировать переменной в первом файле, она только в нем отображается и все, а можно ее как-то в первый файл теперь вывести?

спасибо

Спустя 30 минут, 18 секунд (10.05.2011 - 19:03) skolozhabskiy написал(а):
странная одна вещь, да так работает скрипт, но в дивах он сначала выводит, например по примеру 0, а затем ниже строкой только начинает менять значения. почему и как убрать этот ноль и ненужную эту строку.

первая строка:

<div id="imgbox">0</div>

вторая строка:

<div id="imgbox">здесь только начинается отсчет на второй строке</div>


спасибо решение нашел,убрав значение по умолчанию.

спасибо

Спустя 7 минут, 8 секунд (10.05.2011 - 19:11) skolozhabskiy написал(а):
а можно повесить на вывод например картинок в данном примере, например какой-нибудь эффект по типу:

$.get('test2.php', { poster : randomnumber }, function(data) { $('#imgbox').html(data).fadeIn(); });


но так не работает

например при загрузке картинки один эффект например fadeIn, а при смене на другую fadeOut.

спасибо

Спустя 9 минут, 28 секунд (10.05.2011 - 19:20) sharki написал(а):
По идее можно, надо просто пробовать

Спустя 9 минут, 17 секунд (10.05.2011 - 19:29) skolozhabskiy написал(а):
например так тоже ничего не получается:

$.get('test2.php', { poster : randomnumber }, function(data) { $('#imgbox').html(data); });
$('#imgbox > img').slideDown();

Спустя 55 минут, 43 секунды (10.05.2011 - 20:25) skolozhabskiy написал(а):
я несколько усложнил задачу.

во втором файле поставил обработчик загрузки таблицы из базы данных, а в первом добавил скрипт и селектор :

первый файл test1.php:

<script type="text/javascript">
$(document).ready(function(){
$(function(){
$('#select_id').change(function(){
var value = $('#select_id option:selected').val();
$.ajax({
url: 'test2.php',
type: 'GET',
cache: false,
data:{option: value},
success: function(data){$('#imgbox').html(data); }
}
);
});
});
});
</
script>

<
select name="select_id" id="select_id">
<
option value="0">- choose product -</option>
<
option value="1">table1</option>
<
option value="2">table2</option>
<
option value="3">table3</option>
</
select>


второй файл test2.php:

<?php
require_once('inc/global.inc.php'); // подключена база с таблицами (table1, table2, table3)

if (!isset($_GET['option'])) {
$_GET['option'] = 0;
}

switch ($_GET['option']) :
case 1 : $tablename = 'table1';
break;
case 2 : $tablename = 'table2';
break;
case 3 : $tablename = 'table3';
break;
default : $tablename = 'table1';
break;
endswitch;

$result = mysql_query("SELECT `field1`, 'field2`, `field3` FROM ".$tablename);
$num_rows = mysql_num_rows($result);
for ($i=0; $i<$num_rows; $i++)
{
$imgs[$i] = mysql_result($result,$i,0); // field1
$names[$i] = mysql_result($result,$i,1); // field2
}

if (isset($_GET['poster'])) {
$poster = $_GET['poster'];
?>
<span>table: <?php if (isset($tablename)) { echo $tablename; } ?></span><br />
<
span>id: <?php if (isset($poster)) { echo $poster; } ?></span><br />
<
img id="mask" src="<?php echo 'img/products/'.$imgs[$poster]; ?>"/><br />
<
span>name: <?php if (isset($poster)) { echo $names[$poster]; } ?></span><br />
<?
}

?>

проблема в том, что селектор прекрасно работает, но загружается все равно только первая таблица.

подскажите что здесь не так?

спасибо

Спустя 4 минуты, 57 секунд (10.05.2011 - 20:30) inpost написал(а):
skolozhabskiy
while($row = mysql_fetch_assoc($res)) - почитай про это.

Спустя 51 секунда (10.05.2011 - 20:31) sharki написал(а):
если все время первая то проблема либо с $_GET['option'] либо в обработчике
$imgs[$i] = mysql_result($result,$i,0); // field1

Покажи структуру таблицы в БД, можно сделать лаконичнее

Спустя 32 минуты, 5 секунд (10.05.2011 - 21:03) skolozhabskiy написал(а):
нет с таблицами все нормально, первая и все остальные если по отдельности выводтся отлично, здесь проблема в этом коде, только где? что не так?
если поставить эхо после switch то показывает, что таблица переключается абсолютно нормально, но затем почему-то загружается в контент все равно первая ( то есть массив возвращается к первоначальному.)

а что мне даст while($row = mysql_fetch_assoc($res)) ?

спасибо

Спустя 1 минута, 42 секунды (10.05.2011 - 21:05) sharki написал(а):
skolozhabskiy
Выведи алертом alert()
var value = $('#select_id option:selected').val();
alert(value);


Нормально все выбирает? и заносит в переменную

Спустя 2 минуты, 43 секунды (10.05.2011 - 21:07) skolozhabskiy написал(а):
абсолютно нормально. селектор работает отлично!

Спустя 11 минут, 27 секунд (10.05.2011 - 21:19) sharki написал(а):
Я кстати не заметил чтобы здесь data:{option: value}, передавалось 2 переменные
Откуда $_GET['poster']? ну это мелоч

Только я вот сам не понимаю где ошибка, надо пробовать прям по очередности т.е
Проверить по шагам, если свитч нормально обрабатывается, значит надо глянуть print_r($imgs) и $names там всё нормально? вот прям закомментить эту часть
if (isset($_GET['poster'])) {
$poster = $_GET['poster'];
?>
<span>table: <?php if (isset($tablename)) { echo $tablename; } ?></span><br />
<
span>id: <?php if (isset($poster)) { echo $poster; } ?></span><br />
<
img id="mask" src="<?php echo 'img/products/'.$imgs[$poster]; ?>"/><br />
<
span>name: <?php if (isset($poster)) { echo $names[$poster]; } ?></span><br />
<?
}


и чуть ниже написать

echo "<pre>";
print_r($imgs);
echo "</pre>";

echo "<pre>";
print_r($names);
echo "</pre>";


Спустя 9 минут, 50 секунд (10.05.2011 - 21:29) skolozhabskiy написал(а):
массив после свича меняется номально, но после строк

if (isset($_GET['poster'])) {
$poster = $_GET['poster'];
?>
<span>table: <?php if (isset($tablename)) { echo $tablename; } ?></span><br />
<
span>id: <?php if (isset($poster)) { echo $poster; } ?></span><br />
<
img id="mask" src="<?php echo 'img/products/'.$imgs[$poster]; ?>"/><br />
<
span>name: <?php if (isset($poster)) { echo $names[$poster]; } ?></span><br />
<?
}

магически снова возвращается к прежнему

Спустя 5 минут, 23 секунды (10.05.2011 - 21:34) sharki написал(а):
воооот) дебагинг крутая штука в практике не так ли?)

может все таки не стоит коверкать PHP с HTML?

и еще, if (isset($tablename)) { echo $tablename; } зачем повторные проверки? если они уже сделаны до этого, и в ЛЮБОМ случае будут =)

if (isset($_GET['poster'])) {
$poster = $_GET['poster'];
$str .= '<span>table:'.$tablename.'</span><br />'
.'<span>id:'.$poster.'</span><br />'
.'<img id="mask" src="img/products/'.$imgs[$poster].'"/><br />'
.' <span>name:'.$names[$poster].'</span><br />';
}
echo $str;

Спустя 48 минут, 2 секунды (10.05.2011 - 22:22) skolozhabskiy написал(а):
так тоже не работает:

<?php
require_once('inc/global.inc.php');

if (!isset($_GET['option'])) {
$_GET['option'] = 0;
}

switch ($_GET['option']) :
case 1 : $tablename = 'table1';
break;
case 2 : $tablename = 'table2';
break;
case 3 : $tablename = 'table3';
break;
default : $tablename = 'table1';
break;
endswitch;

$result = mysql_query("SELECT `id`, `img`, `name` FROM ".$tablename);
$num_rows = mysql_num_rows($result);
for ($i=0; $i<$num_rows; $i++)
{
$imgs[$i] = mysql_result($result,$i,1);
$names[$i] = mysql_result($result,$i,2);
}

if (isset($_GET['poster'])) {
$poster = $_GET['poster'];
$str .= '<span>table:'.$tablename.'</span><br />'
.'<span>id:'.$poster.'</span><br />'
.'<img id="mask" src="img/products/'.$imgs[$poster].'"/><br />'
.' <span>name:'.$names[$poster].'</span><br />';
}

?>


где здесь ошибка - пишет что Notice: Undefined variable: str на строке " .' <span>name:'.$names[$poster].'</span><br />';"

что здесь не так?

Спустя 7 минут, 17 секунд (10.05.2011 - 22:29) sharki написал(а):
Ты не ответил на вопрос, откуда $_GET['poster'] взялся? из-за него проблема походу.

А нотис убирается вот так

 if (isset($_GET['poster'])) {
$poster = $_GET['poster'];
$str = "";
$str .= '<span>table:'.$tablename.'</span><br />'
.'<span>id:'.$poster.'</span><br />'
.'<img id="mask" src="img/products/'.$imgs[$poster].'"/><br />'
.' <span>name:'.$names[$poster].'</span><br />';
}

echo $str;

Спустя 2 минуты, 54 секунды (10.05.2011 - 22:32) skolozhabskiy написал(а):
из первого же файла, с этого же мы начинали, вот:

      <script type="text/javascript">
$(document).ready(function(){
function rand(max, min) {
if ( max ) {
return Math.floor(Math.random() * (max - min + 1)) + min;
} else {
return Math.floor(Math.random() * (min + 1));
}
}


function _imgUpdate() {
var randomnumber = rand(0,7);
$.get('gallery.inc.php', { poster : randomnumber }, function(data) {
$('#imgbox').html(data);
});

}
window.setInterval( _imgUpdate, 3000 );
});
</
script>


мы просто добавили в прежние файлы селектор и выбрали из базы картинки с именами в массивы для выведения в первом файле в дивах.

массивы почему-то не меняют своих значений, в первый раз вроде изменили, а внутри конструкции, где постер проверятется и выводятся картинки снова становятся прежними.

может селектор после ответа сервера сбрасывается к начальному значению, тогда почему, вот его код еще раз:

      <script type="text/javascript">   
$(document).ready(function(){
$(function(){
$('#select_id').change(function(){
var value = $('#select_id option:selected').val();
$.ajax({
url: 'gallery.inc.php',
type: 'GET',
cache: false,
data:{option: value},
success: function(data){
$('#imgbox').html(data);
// $("#imgbox").html($('#imgbox', data));
// alert(data);

}
}
);
});
});
});
</
script>


в первом файле.

Спустя 3 минуты, 38 секунд (10.05.2011 - 22:36) sharki написал(а):
skolozhabskiy
Хм, а как ты думаешь попадет ТА переменная в этот файл?
Если этот файл подгружается этим скриптом
$.ajax({
url: 'test2.php',
type: 'GET',
cache: false,
data:{option: value},
success: function(data){$('#imgbox').html(data); }
});


То в test2.php есть ТОЛЬКО $_GET['option'] больше ничего, есть нужна и та переменная, то надо передавать значение randomnumber в этот скрипт

Спустя 3 минуты, 5 секунд (10.05.2011 - 22:39) skolozhabskiy написал(а):
и как тогда их соединить вместе, хочется уже добить эту тему.

Спустя 1 минута, 48 секунд (10.05.2011 - 22:41) skolozhabskiy написал(а):
так:

<script type="text/javascript">
function rand(max, min) {
if ( max ) {
return Math.floor(Math.random() * (max - min + 1)) + min;
} else {
return Math.floor(Math.random() * (min + 1));
}
}

$(document).ready(function(){
$(function(){
$('#select_id').change(function(){
var value = $('#select_id option:selected').val();
var randomnumber = rand(0,7);
$.ajax({
url: 'test2.php',
type: 'GET',
cache: false,
data:{option: value, poster : randomnumber},
success: function(data){
$('#imgbox').html(data);
// $("#imgbox").html($('#imgbox', data));
// alert(data);

}
}
);
});
});
});
</
script>


есть ошибки?

теперь снова на строке echo $str; пишет - Notice: Undefined variable: str in

выводится первая картинка и все, смены параметра постер нет.

Спустя 43 секунды (10.05.2011 - 22:41) sharki написал(а):
ЭТО
<script type="text/javascript">   
$(document).ready(function(){
$(function(){
$('#select_id').change(function(){
var value = $('#select_id option:selected').val();
$.ajax({
url: 'gallery.inc.php',
type: 'GET',
cache: false,
data:{option: value},
success: function(data){
$('#imgbox').html(data);
// $("#imgbox").html($('#imgbox', data));
// alert(data);

}
}
);
});
});
});
</script>


и это
<script type="text/javascript">
$(document).ready(function(){
function rand(max, min) {
if ( max ) {
return Math.floor(Math.random() * (max - min + 1)) + min;
} else {
return Math.floor(Math.random() * (min + 1));
}
}


function _imgUpdate() {
var randomnumber = rand(0,7);
$.get('gallery.inc.php', { poster : randomnumber }, function(data) {
$('#imgbox').html(data);
});

}
window.setInterval( _imgUpdate, 3000 );
});
</script>


На одной странице? статические?

Спустя 47 секунд (10.05.2011 - 22:42) sharki написал(а):
Если да, то последний твой вариант по идее правильный =)

Спустя 5 минут, 52 секунды (10.05.2011 - 22:48) skolozhabskiy написал(а):
я забыл еще интервал, вот поправил:

      <script type="text/javascript">  
function rand(max, min) {
if ( max ) {
return Math.floor(Math.random() * (max - min + 1)) + min;
} else {
return Math.floor(Math.random() * (min + 1));
}
}

$(document).ready(function(){
$(function(){
var refresh = setInterval(function() {
$('#select_id').change(function(){
var value = $('#select_id option:selected').val();
var randomnumber = rand(0,7);
$.ajax({
url: 'gallery.inc.php',
type: 'GET',
cache: false,
data:{option: value, poster : randomnumber},
success: function(data){
$('#imgbox').html(data);
// $("#imgbox").html($('#imgbox', data));
// alert(data);

}
}
);
});
}, 3000 );
});
});
</
script>


только и этот вариант не работает. почему? где ошибка?

Спустя 2 минуты, 46 секунд (10.05.2011 - 22:51) skolozhabskiy написал(а):
а как бороться с Notice: Undefined variable: str in на строке

 if (isset($_GET['poster'])) {
$poster = $_GET['poster'];
$str = '<span>table:'.$tablename.'</span><br />';
$str .= '<span>id:'.$poster.'</span><br />';
$str .= '<img id="mask" src="img/products/'.$imgs[$poster].'"/><br />';
$str .= ' <span>name:'.$names[$poster].'</span><br />';
}
echo $str; - вот здесь эта ошибка!

Спустя 4 минуты, 10 секунд (10.05.2011 - 22:55) skolozhabskiy написал(а):
есть еще последний вопрос, а как передать в первый файл в скрипт
   <script type="text/javascript">  
function rand(max, min) { и так далее
что максимальное значение в функции rand равно числу строк в таблице, это значение мы находим во втором файле - $num_rows = mysql_num_rows($result);

Спустя 1 минута, 2 секунды (10.05.2011 - 22:56) sharki написал(а):
а так попробуй
function rand(max, min) {    
if ( max ) {
return Math.floor(Math.random() * (max - min + 1)) + min;
} else {
return Math.floor(Math.random() * (min + 1));
}
}



$(document).ready(function(){
function get_data () {
$('#select_id').change(function(){
var value = $('#select_id option:selected').val();
var randomnumber = rand(0,7);
$.ajax({
url: 'gallery.inc.php',
type: 'GET',
cache: false,
data:{option: value, poster : randomnumber},
success: function(data){
$('#imgbox').html(data);
// $("#imgbox").html($('#imgbox', data));
// alert(data);

}
}
);
});
}
var refresh = setInterval(get_data, 3000 );
});



А Notice: Undefined variable: str говорит о том, что if (isset($_GET['poster'])) { данный блок не выполняется, и переменная пуста.

Можно поместить echo $str; в блок if (isset($_GET['poster'])) {

Спустя 1 минута, 50 секунд (10.05.2011 - 22:58) skolozhabskiy написал(а):
понятно - так заработало, обратите внимание на предыдущий пост - последний вопрос по теме.
а все же как прикрепить сюда еще эффекты jquery& пробовал их прикрепить к $('#imgbox').html(data); - никакого эффекта.

спасибо

Спустя 1 минута, 30 секунд (10.05.2011 - 22:59) sharki написал(а):
skolozhabskiy
Чтобы что-то передать в PHP тобеш на сервер, нужно опять же воспользоваться аяксом, и по полученным данным делать еще один аякс чтобы получить то-что нужно...

Вообще надо продумывать это в голове и на листочке, как бы строить путь скрипта, смотреть на последовательность, помогает =))

Спустя 1 минута, 15 секунд (10.05.2011 - 23:01) skolozhabskiy написал(а):
а вынести как-то фукцию во второй файл нельзя и потом передать значение в первый в виде параметра?

Спустя 2 минуты, 33 секунды (10.05.2011 - 23:03) skolozhabskiy написал(а):
пробовал так - $('#imgbox > img').fadeIn(); эффекта нет.

Спустя 1 минута, 48 секунд (10.05.2011 - 23:05) sharki написал(а):
хм.. вообще можно прям сразу подставит значение т.е

Получается так, что при первой загрузке странице, он получается кол-во и подставляет сразу в JS, а дальше уже он работает с другими данными

<?php
.....
$num_rows = mysql_num_rows($result);
....


?>
<script
type="text/javascript">
function
rand(max, min) {
if ( max ) {
return Math.floor(Math.random() * (max - min + 1)) + min;
} else {
return Math.floor(Math.random() * (min + 1));
}
}



$(document).ready(function(){
function get_data () {
$('#select_id').change(function(){
var value = $('#select_id option:selected').val();
var randomnumber = rand(0,<?php echo $num_rows;?>);
$.ajax({
url: 'gallery.inc.php',
type: 'GET',
cache: false,
data:{option: value, poster : randomnumber},
success: function(data){
$('#imgbox').html(data);
// $("#imgbox").html($('#imgbox', data));
// alert(data);

}
}
);
});
}
var refresh = setInterval(get_data, 3000 );
});
</script>


Спустя 1 минута, 12 секунд (10.05.2011 - 23:06) sharki написал(а):
А по эффектам я не смогу помочь, толком с ними не работал, только один раз побаловался =)

Спустя 18 минут, 9 секунд (10.05.2011 - 23:24) skolozhabskiy написал(а):
если $num_rows = mysql_num_rows($result); во втором файле, а скрипт в первом, то программа все время ругается Notice: Undefined index: 12 in на инексы несуществующие, видимо она не видит так <?php echo $num_rows;?>. есть еще какой-нибудь вариант?

Спустя 4 минуты, 57 секунд (10.05.2011 - 23:29) sharki написал(а):
хотя да...ну тогда как вариант можно первым аяксом заполучить кол-во по выбранному элементу, а вторым уже заполучить всё!)

Спустя 2 минуты, 56 секунд (10.05.2011 - 23:32) skolozhabskiy написал(а):
опять возвращаемся к двум скриптам - функциям? или эта функция правильная и остается без изменения. только при такой конструкции обновляется селектор тоже много раз, это оптимально или можно его обновить только один раз, а обновлять только случайное значение randomnumber?

Спустя 10 минут, 48 секунд (10.05.2011 - 23:43) sharki написал(а):
function rand(max, min) {    
if ( max ) {
return Math.floor(Math.random() * (max - min + 1)) + min;
} else {
return Math.floor(Math.random() * (min + 1));
}
}



$(document).ready(function(){
function get_data () {

$('#select_id').change(function(){
var value = $('#select_id option:selected').val();
$.ajax({
url: 'gallery.inc.php',
type: 'GET',
cache: false,
data:{option: value, op: 1},
success: function(data){
randomnumber = rand(0,data);
}
}
);

$.ajax({
url: 'gallery.inc.php',
type: 'GET',
cache: false,
data:{option: value, poster : randomnumber, op: 0},
success: function(data){
$('#imgbox').html(data);
// $("#imgbox").html($('#imgbox', data));
// alert(data);

}
}
);
});
}
var refresh = setInterval(get_data, 3000 );
});



<?php
require_once('inc/global.inc.php');

if (!isset($_GET['option'])) {
$_GET['option'] = 0;
}

if($_GET['op']) {
switch ($_GET['option']) :
case 1 : $tablename = 'table1';
break;
case 2 : $tablename = 'table2';
break;
case 3 : $tablename = 'table3';
break;
default : $tablename = 'table1';
break;
endswitch;

$result = mysql_query("SELECT `id`, `img`, `name` FROM ".$tablename);
$num_rows = mysql_num_rows($result);
echo $num_rows;

}
else {
switch ($_GET['option']) :
case 1 : $tablename = 'table1';
break;
case 2 : $tablename = 'table2';
break;
case 3 : $tablename = 'table3';
break;
default : $tablename = 'table1';
break;
endswitch;

$result = mysql_query("SELECT `id`, `img`, `name` FROM ".$tablename);
$num_rows = mysql_num_rows($result);
for ($i=0; $i<$num_rows; $i++)
{
$imgs[$i] = mysql_result($result,$i,1);
$names[$i] = mysql_result($result,$i,2);
}

if (isset($_GET['poster'])) {
$poster = $_GET['poster'];
$str .= '<span>table:'.$tablename.'</span><br />'
.'<span>id:'.$poster.'</span><br />'
.'<img id="mask" src="img/products/'.$imgs[$poster].'"/><br />'
.' <span>name:'.$names[$poster].'</span><br />';
}

}


?>


Спустя 4 минуты, 7 секунд (10.05.2011 - 23:47) skolozhabskiy написал(а):
вариант с $_SESSION['numrows'] = $num_rows; не прошел, не видит он количество строк в таблице.

Спустя 1 минута, 19 секунд (10.05.2011 - 23:48) sharki написал(а):
skolozhabskiy
И не увидит =) т.к она создаться в другом файле, а эта страница не обновится, следовательно доступа к ней не будет

Спустя 6 минут, 15 секунд (10.05.2011 - 23:55) skolozhabskiy написал(а):
ругается с Notice: Undefined index: op in потом на все функции sql.

Спустя 13 минут, 29 секунд (11.05.2011 - 00:08) skolozhabskiy написал(а):
randomnumber не работает. выводятся индексы типа 53, 85 и так далее. в чем проблема?

Спустя 11 минут, 44 секунды (11.05.2011 - 00:20) sharki написал(а):
Наверное надо взять в кавычки op: "0" попробуй..

Спустя 7 минут, 5 секунд (11.05.2011 - 00:27) sharki написал(а):
только и в скрипте надо исправить на if($_GET['op']=="1") {

Спустя 2 минуты, 17 секунд (11.05.2011 - 00:29) skolozhabskiy написал(а):
все равно индексы randomnumber = rand(0,data); на алерте неверные и намного выше реального количества строк, он беорет каие-то значения неведомо откуда. код не хочет работать ну все же что-то в этом коде не так?

Спустя 4 минуты, 12 секунд (11.05.2011 - 00:33) sharki написал(а):
skolozhabskiy
в data приходит кол-во $num_rows = mysql_num_rows($result); проверь, просто выведи алертом, то кол-во приходит? по идее то, если нет, то пройди туда и заккоменть $num_rows = mysql_num_rows($result); и добавь чуть ниже
$num_rows = 23;

Спустя 13 минут, 24 секунды (11.05.2011 - 00:47) skolozhabskiy написал(а):
не хочет код работать никак.

Спустя 14 минут, 45 секунд (11.05.2011 - 01:02) sharki написал(а):
skolozhabskiy
Я спать) А так идея тебе понятна? т.е ты передаешь еще одну переменную как идентификатор обработчику, если он есть то получить кол-во и отдать т.е echo кол-во, где ты принимаешь ответ у клиента и передаешь его функции рандома, он рандомит и опять передает обработчику, но уже с другим идентификатором, чтобы не было путаницы.

Попробуй реализовать. База вообщем то есть. Метод тыка такая профессия программиста)))

Спустя 9 часов, 39 минут, 37 секунд (11.05.2011 - 10:41) skolozhabskiy написал(а):
доброе утро всем.

да идея вроде понятна, только вот если в строку
data:{option: value, poster : randomnumber, op: "0"},
поставить конкретное значение, например 5, то выводится картинка од номером пять, шесть - шесть и так далее. а в алерте на строке
randomnumber = rand(0,data);
все время показывает NAN (randomnumber = NAN)! хотя data в алерте показывает правильное числи строк из условия if ($_GET['op'] == "1") {. setintegval не работает. в общем не видит переменную randomnumber один аякс из другого. может есть какие-то идеи как сделать, чтобы эта конструкция заработала и можно было бы передавать randomnumber из одного аякса в другой или где здесь ошибка.

всем спасибо

Спустя 1 час, 52 минуты, 18 секунд (11.05.2011 - 12:34) sharki написал(а):
Попробуй так

function rand(max, min) {    
if ( max ) {
return Math.floor(Math.random() * (max - min + 1)) + min;
} else {
return Math.floor(Math.random() * (min + 1));
}
}



$(document).ready(function(){
function get_data () {

$('#select_id').change(function(){
var value = $('#select_id option:selected').val();
$.ajax({
url: 'gallery.inc.php',
type: 'GET',
cache: false,
data:{option: value, op: "on"},
success: function(data){
randomnumber = rand(0,data);
$.ajax({
url: 'gallery.inc.php',
type: 'GET',
cache: false,
data:{option: value, poster : randomnumber, op: "off"},
success: function(data){
$('#imgbox').html(data);
}
}
);
}
}
);
});
}
var refresh = setInterval(get_data, 3000 );
});


<?php
require_once('inc/global.inc.php');

if (!isset($_GET['option'])) {
$_GET['option'] = 0;
}

if($_GET['op']=="on") {
switch ($_GET['option']) :
case 1 : $tablename = 'table1';
break;
case 2 : $tablename = 'table2';
break;
case 3 : $tablename = 'table3';
break;
default : $tablename = 'table1';
break;
endswitch;

$result = mysql_query("SELECT `id`, `img`, `name` FROM ".$tablename);
$num_rows = mysql_num_rows($result);
echo $num_rows;

}
else {
switch ($_GET['option']) :
case 1 : $tablename = 'table1';
break;
case 2 : $tablename = 'table2';
break;
case 3 : $tablename = 'table3';
break;
default : $tablename = 'table1';
break;
endswitch;

$result = mysql_query("SELECT `id`, `img`, `name` FROM ".$tablename);
$num_rows = mysql_num_rows($result);
for ($i=0; $i<$num_rows; $i++)
{
$imgs[$i] = mysql_result($result,$i,1);
$names[$i] = mysql_result($result,$i,2);
}

if (isset($_GET['poster'])) {
$poster = $_GET['poster'];
$str .= '<span>table:'.$tablename.'</span><br />'
.'<span>id:'.$poster.'</span><br />'
.'<img id="mask" src="img/products/'.$imgs[$poster].'"/><br />'
.' <span>name:'.$names[$poster].'</span><br />';
}

}


?>

Спустя 7 минут, 45 секунд (11.05.2011 - 12:41) skolozhabskiy написал(а):
спасибо, попробую

Спустя 1 час, 21 минута, 57 секунд (11.05.2011 - 14:03) skolozhabskiy написал(а):
спасибо, все работает. еще бы как-то эффекты повесить.

Спустя 16 минут, 18 секунд (11.05.2011 - 14:20) sharki написал(а):
Ну неужели biggrin.gif


А по эффектам создай новую тему, и там спроси насчет эффектов JQ, может тут есть кто знает
Быстрый ответ:

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