Открытие нового окна с использованием php и отображение данных в этом - PullRequest
1 голос
/ 22 июня 2009

У меня проблема с php. То, что я пытаюсь сделать здесь, это то, что у меня есть .html, который направляет на внешний .js, и этот файл js открывает .php Php извлекает данные из таблиц mysql и xml и отображает данные на веб-странице (в формате .html в виде строк таблицы). Теперь, когда пользователь нажимает на любую строку, я хочу, чтобы php открывал новое окно, и я хочу отобразить на нем больше данных из того же mysql и xml (новое окно)

for($k=0;$k<=$x->length-1;$k++)
{
    for($l=0;$l<=$j-1;$l++)
    {
        if($y->item($k)->nodeValue==$JobNoArr[$l])
        {
            $m++;
            if ($m%2==0)
                {$a="#A5ADEA";}
            else 
                {$a="#D1D1D3";}

            //form_html1+="<tr onclick='show(" + x + ")' bgcolor="+ y +">";
            echo "<tr bgcolor=". $a .">";
            echo "<td>" . $m . "</td>";
            echo "<td>" . ($y->item($k)->nodeValue) . "</td>";
            echo "<td>" . ($TitleArr[$l]) . "</td>";
            echo "<td onclick=show(".$u->item($k)->nodeValue.")><i><font size=2>Click for Abstract</font></i></td>";
            echo "<td>" . $uu . "</td>";
            echo "</tr>";
        }
    }
}

Если я использую echo "<td onclick=show() ", он открывает функцию show в файле .js, но если я использую echo "<td onclick=".show()."... ", он открывает функцию в самом php, но без функции onclick.

Я не знаю, смог ли я четко объяснить мою проблему здесь, но если вы можете помочь мне в этом, пожалуйста, сделайте это.

Ответы [ 3 ]

2 голосов
/ 22 июня 2009

Вы на самом деле не хотите «делать это в PHP», вы собираетесь делать это с помощью JavaScript. PHP - это серверная технология, и то, что вы хотите сделать, должно происходить на стороне клиента (в браузере). Есть несколько разных способов сделать это; метод, который я описал ниже, использует очень мало JavaScript.

Прежде всего , вам необходимо переписать ваш onClick следующим образом:

echo "<td onClick=\"return show('".$u->item($k)->nodeValue."');\"><i><font size=2>Click for Abstract</font></i></td>";

Мы собираемся использовать функцию window.open, чтобы фактически открыть новое окно - для этого потребуется создать новый скрипт PHP, который может отображать данные, которые вы хотите показать, с учетом указанного идентификатора строки или некоторого другого идентификатора , В этом случае ваша show функция будет выглядеть примерно так:

Я обновил приведенный ниже пример, чтобы выводить его из PHP

echo "
 <script type=\"text/javascript\">
 <![CDATA[
   function show(rowid, arrno) {
     window.open(
       'showAbstract.php?rowid='+rowid+'&rowid2='+arrno,  // the url to the php script
       'somenameforthewindow',                            // some name for the window
       'status=0,width=100,height=100'                    // display options for the window
     );
     return false;
   }
 ]]>
 </script>";

Ваша PHP-страница должна получить параметр $_GET['rowid'], найти нужные данные и отформатировать / распечатать их так, как вы хотели бы, чтобы они отображались.

Вы могли бы фактически встроить все свои данные в JSON и использовать слои DHTML и CSS, чтобы получить аналогичный эффект без дополнительных окон. Если хотите, я могу опубликовать пример этого.

2 голосов
/ 22 июня 2009

Вы, вероятно, можете использовать YUI для создания плавающего диалогового окна, которое скрыто и содержит данные для «абстракции». По умолчанию скрываются все рефераты для всех элементов на странице. Ваша функция js show может просто установить этот элемент YUI видимым, когда пользователь нажимает на элемент. Вам даже не нужно открывать новое окно браузера.

0 голосов
/ 22 июня 2009

Как сказано выше, вы хотите использовать модальное окно javascript для отображения содержимого. Вы можете (с большинством модальных окон в любом случае) использовать код PHP в модальном окне, позволяя использовать те же MySQL и XML, но PHP как технология на стороне сервера не может открыть новое окно без обновления страницы или открытия новой страницы полностью .

Если вы используете jQuery (который я рекомендую), я бы предложил Facebox в качестве отличного модального окна в стиле лайтбокса, которое вы можете легко использовать и даже настраивать самостоятельно.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...