2010-08-16 3 views
1

У меня есть сайт, который захватывает случайную запись из базы данных и отображает ее для просмотра. Это код, я в настоящее время использую:Динамически изменяющиеся переменные PHP

$rows = "SELECT * FROM xxx"; 
$rows1 = mysql_query($rows); 
$rows2 = mysql_numrows($rows1); 
$id= rand(1, $rows2); 

Это генерирует идентификационный номер, который используется для выбора соответствующей записи в базе данных, и, конечно, есть больше PHP, который отображает запись.

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

<form> 
<input type=button value="Show me another one" onClick="window.location.reload()"> 
</form> 

Это прекрасно работает, но это вызывает проблемы с Google Adsense; это заставляет Adsense записывать огромное количество показов страниц от данного отдельного пользователя. Я не имел никакой переписки с Google об этом, но он должен выглядеть так, как будто я играю в систему для рекламодателей, которые платят «за показ». Я беспокоюсь, что это приводит к тому, что Google автоматически предотвращает получение дохода от рекламы «за показ» и может привести к отзыву моей учетной записи AdSense.

Так что мой вопрос в том, как сделать кнопку, которая вытащит другую запись из базы данных без обновления страницы? По сути, мне нужно найти способ изменить переменную «$ id» после нажатия пользователем кнопки.

+1

Что вам нужно сделать, это Google для «AJAX ». – deceze

+1

Вам также нужно научиться выбирать случайные записи из базы данных, ваш путь ужасно расточительный. http://stackoverflow.com/search?q=%5Bmysql%5D+select+random+row – deceze

+0

ok Я изменю свой mysql, чтобы он был менее расточительным, но не существует способа сделать это с помощью php? как насчет javascript? – John

ответ

2

У вас есть несколько способов добиться того, что вы пытаетесь сделать.

Если вы хотите сохранить его на земле HTML и PHP, вы можете решить свою проблему, указав IFRAME на своей странице с помощью кнопки перезагрузки внутри. Конечно, вы не должны вставлять трекер google на страницу, открытую IFRAME. Вы можете скрыть бедный стиль по умолчанию IFRAME с небольшим количеством CSS, поэтому он не выделяется вашей существующей страницей.

Это, однако, не лучший способ справиться с этим.

Вы должны, как это было предложено дьяволом, прибегнуть к Ajax для получения динамически новой информации с помощью Javascript. Чтобы справиться с этим безболезненно, я предлагаю вам выбрать структуру Javascript, чтобы оставить все досадные кросс-браузерные биты.

Например, с JQuery вы можете сделать следующее (HTML + JavaScript)

<!-- new content will appear in the div down below --> 
<div id="content-target"> 
</div> 

<form> 
    <input type="button" id="refresher" /> 
</form> 

<script type="text/javascript"> 
    $('#refresher').click(function(){ 
    $('#content-target').load('generator.php'); 
    return false; 
    }); 
</script> 

Вы должны потратить некоторое время на изучение рамки JS. Это очень хорошие инвестиции.

Для JQuery: http://jquery.com/

Прототип: http://www.prototypejs.org/

MooTools: http://mootools.net/

Dojo: http://www.dojotoolkit.org/ (избыточна для такого рода сценария)

Смежные вопросы