Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/117: Рейтинг темы: голосов - 117, средняя оценка - 4.64
1 / 1 / 0
Регистрация: 30.04.2009
Сообщений: 5
1

PHP, JavaScript и MySQL, как связать их правильно?

30.04.2009, 13:10. Показов 22324. Ответов 12
Метки нет (Все метки)

У меня вот такая проблема. Мне нужно достать соответствующий url из БД, чтоб при нажатии на сылку (которая тоже берётся из БД), ява говорила какой у неё урл. Тот листинг, который приведён ниже не верно работает, дело в том, что он берёт только 1-й урл, который в базе и все. Помогите пожалуйста, уже голову свернула как это сделать.
<?php
$link = mysql_connect('localhost', 'root', '');
mysql_select_db($db);
$result = mysql_db_query("diplom","select * from lessons_ill");
while ($row = mysql_fetch_row($result)){
?>
<div class="style3">
<div align="left">


<br><a href="#content-main" class="style3" onClick="var url1= document.getElementById('url').value;alert(url1);"><?php echo $row[1]; $url=$row[2];?></a>
<input type="text" id="url" value="<?php echo $url;?>">

<?php }?>
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.04.2009, 13:10
Ответы с готовыми решениями:

Как правильно связать сайт с PHP+MYSQL?
Привет всем, почти закончила свою первую верстку в HTML, на данный момент готово уже около 70%...

Возможно ли связать javascript и MSSQL иди MySQl
Ребят назрел вопрос, возможно ли осуществить связку javascript-a и MS SQL (MySQL). Задача может...

Как сделать правильно ? mysql и php
Кто может исправьте ошибки - что то не хвататет ) задолбался говорит ошибка в 14 строке да и не...

Сборка appache, php, mysql как правильно установить
Здравствуйте! А есть какая-нибудь подробная инструкция по настройке appache, php и mysql с...

12
3 / 3 / 0
Регистрация: 29.04.2009
Сообщений: 8
30.04.2009, 13:42 2
а сколько записей у вас выведется если вот такой код написать?
PHP
1
2
3
4
5
6
7
8
<?php
$link = mysql_connect('localhost', 'root', '');
mysql_select_db($db);
$result = mysql_db_query("diplom","select * from lessons_ill");
while ($row = mysql_fetch_row($result)){
print_r($row); echo"<br>";
}
?>
0
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 401
30.04.2009, 13:45 3
ммм+)) ну собственно основная ошибка у вас, насколько я вижу в:
Цитата Сообщение от Mafy Посмотреть сообщение
while ($row = mysql_fetch_row($result)){
?>
вы начали цикл и сразу закончили пхп скрипт +) он получается заканчивается сразу после первой операции $row = mysql_fetch_row($result)...
никак не найду правильные слова, как это сказать, вобщем просто нельзя разделять пхп скрипт как это сделали вы... сервер обрабатывает каждую <?php ... ?> отдельно от всех остальных и подаёт на выход именно его результаты.
Попробуйте сделать вот как:
Код
<?php
$link = mysql_connect('localhost', 'root', '');
mysql_select_db($db);
$result = mysql_db_query("diplom","select * from lessons_ill");
while ($row = mysql_fetch_row($result)){

echo '<div class="style3">';
echo '<div align="left">';


echo '<br><a href="#content-main" class="style3" onClick="var url1= document.getElementById(''url'').value;alert(url1);" >$row[1]'; 
$url=$row[2];
echo '</a><input type="text" id="url" value=$url>';

 }?>
я единственное, что не уверен, какие ковычки использовать в echo, двойные или одинарные+) я помню, что одни выведут всё как текст, а другие с учётом переменных+) но вот какие как, всегда путаюсь+) поэтому если будет неработать, то попробуйте поменять все ковычки в echo с ' на ", правда при этом обратите внимание, что в
getElementById(''url'').
поставлены не двойные а 2 одинарные ковычки (чтобы заэкранировать их, и он не закончил на них эхо, а просто вывел 1 ковычку), т.е. во всей строчке
echo '<br><a href="#content-main" class="style3" onClick="var url1= document.getElementById(''url'').value;alert(url1);" >$row[1]';
при смене с одинарных ковычек на двойные, надо будет заэкранировать необходимые двойные кавычки, и убрать лишние одинарные...+)

З.Ы. кстати, в коде, имхо можно легко обойтись без
<input type="text" id="url" value="<?php echo $url;?>">
можно просто в
onClick="var url1= document.getElementById('url').value;alert(url1);"
сразу вставлять:
onClick="var url1= $row[2];alert(url1);"
или вернее даже так:
onClick="alert($row[2]);"
0
3 / 3 / 0
Регистрация: 29.04.2009
Сообщений: 8
30.04.2009, 14:05 4
Varlock,
вы начали цикл и сразу закончили пхп скрипт +) он получается заканчивается сразу после первой операции $row = mysql_fetch_row($result)...
никак не найду правильные слова, как это сказать, вобщем просто нельзя разделять пхп скрипт как это сделали вы... сервер обрабатывает каждую <?php ... ?> отдельно от всех остальных и подаёт на выход именно его результаты.
Попробуйте сделать вот как:
не правы вы. такой вид записи разрешается и ничего не прерывается. с этой точки зрения, в исходном коде всё правильно записано

Добавлено через 10 минут 58 секунд
Mafy, Виноват, не сразу понял в чем дело. Ваша ошибка в том что вы через JS всегда выводите урл с одним и тем же айдишником. Можно решить проблему следующим образом

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$link = mysql_connect('localhost', 'root', '');
mysql_select_db($db);
$result = mysql_db_query("diplom","select * from lessons_ill");
while ($row = mysql_fetch_row($result)){
?>
<div class="style3">
<div align="left">
 
 
<br><a href="#content-main" class="style3" onClick="var url1= document.getElementById('<?php echo "url_".$url_id;?>').value;alert(url1);" ><?php echo $row[1]; $url=$row[2];?></a>
<input type="text" id="<?php echo "url_".$url_id;?>" value="<?php echo $url;?>">
 
<?php $url_id++;}?>
0
1 / 1 / 0
Регистрация: 30.04.2009
Сообщений: 5
30.04.2009, 14:59  [ТС] 5
Спасибо огромное!!! Оно заработало))) Правда пришлось некоторые коррективы сделать. Работающий код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php 
$url_id="url";
$link = mysql_connect('localhost', 'root', '');
mysql_select_db($db);
$result = mysql_db_query("diplom","select * from lessons_ill");
while ($row = mysql_fetch_row($result)){
?>
<div class="style3">
<div align="left">
 
 
<br><a href="#content-main" class="style3" onClick="var url1= document.getElementById('<?php echo $url_id;?>').value; alert(url1);" ><?php echo $row[1]; $url=$row[2];?></a>
 <input type="text" id="<? echo $url_id;?>" value="<? print $url;?>">
 
<?php $url_id++;}?>
1
3 / 3 / 0
Регистрация: 29.04.2009
Сообщений: 8
30.04.2009, 15:33 6
Рад помочь) Кстати если у вас в таблице первое поле это айдишник, то можно обойтись без $url_id. Тогда код будет выглядеть так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php 
$url_id="url";
$link = mysql_connect('localhost', 'root', '');
mysql_select_db($db);
$result = mysql_db_query("diplom","select * from lessons_ill");
while ($row = mysql_fetch_row($result)){
?>
<div class="style3">
<div align="left">
 
 
<br><a href="#content-main" class="style3" onClick="var url1= document.getElementById('<?php echo $row[0];?>').value; alert(url1);" ><?php echo $row[1]; $url=$row[2];?></a>
 <input type="text" id="<? echo $row[0];?>" value="<? print $url;?>">
 
<?php }?>
1
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 4
28.05.2011, 16:16 7
Добрый день!
Подскажите, пожалуйста, как реализовать такую вещь:
есть некий проект на JS, в нем необходимо подключить пхп файл, но не выполнять его, а чтобы просто все его функции и глобальные переменные были доступны в JS (т.е. сделать то же самое, что и делается, когда присоединяется другой JS файл, например:

Javascript
1
"<script type='text/javascript' src='http://maps.google.com/maps/api/js?sensor=false'></script>"
.
Ведь в этом случае происходит просто присоединение гугл проекта к текущему JS, после чего доступны все функции и переменные гугла).
А далее в нужных местах просто вызывать функции:

PHP
1
2
3
...
<?php echo contodb();?> // (кстати, есть сомнения по поводу того, так ли именно вызываются функции из пхп??)
...
или переменные:

Javascript
1
2
3
...
createMarker(<?php echo $X;?>, <?php echo $Y;?>,i,<?php echo $Com;?>,<?php echo $Type;?>);
...
Так вот, нужно, чтобы эти функции и переменные вызывались из файла пхп, и нужно его просто подключить к проекту... Можно ли это сделать так же:

Javascript
1
"<script type='text/javascript' src='main.php'></script>"
0
3 / 3 / 0
Регистрация: 29.04.2009
Сообщений: 8
28.05.2011, 16:26 8
Да, можно. У вас как раз получится динамический JS-файл.
Вы только должны через php выводить JS. Что-то типа этого
main.php
PHP
1
2
3
4
5
6
7
8
9
10
...
$phpA=3;
echo <<<JS
function f()
{
var a={$phpA};
return a;
}
JS;
...
И в начале вашего main.php лучше добавить
PHP
1
header('Content-type: application/x-javascript');
1
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 4
28.05.2011, 16:40 9
Давайте так:
Есть у меня локальная база мускул, там таблица table1, в которой 2 поля: х, у.
Всего, например, 10 записей.
Мне нужно в яваскрипт (допустим, это файл: java.html) вывести каждую из записей, чтобы отобразить на странице с помощью яваскрипта. В принципе, я это сделал, остался неразрешенным вопрос, как "сказать" яваскрипту, чтобы он брал нужные мне переменные именно из файла пхп(допустим, у него имя php.php), который, собственно, и производит связь с базой и выгрузку данных.
Выложу примерный код:
файл java.html:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
<head>
<meta http-equiv='content-type' content='text/html; charset=utf-8'/>
<title>текст</title>
<script type='text/javascript' src='http://maps.google.com/maps/api/js?sensor=false'></script>
<script type='text/javascript'>
function load() {
    <?php echo contodb();?> // связываемся с базой
    <?php echo doquery();?> // выполняем запрос
    for ( var i = 0; i < <? echo $coumag?> - 1; i++) { // цикл от 0 до кол-ва записей в бд
        <?php echo insertXYMag();?>// здесь выбирается запись
        var a = <? echo $х ?>; // здесь присходит изъятие переменной из php и вставка в javascript
        var b = <? echo $у ?>;
    }
а вот файл php.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?
$host = 'localhost';
$user = 'root';
$dbname = 'PointsMagazine';
$querymag = null;  // сам запрос
$coumag = null;  // кол-во записей в таблице
$X = null; // нужные мне
$Y = null; // поля
 
function contodb(){
if(!mysql_connect($host,$user))
  die('Не удалось подключиться к серверу MySql!');
elseif(!mysql_select_db($dbname))
  die('Не удалось выбрать БД!');
}
function doquery(){
$pntsmag='SELECT * FROM SalesOutlets WHERE type between 1 and 3';
global $querymag, $coumag;
$querymag = mysql_query($pntsmag);
$coumag = mysql_num_rows($querymag);
}
 
function insertXYMag()
{
    global $querymag, $X, $Y;
    $qmag = mysql_fetch_array($querymag);
    $X = $qmag[X];
    $Y = $qmag[Y];
}
?>
Ну вот, и что мне нужно сделать в файле java.html, чтобы он понял, откуда брать все эти функции и переменные?
0
3 / 3 / 0
Регистрация: 29.04.2009
Сообщений: 8
28.05.2011, 16:51 10
Да, понял теперь.
Как вариант, можно использовать AJAX, причем в очень тривиальном виде, т.к. насколько я вижу, ваш SQL-запрос не принимает никаких входных параметров.
В JS-функцию добавляете код, который будет запрашивать у php.php данные и уже далее оперировать ими.
Код могу написать, если идея годится.
1
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 4
28.05.2011, 17:03 11
Да, наверное, сгодится)
подправите мой код до работающего варианта?
Я читал про этот AJAX, но так и не понял, в чем там фишка...
У меня ведь тут все готово, нужно только доставать данные из пхп...
0
3 / 3 / 0
Регистрация: 29.04.2009
Сообщений: 8
28.05.2011, 17:28 12
Фишка в том, что вы через JS можете отсылать HTTP-запросы на серв и получать ответ, иными словами загружать и отсылать данные без явных намеков на обновление страницы браузером. Советую использовать Jquery, тем более что там оч хорошая документация. Про использование ajax изложено тут http://api.jquery.com/jQuery.ajax/
В качестве типа данных для обмена удобно использовать json. В php есть функция для генерации данных в json-строку - json_encode($arr);
Алгоритм тогда будет примерно такой:
В php.php запихиваете в $arr все нужные записи и выводите в виде json
В JS используете функцию $.ajax()
Javascript
1
2
3
4
5
6
7
8
9
$.ajax({
      url: "php.php",
      type: "GET",
      dataType: "json",
      success: function(data){
         // тут data это уже массив с записями. здесь и обрабатываете. можете функцию для success определить где-то выше
      }
   }
);
Примерно так)
0
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 4
28.05.2011, 21:14 13
Блин, вот геморрой... неужели нельзя полегче))) Мне просто сдать работу надо и забыть о ней)))

Добавлено через 2 часа 45 минут
а вы не могли написать код для пхп и JS с моим примером? а то просто в этом всем разбираться, чтобы просто сдать работу и забыть - как-то муторно...
Спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2011, 21:14

Как правильно обновить MySQL и PHP по последней верси
Здравствуйте, хочу обновить PHP и MySQL, всё это стоит на Centos, как правильно обновить?

Как сделать красиво и правильно? ООП + PHP + MySQL
В одной из функций класса производится подключение к БД. Возможно ли реализовать что-то...

Как правильно создать таблицы mysql, имея php код?
Доброго время суток. У меня есть php страниц,от которых нет таблиц в БД mysql Помогите...

JavaScript PHP MySQL массивы
Подскажите как сделать что-то подобное этому:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.