Создание интерактивной ссылки с использованием MySql Fetch Array и Ajax - PullRequest
0 голосов
/ 20 июня 2011

Я пытаюсь использовать конкретные числовые результаты из mysql_fetch_array в цикле while для выполнения функции Javascript (Ajax).Основной фрагмент моего php-кода выглядит следующим образом:

while ($data = mysql_fetch_array($result)) 
{
$link = $data['id']; //example results will be 12345
echo '<span id="val" onclick="goto()">'.$link.'</span>'; //lists 12345, and makes each clickable
}

Часть моего кода Javascript выглядит следующим образом:

function goto(str)
{
   Ajax...
   var idval = document.getElementById('val').innerHTML; //grabs 1,2,3,4, or 5 based on which number was clicked
   Ajax...
}

Я пытаюсь сделать здесь несколько запросов изMySql, выведите список результатов с помощью цикла while, сделайте каждый результат кликабельным и передайте внутренний html-файл переменной для Ajax.

Моя проблема заключается в том, что при нажатии на любой из результатов из списка цикла whileпередать только первый результат массива выборки mysql.Например, цикл while будет отображать 12345. Когда я пытаюсь нажать 3, я получаю 1 в качестве внутреннего HTML;когда я пытаюсь нажать 5, я получаю 1 как внутренний HTML;и так далее ... Он всегда получает первый результат, который равен 1.

Я пытался развернуть и взорвать массив извлечения mysql, однако внутренний html всегда заканчивает тем, что был первой строкой результатов массива.Мне нужно как-то разбить массив, чтобы каждая строка была независимой, не только визуально, но и программно, чтобы я мог получить ее с помощью getElementById.innerHTML.

Я действительно ценю любую помощь.Ваши предложения и, надеюсь, ответ действительно помогут сделать мои проекты php намного более полезными.

Ответы [ 2 ]

1 голос
/ 20 июня 2011

Во-первых, измените ваш php-скрипт так, чтобы он выглядел следующим образом:

while ($data = mysql_fetch_array($result)) 
{
    $link = $data['id']; //example results will be 12345
    echo '<span id="val'.$link.'" onclick="goto('.$link.')">'.$link.'</span>';
}

Затем используйте следующий код JavaScript:

function goto(link)
{
    Ajax...
    var idval = document.getElementById('val'+link).innerHTML; 
    Ajax...
}

Но я не уверен, что означает str в вашем коде JavaScript и почему функция goto принимает 1 аргумент (str), тогда как вызывается без аргументов (onclick="goto()").

1 голос
/ 20 июня 2011

Ваша проблема в том, что вы используете id = "val" в элементах span. Таким образом, вы могли получить только первый элемент. Таким образом, вы все время получаете внутренний html первого диапазона.

Самое простое решение - передать значение id в качестве аргумента для вызова функции goto.

Обновление: вы можете модифицировать свою функцию, как показано ниже:

function goto(link)
{
    Ajax...
    var idval = link;
    Ajax...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...