[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выборка из двух таблиц
Страницы: 1, 2, 3
OleKh
Цитата (Wladim @ 5.03.2013 - 18:39)
исправил, спасибо.

тогда если
tbl1 - 20130124000003 = tbl2 - 20130124000003'
может так проверить
WHERE 
tbl1.avtor_key = 3 and
tbl1.loc_num = tbl2.loc_num

Цитата (Wladim @ 5.03.2013 - 18:39)
но выводит по-прежнему Цитата Автор:  РодинаLocation Number (LN): 24000110Цель:   Текст1Автор:  РодинаLocation Number (LN): 24000110Цель:   Текст3Автор:  РодинаLocation Number (LN): 24000110Цель:   Текст4а не Цитата Автор:  РодинаLocation Number (LN): 24000110Цель:   Текст1Цель:   Текст3Цель:   Текст4

вообще дальше в цикле нужно правильно выбрать по условию, чтобы Автор: Родина
Location Number (LN): 24000110 1 раз выводилось, а Цель: Текст4 максимальное кол-во
Wladim
Цитата
Расскажите почему у вас не срослось с "переносом" avtor_key?

avtor_key формируется в Табл 1 при регистрации посетителя как AUTO_INCREMENT, а Табл2 заполняется при каждом посещении пользователем (со своим avtor_key) определённой страницы, где он вводит свой loc_num и заполняет поле Цель (cel). Здесь я использовал
Цитата
<input type="hidden" name="avtor_key" maxlength="60" size="90">
но это не помогло и заносится в Табл 2 порядковое число, а не avtor_key

_____________
в Начале было СЛОВО, а потом - словоЗАслово и ... как поехало! http://a-plagiata.net/service/
Wladim
Цитата
в цикле нужно правильно выбрать по условию, чтобы
OleKh, вот мой цикл
$myrow = mysql_fetch_assoc($result);
do
{
printf ("<table align='center' class='post' border='0'><tr><td>
<p>Автор: %s </p>
<p>Location Number: %s </p>
<p>Цель: %s </p>
</td></tr></table>"
,$myrow['fam'],$myrow['loc_num'],$myrow['cel']);
}
while ($myrow = mysql_fetch_assoc($result));
Как выбрать по условию?

_____________
в Начале было СЛОВО, а потом - словоЗАслово и ... как поехало! http://a-plagiata.net/service/
Valick
ну вообще-то avtor_key должно храниться в сессии, раз уж у вас есть регистрация, то смею предположить есть и авторизация, и также полагаю и сессии с ними...

но можно и в hidden для пущей важности запихать, хотя смысла в этом особого нет
echo '<input type="hidden" name="avtor_key" value="'.$myrow['avtor_key'].'">";
maxlength="60" size="90" - тут не нужны)) его все равно не видно)

_____________
Стимулятор ~yoomoney - 41001303250491
Wladim
Valick, и авторизация, и сессия есть...
$result = mysql_query ("INSERT INTO Табл2 (avtor_key, cel, loc_num) VALUES ('$avtor_key', '$cel', '$loc_num')");
но avtor_key в Табл2 не заносится.

_____________
в Начале было СЛОВО, а потом - словоЗАслово и ... как поехало! http://a-plagiata.net/service/
Valick
как принимаете avtor_key из формы? GET или POST?

_____________
Стимулятор ~yoomoney - 41001303250491
Wladim
Valick, из формы avtor_key принимаю GET

_____________
в Начале было СЛОВО, а потом - словоЗАслово и ... как поехало! http://a-plagiata.net/service/
OleKh
Цитата (Wladim @ 5.03.2013 - 19:07)
Как выбрать по условию?

может не самый оптимальный вариант, но можно проверить
$myrow = mysql_fetch_assoc($result);
printf ("<table align='center' class='post' border='0'><tr><td>
<p>Автор: %s </p>
<p>Location Number: %s </p>
</td>"
,$myrow['fam'],$myrow['loc_num']);
while ($myrow = mysql_fetch_assoc($result)){
printf ("<td> <p>Цель: %s </p></td>", $myrow['cel']);
}

echo '</tr></table>';

Wladim
OleKh, проверил и ... сообщение: "Вы запустили данный файл без параметра"
И действительно, в адресной строке нет "?avtor_key=110"

_____________
в Начале было СЛОВО, а потом - словоЗАслово и ... как поехало! http://a-plagiata.net/service/
OleKh
$myrow = mysql_fetch_assoc($export_query);
for ($i = 0; $i<sizeof($myrow); $i++){
if ($i == 0) {
printf ("<table align='center' class='post' border='0'><tr><td>
<p>Автор: %s </p>
<p>Location Number: %s </p>
<p>Цель: %s </p>
"
,$myrow['fam'], $myrow['loc_num'],$myrow['cel']);
} else {
printf (" <p>Цель: %s </p>", $myrow['cel']);
}
}


echo '</td></tr></table>';
Valick
CREATE TABLE IF NOT EXISTS `autor` (
`avtor_key` int(11) NOT NULL AUTO_INCREMENT,
`fam` varchar(200) NOT NULL,
`loc_num` varchar(16) NOT NULL,
PRIMARY KEY (`avtor_key`)
)
ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;

--
-- Дамп данных таблицы `autor`
--

INSERT INTO `autor` (`avtor_key`, `fam`, `loc_num`) VALUES
(2, 'Фоменко', '20130114000002'),
(3, 'Родина', '20130124000003'),
(4, 'Капанадзе', '20130123000004'),
(5, 'Благин', '20130218000005');

CREATE TABLE IF NOT EXISTS `cel` (
`id` int(12) NOT NULL AUTO_INCREMENT,
`avtor_key` int(11) NOT NULL,
`cel` varchar(250) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;

--
-- Дамп данных таблицы `cel`
--

INSERT INTO `cel` (`id`, `avtor_key`, `cel`) VALUES
(1, 2, 'Текст1'),
(2, 5, 'Текст2'),
(3, 2, 'Текст3'),
(6, 2, 'Текст4');

<?php
header('Content-type: text/html; charset= utf-8');
include('connect.php');
if(isset($_POST['go'])){
if(isset($_POST['avtor_key'])){
if(is_array($_POST['avtor_key'])){
// тут надо провести валидацию массива $_POST['avtor_key']
$id = implode(',',$_POST['avtor_key']);
$query="SELECT c.cel, a.avtor_key, a.fam
FROM `cel` c
INNER JOIN (SELECT avtor_key, fam
FROM `autor`
WHERE avtor_key IN(
$id)) a
USING (avtor_key)
ORDER BY a.fam"
;
$res = mysql_query($query) or die(mysql_error());
$ch = '';
if($res){
if(mysql_num_rows($res)){
while($row = mysql_fetch_assoc($res)){
if($row['avtor_key']<>$ch){
$ch = $row['avtor_key'];
echo $row['fam'].'<br />';
}
echo $row['cel'].'<br />';
}
}
}
}
}
}

?>
<form method="post">
<?php
$result = mysql_query("SELECT * FROM `autor`");
while ($myrow = mysql_fetch_assoc($result)){
printf ("<p><input name='avtor_key[]' type='checkbox' value='%s'><label>
<strong> %s</strong></label></p>"
,$myrow['avtor_key'],$myrow['fam']);
}
?>
<p><input name="go" type="submit" value="Выбрать"></p>
</
form>


_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.