2013-05-15 3 views
-1

Я пытаюсь отобразить информацию о пользователе/​​профиле из базы данных MySQL (созданной phpBB3) на странице html. Я хочу создать публичную страницу (не связанную с phpBB) на веб-сайте, на которой будет отображаться список всех пользователей: их имена, адреса, номера телефонов, веб-сайты и другие поля профиля. Если бы вся эта информация была в одной таблице, у меня не было бы проблем. Но phpBB перечисляет записи пользовательского профиля в другой таблице, и я не очень удобен с запросами php или MySQL. Я не могу, чтобы жизнь меня заставляла столы сливаться. У меня около 50 различных версий этого кода, но ни один из них не работает так, как я их хочу.Слияние двух таблиц с одним общим полем MySQL

<?php 

$con = mysql_connect('hostname', 'username', 'password'); 
$db = mysql_select_db('dbname'); 

//now write a select query to fetch the records from the table 

$sql = "select * from phpbb_users"; 
$query = mysql_query($sql); 

echo "<table border=1>"; 

//now read and display the entire row of a table one by one looping through it. 
//to loop we are using While condition here 

while($row = mysql_fetch_assoc($query)) 
{ 
echo "<tr><td>$row[user_email]</td>"; 
echo "<td>$row[user_website]</td>"; 
echo "<td>$row[user_avatar]</td></tr>"; 
} 

echo "</table>"; 

$sql = "select * from phpbb_profile_fields_data"; 
$query = mysql_query($sql); 

echo "<table border=1>"; 

//now read and display the entire row of a table one by one looping through it. 
//to loop we are using While condition here 

while($row = mysql_fetch_assoc($query)) 
{ 
echo "<tr><td>$row[pf_name]</td>"; 
echo "<td>$row[pf_business]</td>"; 
echo "<td>$row[pf_address]</td>"; 
echo "<td>$row[pf_phone]</td>"; 
echo "<td>$row[pf_officer]</td></tr>"; 
} 

echo "</table>"; 

?> 

Это показывает две отдельные таблицы со всеми данными, которые я хочу, чтобы включить. Я просто хочу, чтобы эти таблицы отображались как единое целое. Во второй таблице есть информация, которую я хочу отобразить сначала, но встроенный с остальными данными из первой таблицы. Я знаю, что это глупый вопрос. Прости. Это звучало так просто, прежде чем я попытался это сделать. Спасибо за вашу помощь! :)

Обновленный код:

<?php 

$con = mysql_connect('hostname', 'username', 'password'); 
$db = mysql_select_db('dbname'); 

$sql = "select * from phpbb_users left join phpbb_profile_fields_data on phpbb_profile_fields_data.user_id = phpbb_users.id"; 
$query = mysql_query($sql); 


echo "<table>"; 


while($row = mysql_fetch_assoc($query)) 
{ 
echo "<tr><td>$row[user_avatar]</td>"; 
echo "<td>$row[pf_name]</td>"; 
echo "<td>$row[pf_business]</td>"; 
echo "<td>$row[pf_address]</td>"; 
echo "<td>$row[pf_phone]</td>"; 
echo "<td>$row[user_email]</td>"; 
echo "<td>$row[user_website]</td>"; 
echo "<td>$row[pf_officer]</td></tr>"; 
} 

echo "</table>"; 

?> 
+0

Таким образом, вы имеете в виду вы хотите ВСТУПИТЬ: http://dev.mysql.com/doc/refman/5.0/en///join.html – sashkello

+0

Может быть? Я пытался. Честный. Прямое соединение? левое соединение? Когда я попытался, я не смог получить какие-либо данные для отображения в таблице. Каков правильный формат для вызова строки $ в этом экземпляре? [table.var] или просто [var]? Я спрашиваю, потому что у меня возникла синтаксическая ошибка с [table.var] и нет вывода с простым [var] ... – ABC123

+0

JOIN vs LEFT JOIN - googlable за 5 секунд. Точно так же, как получить доступ к значениям по псевдонимам (используйте SELECT что-то AS «blabla», а затем $ row ['blabla']). Во всяком случае, это очень общие основы, которые вы можете узнать за 10 минут, просматривая любой учебник для начинающих. Я не думаю, что это подходящее место для того, чтобы попросить руководство, особенно учитывая тот факт, что есть> 1 одинаковые вопросы, задаваемые ежедневно ... – sashkello

ответ

1

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

select * from phpbb_users join phpbb_profile_fields_data on phpbb_profile_fields_data.user_id = phpbb_users.id 

NB: Используйте '... осталось присоединиться ... если у 2-й таблицы может не быть соответствующей строки

$sql = " 
SELECT * 
FROM phpbb_users 
LEFT JOIN phpbb_profile_fields_data ON 
    phpbb_profile_fields_data.user_id = phpbb_users.id 
"; 
// QUESTION: should the above be phpbb_users.user_id as you mentioned in comments 
$query = mysql_query($sql); 


echo '<table>'; 

while($row = mysql_fetch_assoc($query)) 
{ 
    echo '<tr>'; 
    echo '<td>' . $row['user_avatar'] . '</td>'; 
    // ... 
    echo '<td>' . $row['pf_officer'] . '</td>'; 
    echo '</tr>'; 
} 

echo '</table>'; 
+0

Обе таблицы имеют общее поле «user_id» .... Кроме того, THANKS :) – ABC123

+0

У меня есть * некоторая синтаксическая ошибка. Я до сих пор ничего не вижу. На самом деле, я вижу меньше, когда пытаюсь присоединиться к столам. : -/но я ценю ваш вход !! – ABC123

+0

Если вы видите меньше, это нормально. Вам нужно сделать левое соединение, тогда как некоторые строки не существуют во второй таблице, то есть выберите * from phpbb_users left join phpbb_profile_fields_data на phpbb_profile_fields_data.user_id = phpbb_users.id –

0

Хорошо, моя проблема была связана с моим запросом. Я слепо пропустил, что я имел "phpbb_profile_fields_data.user_id = phpbb_users.id" вместо того, что он должен был сказать, что "phpbb_profile_fields_data.user_id = phpbb_users. * user_ * Идентификатор"

Facepalm, я знаю ... Я знаю ... Я действительно ценю вашу помощь и доброту! Ниже приведена рабочая копия моего кода, если кто-либо наткнется на это и в ней нуждается. :) СПАСИБО!

<?php 

$con = mysql_connect('hostname', 'username', 'password'); 
$db = mysql_select_db('db_name'); 

$sql = "select * from phpbb_users left join phpbb_profile_fields_data on phpbb_profile_fields_data.user_id = phpbb_users.user_id"; 
$query = mysql_query($sql); 

if (!$query) { echo "Error: ".mysql_error(); die(); } 

echo "<table>"; 

while($row = mysql_fetch_assoc($query)) 
{ 
echo "<tr><td>$row[user_avatar]</td>"; 
echo "<td>$row[pf_name]</td>"; 
echo "<td>$row[pf_business]</td>"; 
echo "<td>$row[pf_address]</td>"; 
echo "<td>$row[pf_phone]</td>"; 
echo "<td>$row[user_email]</td>"; 
echo "<td>$row[user_website]</td>"; 
echo "<td>$row[pf_officer]</td></tr>"; 
} 

echo "</table>"; 

?> 
+0

И @Eddie Jaoude вы даже указали мне на это. Мои глаза, должно быть, были перечеркнуты, потому что я не видел его ЧАСЫ. Мой о, мой ... СПАСИБО за ваше терпение и помощь. :) – ABC123

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