Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выборка из 2 баз данных 
:(
    Опции темы
Dima85
Дата 9.4.2014, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Код

$rows = mysql_query("SELECT PinName, PinID FROM `Pineral`");
$rows2 = mysql_query("SELECT PinUrl, PinUrlID FROM `Pineralurl`");

while ($stroka = mysql_fetch_array($rows)){
    $i=$stroka['PinID'];
    echo'<td>' . $stroka['PinName'] . '</td>';

while ($stroka2 = mysql_fetch_array($rows2)){
    if ($i == $stroka2['PinUrlID']) {
        echo'<td>' . $stroka2['PinUrl'] . '</td>';
    }
}
}


Необходимо сделать следующее. Если $i из первой базы == $stroka2['PinUrlID'] из второй базы. То вывести $stroka2['PinUrl'] из второй базы и опять продолжить поиск по первой базе, есть опять будут найдены совпадения опять вывести $stroka2['PinUrl'] и так до конца.

Сейчас в выше написанном мною коде второй while почему-то срабатывает только 1 раз. Подскажите пожалуйста что мне делать.

Это сообщение отредактировал(а) Dima85 - 9.4.2014, 01:01
PM MAIL   Вверх
_zorn_
Дата 9.4.2014, 03:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Код

$rows = mysql_query("SELECT * FROM Pineral, Pineralurl WHERE Pineral.PinID=Pineralurl.PinUrlID");
while($line = mysql_fetch_assoc($rows))
{
print_r($line);
}

В этом случае, если во второй таблице не будет записи(ей) с PinUrlID=PinID из первой таблицы, в выборку не попадет запись из первой таблицы.
Если нужно, чтобы попадало - кури LEFT JOIN

PM MAIL   Вверх
igorold
Дата 9.4.2014, 06:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: нет
Всего: 17



Чтобы твой код срабатывал не один раз, тебе надо сделать что-то типа:

Код

$rows = mysql_query("SELECT PinName, PinID FROM `Pineral`");
$rows2 = mysql_query("SELECT PinUrl, PinUrlID FROM `Pineralurl`");
$list = mysql_fetch_array($rows2);


и второй цикл
while ($stroka2 = mysql_fetch_array($rows2))
заменить на
foreach ($list as $stroka2)

Если тебе нужно просто найти одинаковые значения, то предыдущий ответ предлагает тебе такое решение и значения можно вывести на экран в одном цикле.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
_zorn_
Дата 9.4.2014, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Цитата(igorold @  9.4.2014,  14:01 Найти цитируемый пост)
Чтобы твой код срабатывал не один раз, тебе надо сделать что-то типа

Какой то бред. В вашем коде второй цикл выполнится два раза со значениями PinUrl и PinUrlID из первой записи.

Чтобы код ТСа заработал так как предполагается, нужно добавить mysql_data_seek(0,$rows2) после второго цикла. Но все равно это ###код  smile 
PM MAIL   Вверх
igorold
Дата 9.4.2014, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: нет
Всего: 17



Вы хоть поняли, что я написал?
ТС хочет выполнить первый цикл и чтобы внутри него каждый раз перебирался второй цикл, а не 1 раз как он пишет.
Моё предложение это реализовывает. В чем проблема?

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
krypt3r
Дата 9.4.2014, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 1
Всего: 16



Цитата

Код

$rows = mysql_query("SELECT PinName, PinID FROM `Pineral`");
$rows2 = mysql_query("SELECT PinUrl, PinUrlID FROM `Pineralurl`");


И где тут выборка данных из _разных_ баз данных?
PM MAIL   Вверх
Dima85
Дата 9.4.2014, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



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


igorold, такой код:
Код

$rows = mysql_query("SELECT PinName, PinID FROM `Pineral`");
$rows2 = mysql_query("SELECT PinUrl, PinUrlID FROM `Pineralurl`");
$list = mysql_fetch_array($rows2);
while ($stroka = mysql_fetch_array($rows)){
    $i=$stroka['PinID'];
    echo'<tr><td>' . $stroka['PinName'] . '</td>';
//while ($stroka2 = mysql_fetch_array($rows2)){
    foreach ($list as $stroka2) {

    if ($i == $stroka2['PinUrlID']) {
        echo'<td>' . $stroka2['PinUrl'] . '</td></tr>';
    }
}
}


Ругается на 
Код

Warning: Illegal string offset 'PinUrlID' in C:\xampp\htdocs\index2.php on line 81

Подскажите пожалуйста почему?
PM MAIL   Вверх
_zorn_
Дата 10.4.2014, 03:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Цитата(igorold @  9.4.2014,  21:28 Найти цитируемый пост)
Моё предложение это реализовывает. В чем проблема?

Да ладно  smile Давай на пальцах.
Код

$rows2 = mysql_query("SELECT PinUrl, PinUrlID FROM `Pineralurl`");
$list = mysql_fetch_array($rows2);
//$list теперь массив такого вида $list = array('PinUrl'=>'значение PinUrl из первой записи Pineralurl', 'PinUrlID'=>'значение PinUrlID из первой записи Pineralurl');
foreach ($list as $stroka2)
//выполняется 2 раза в первый раз в $stroka2 'значение PinUrl из первой записи Pineralurl', второй раз 'значение PinUrlID из первой записи Pineralurl'

Может стоит покурить ман хотя бы на функцию mysql_fetch_array, не ?
Цитата(Dima85 @  10.4.2014,  06:37 Найти цитируемый пост)
Мне же нужно показывать текст с первой базы всегда.

Цитата(_zorn_ @  9.4.2014,  11:27 Найти цитируемый пост)
Если нужно, чтобы попадало - кури LEFT JOIN

Код

SELECT * FROM Pineral LEFT JOIN Pineralurl ON Pineral.PinID=Pineralurl.PinUrlID

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.1200 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.