X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Вывод необходимых строк из MySQL
BOKOREZ
BOKOREZ
Topic Starter сообщение 27.11.2015, 21:58; Ответить: BOKOREZ
Сообщение #1


Доброго времени суток, господа! Подскажите, что в этом коде не так?
[PHP]$sequery = "SELECT * FROM mytables WHERE user = $user_id LIMIT 0, 10";
$seresult = mysql_query($sequery);
if($sequery) {
while($se = mysql_fetch_array($seresult)):
$tables = "<tr><td>$se[name]</td><td>$se[desc]</td><td>$se[app]</td></tr>";
endwhile;

$fulltables = "<table>$tables</table>";
}
else
{
$fulltables = "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}[/PHP]
Задача предельно простая, вывести из таблицы все поля, содержащие нужный $user_id, и засунуть их в переменную $tables. Итог: вижу только последнее добавленное поле.
Пятой точкой чувствую, что косяк здесь:
[PHP]$tables = "<tr><td>$se[name]</td><td>$se[desc]</td><td>$se[app]</td></tr>";[/PHP]
[PHP]$fulltables = "<table>$tables</table>";[/PHP]
Ткните носом, не понимаю я, что делать=)
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
BOKOREZ
BOKOREZ
Topic Starter сообщение 28.11.2015, 18:36; Ответить: BOKOREZ
Сообщение #2


Каюсь, элементарных вещей не заметил. Сам спросил, сам разобрался. Если кому интересно, решение ниже:
[PHP]$sequery = "SELECT * FROM mytables WHERE user = $user_id LIMIT 0, 30";
$seresult = mysql_query($sequery);
if($sequery) {
ob_start();
while($se = mysql_fetch_array($seresult)):
echo "<tr><td>$se[name]</td><td>$se[desc] рублей</td><td>$se[app]</td></tr>";
$fulltables = ob_get_contents();
endwhile;
ob_end_clean();
}
else
{
$fulltables = "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Degradator
Degradator
сообщение 30.11.2015, 15:01; Ответить: Degradator
Сообщение #3


[IMG]http://risovach.ru/upload/2013/08/mem/malysheva_27435826_orig_.jpg[/IMG]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Degradator
Degradator
сообщение 30.11.2015, 15:04; Ответить: Degradator
Сообщение #4


Можно спросить, что именно проверяет вот это условие?
[PHP]if($sequery) [/PHP]

И зачем тут вобще нужен ob_start();? Наверно, никогда не слышал про сложение строк?

Ну и никогда не видел конструкций вида while(): - endwhile;, обычно делают while(){}
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
BOKOREZ
BOKOREZ
Topic Starter сообщение 1.12.2015, 5:43; Ответить: BOKOREZ
Сообщение #5


(Degradator @ 30.11.2015, 17:04) *
Можно спросить, что именно проверяет вот это условие?
[PHP]if($sequery) [/PHP]


[PHP]if(check_value($sequery), $min_val, $max_val) {...}[/PHP]
Оно у меня является числом, и тут я его проверяю на допустимость. Сорри, что при добавке поста не указал это, проблема была в другом, не посчитал нужным писать весь код.

[PHP] while():
...
endwhile;[/PHP]
Подскажите, что плохого в такого вида конструкции?
Ну и почему нельзя использовать ob_start();?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Degradator
Degradator
сообщение 1.12.2015, 17:14; Ответить: Degradator
Сообщение #6


$sequery = "SELECT * FROM mytables WHERE user = $user_id LIMIT 0, 30";
if($sequery)

Оно у меня является числом, и тут я его проверяю на допустимость

Точно оно является числом?

Ну и почему нельзя использовать ob_start();?

плохо для производительности, тем более не надо использовать если можно просто сложить строки. Да, можно складывать строки.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Den1xxx
Den1xxx
сообщение 1.12.2015, 19:21; Ответить: Den1xxx
Сообщение #7


(Degradator @ 30.11.2015, 17:04) *
И зачем тут вобще нужен ob_start();? Наверно, никогда не слышал про сложение строк?

Это такая заглушка. Когда нет ожидаемых данных или когда какой-нибудь умник поимеет БД, скрипт типа не будет сыпать ошибками «Warning», т.к. всё закешировано.
ТС видимо никогда не слышал про экранирование данных и про проверки isset и !empty.
Чувствую, нет, даже знаю, что его ожидает много боли.

(Degradator @ 30.11.2015, 17:04) *
никогда не видел конструкций вида while(): - endwhile;

Ну это ещё одна конструкция, видимо из знаменитого учебника Попова про PHP 4.
В своих особо ценных советах он ещё любит do .... while использовать вместо foreach, но здесь к сожалению не пригодилось.\

Ещё я совсем не понимаю, зачем здесь переменной $fulltables присваивается каждый раз новое значение, переписывая предыдущее:
[PHP] while($se = mysql_fetch_array($seresult)): echo "<tr><td>$se[name]</td><td>$se[desc] рублей</td><td>$se[app]</td></tr>"; $fulltables = ob_get_contents(); endwhile;[/PHP]

А ещё я не заметил, чтобы переменная $fulltables была определена. Что может вызвать ошибку Warning, как раз и подавляемое этим странным кешированием вывода.

BOKOREZ, держите медальку, Вы заработали:
[IMG]http://s4.pikabu.ru/post_img/big/2015/05/07/6/1430989171_1871837159.jpg[/IMG]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
BOKOREZ
BOKOREZ
Topic Starter сообщение 2.12.2015, 5:00; Ответить: BOKOREZ
Сообщение #8


Господа, спасибо за критику. И за медальку тоже, давно чувствую, что она мне нужна.
ТС видимо никогда не слышал про экранирование данных и про проверки isset и !empty.

Про проверки empty и isset слышал, и использую их довольно таки везде. Просто здесь указывать не стал, дабы не уходить от сути проблемы. А суть проблемы была в другом совсем.
Точно оно является числом?

Точно, перепроверил 850 раз. А именно на допустимые символы только от 0 до 9, на отсутствие спецсимволов, знаков минус и плюс итд итп. Честно, проверяю досконально, безопасность же...
По поводу сложения строк не совсем понял, объяснять не объясняйте, у вас без сарказма не получается, а мне стремненько. Если можно, дайте вменяемую и правильную инфу.
(Den1xxx @ 1.12.2015, 21:21) *
Ещё я совсем не понимаю, зачем здесь переменной $fulltables присваивается каждый раз новое значение, переписывая предыдущее

А как правильно? Я ведь только учусь=)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
BOKOREZ
BOKOREZ
Topic Starter сообщение 2.12.2015, 16:05; Ответить: BOKOREZ
Сообщение #9


Господа, я тут погуглил... Ну если опустить все проверки (честно, они есть) и обратить внимание на суть моего вопроса... так правильно?=)

[PHP]while($se = $sequery->fetch_array()){
$fulltable .='<tr>';
$fulltable .= '<td>'.$se['name'].'</td>';
$fulltable .= '<td>'.$se['cost'].'</td>';
$fulltable .= '<td>'.$se['approved'].'</td>';
$fulltable .='</tr>';
}
$fulltable .= '</table>';[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Degradator
Degradator
сообщение 2.12.2015, 19:19; Ответить: Degradator
Сообщение #10


так правильно?

определенно лучше. Вобще, использовать fetch_array я не рекомендую. Лучше юзай fetch_assoc или хотябы fetch_array (MYSQLI_ASSOC)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Ручной обмен, ввод/вывод электронных валют | ЮMoney, WMZ, Крипта, Приват, Монобанк | Низкие комиссии, минимальные суммы сделок
быстро, удобно, по доступному курсу
200 Sostavitel 97661 11.2.2024, 21:07
автор: Wolfhound
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1168 24.11.2023, 14:46
автор: alexey
Открытая тема (нет новых ответов) Sbitcoin.ru – Ввод, Вывод, Обмен: Qiwi, YD, Btc, Btc-e, PM, Cash IN, PR24, MG, WU, Нал (RU, UA).
9 sbitcoinru 6746 10.10.2023, 19:25
автор: Sbitcoin
Горячая тема (нет новых ответов) Обмен WebMoney - Яндекс - QIWI. Вывод/ввод Приват24 UAH
225 himin 132447 7.5.2023, 13:26
автор: Вера_Симонова
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлы«»101Crypta.com«»ВВОД/ВЫВОД/ОБМЕН«»BTC/ETH/QIWI/USDT/VISA/MC«»НАЛИЧНЫЕ/СНГ/ЕВРОПА«»
13 101Crypta 12130 18.4.2023, 23:15
автор: 101Crypta


 



RSS Текстовая версия Сейчас: 28.3.2024, 17:26
Дизайн