Ru-Board.club
← Вернуться в раздел «Web-программирование»

» MySql/PHP: общие вопросы

Автор: Naezdnik
Дата сообщения: 28.04.2008 14:06
Такой вопрос.
MySQL и php.
Есть БД.
____________________
| ID | Товар | Описание |
=================

В БД три поля id, товар и описание.

На страницу выводится таблица с полями ID и Товар.

Как сделать, чтобы выводимые данные в таблице стали ссылками и при переходе по ссылке генерировалась новая страница со всеми полями БД.

Спасибо за внимание!
Автор: Cheery
Дата сообщения: 28.04.2008 16:59
Naezdnik

Цитата:
Как сделать, чтобы выводимые данные в таблице стали ссылками и

выводить их как
echo "<a href='script.php?id=".подставляем_переменную_содержащую_id_данного_товара."'>Ссылка</a>";
в script.php делаем что хочется..
Автор: Naezdnik
Дата сообщения: 29.04.2008 10:22

Код:

$connection = mysql_connect ("localhost", "root", "*******")
     or die (" Ошибка соединения с сервером ");
$my_site = mysql_select_db ("my_site", $connection)
or die ("Ошибка при выборе базы данных");
$query = "SELECT * FROM our_tovar";
$result = mysql_query ($query)
     or die ("Ошибка при выполнении запроса: .mysql_error ()");

        
        echo "<TABLE BORDER='1'>";
        echo "<TR>";
        echo "<TH> Товар </TH><TH> Цена от: </TH>";
        echo "</TR>";
        while ($row = mysql_fetch_array ($result))
        {
        echo "<TR>";
        echo "<TD>", $row ['tovar'], "</TD><TD>", $row ['price'], "</TD>";
        echo "</TR>";
        }
        echo "</TABLE>";

        
        
        mysql_close ($connection);
Автор: Delphi6
Дата сообщения: 29.04.2008 22:45
Naezdnik
Очень просто Правда писал наизусть, нужно проверить синтаксис

Код: ...
while ($row = mysql_fetch_array ($result)) {
echo "<TR>";
echo "<TD>"<a href=\"script.php?tovar={$row ['tovar']}\">{$row['price']}</a>"</TD><TD></TD>";
echo "</TR>";
}
...
Автор: Cheery
Дата сообщения: 29.04.2008 22:53
Naezdnik

Цитата:
И что писать в script.php?

то, что вы хотите там делать.. или думаете это очевидно из

Цитата:
по ссылке генерировалась новая страница со всеми полями БД

Автор: Absac
Дата сообщения: 30.04.2008 05:48
Помогите с mysql запросом, есть такой запрос, только таблиц побольше:


Цитата:
SELECT *
FROM book_work_themes
WHERE id_author =18
union
SELECT *
FROM book_communication_themes
WHERE id_author =18

order by data
limit 10



Можно как-то узнать при обработке запроса из какой таблицы он был сделан?

т.е. на php получается обработка этого запроса:
while ($main_array = mysql_fetch_assoc($main_iquery)) {
// тут нужно узнать из какой бд, а в массиве ничего о таблице нет ...
}
Автор: zerkms
Дата сообщения: 30.04.2008 08:43
SELECT *, 'work' AS `from` ...
UNION
SELECT *, 'communication` AS `from`

потом соответственно юзаешь $row['from']
Автор: Naezdnik
Дата сообщения: 30.04.2008 12:13
Delphi6
Cheery

Спасибо за участие! Проблема решена!
Автор: roddik
Дата сообщения: 17.05.2008 16:57
привет!
есть таблица, к примеру такая
id а б
1 1 1
2 1 2
3 2 2
4 2 1
нужно достать все значения, но с distinct по полю б, select * from `table` where 1 group by `b` но при этом нужно делать order by rand(), select * from `table` where 1 order by rand() group by `b`, проблема в том, что если писать order by перед group by, mysql возвращает ошибку, если писать order by после group by, ошибки нету, но достаются всегда те же значения (id 1 и id 2), меняется только порядок групп. как можно это сделать? спасибо!
Автор: Cheery
Дата сообщения: 18.05.2008 00:16
roddik

Цитата:
как можно это сделать?

а можно без sql описать желаемый результат?
Автор: zerkms
Дата сообщения: 19.05.2008 04:10
roddik
сортировка "внутри групп" невозможна. а в некоторых "нормальных" СУБД твой запрос не выполнился бы, потому как при группировке имеет смысл выборка лишь полей, по которым происходит группировка, либо тех, к которым применены аггрегирующие функции.
в твоём случае можно лишь посоветовать использовать вложенные запросы.
Автор: Dreiman
Дата сообщения: 21.05.2008 17:01
Прошу прощение за тупой вопрос))) Ну немогу я понять, как это сделать!!!
Есть БД (mysql) с таблицей "news" в одной строке под первым "id" (1) одна новость во второй строке, соответственно под вторым "id" (2) вторая новость так вот, как вывести в отдельный документ в одну ячейку(<td/>), новость под первым id, а во вторую под вторым id???
Автор: Cheery
Дата сообщения: 21.05.2008 17:41

Цитата:
как вывести в отдельный документ в одну ячейку(<td/>), новость под первым id, а во вторую под вторым id???

что вы называете "отдельным" документом? и одной ячейкой в нем..
хочется в разных ячейках таблицы выводить, так и "рисуете", сначала, теги таблицы.
потом в цикле выводите полученные данные из mysql и каждый из них между <td> и </td>
Автор: Dreiman
Дата сообщения: 21.05.2008 17:56
отдельный документ, я имею ввиду любую страницу ***.php. Да я понимаю, что в <td> дело в другом, я незнаю какой командой и как вывести информацию(текст) именной по "id". Обьясню по подробнее есть БД, в ней таблица с полями "id" "короткая новость"() и "полная новость", так вот. так вот ввели мы, например, три новости первая новсть-id1, вторая-id2 и тд. задача в том чтобы я смог их выводить по id в разных местах, например новость под первым "ид" в одной ячейке, а в под вторым во второй... вот
Автор: Cheery
Дата сообщения: 21.05.2008 17:59
Dreiman

Цитата:
я незнаю какой командой и как вывести информацию(текст) именной по "id"

$query="SELECT * FROM tablename WHERE id=".inval($_GET['id']);
и выполняем query
при этом при формировании списка новостей делаем линки вида
<a href='drugoi_document.php?id=id_этой_новости'>Подробнее</a>

это для вывода данной новости в новом "документе"
только ее.

а это "одно под другим" не совсем понятно
Автор: Dreiman
Дата сообщения: 21.05.2008 18:39
Что-то дуговатенько я понимаю ещё раз задам вопрос задача такая:
...
<table>
<tr>
<td>здесь надо вывести новость под первым "id"</td>
</tr>
<tr>
<td>а, здесь надо вывести новость под вторым "id"</td>
</tr>
</table>
...

как это реализовать? если можно также с кодом, пожалуйста очень надо а то на всех форумах "морозятся", вот ваш посоветовали...
Автор: Cheery
Дата сообщения: 21.05.2008 18:43
Dreiman

Цитата:
как это реализовать?

$query="SELECT * FROM tablename";
$result=mysql_query($query);

echo "<table>";
while ($row = mysql_fetch_assoc($result)) {
echo "<tr><td>".$row['имя_поля_в_базе_для_вывода']."</td></tr>";
}
echo "</table>";
Автор: Dreiman
Дата сообщения: 21.05.2008 19:24
а где же мы указываем по какому id выводим?
Автор: Cheery
Дата сообщения: 21.05.2008 19:25
Dreiman

Цитата:
а где же мы указываем по какому id выводим?

еще раз.. определитесь. вы хотите вывести ВСЕ id или какой то конкретный? если конкретный, то при чем тут один id под другим?
научитесь формулировать вопросы - и жизнь станет гораздо проще
Автор: Dreiman
Дата сообщения: 21.05.2008 20:35
Прошу прощения Да конечно, я имел ввиду чтобы выводить конкретный id...

Добавлено:
просто наверно не правильно выразился... я и имел ввиду, чтобы можно было выводить конкретные id их поля в нужных мне местах...
Автор: Cheery
Дата сообщения: 21.05.2008 21:17
Dreiman

Цитата:
просто наверно не правильно выразился... я и имел ввиду, чтобы можно было выводить конкретные id их поля в нужных мне местах...

опять же.. на основе того, что привел, можно было бы и составить

$query="SELECT * FROM tablename";
$result=mysql_query($query);

$data=array();

while ($row = mysql_fetch_assoc($result))
$data[$row['id']]=$row;

ну и выводим данные, где нужно как
echo $data[номер_id]['имя_стоблца']
Автор: Dreiman
Дата сообщения: 21.05.2008 21:34
огромное спасибо за терпение)))
Автор: Alexabr
Дата сообщения: 31.05.2008 03:49
Сорри, если не по адресу, но я себе уже все мозги сломал .
Есть уязвимость в php - движке, описанная на багтраке. SQL-injection. В запрос вот такого вида:

SELECT a FROM t1 LEFT JOIN t2 ON t1.p4=t2.p4 LEFT JOIN t3 ON t1.p6=t3.p6 WHERE (t1.p25=d OR t1.25=c) AND t1.p26=0 ORDER BY t1.p10 DESC LIMIT [...X...],10

вместо [...X...] можно подсунуть что угодно.
Но хоть убей не пойму что туда можно подставить чтобы что-то поиметь. А заделывать дыру которой не видишь очень тяжко .
Хелп ми, плиз!
Автор: Cheery
Дата сообщения: 31.05.2008 03:55
Alexabr

Цитата:
А заделывать дыру которой не видишь очень тяжко .
Хелп ми, плиз!

и что ее заделывать? сделать для того значения, что там используется, intval и все.
Автор: Alexabr
Дата сообщения: 31.05.2008 14:21

Цитата:
сделать для того значения, что там используется, intval и все.


Ну до этого, положим, я уже додумался
Удручает другое - раз на багтраке считают, что это дыра, а я ее в упор не вижу, значит я чего-то не понимаю .
На мой взгляд, никакой код в это место не лезет, в худшем случае получится ошибка синтаксиса. Или я не прав?
Автор: Dreiman
Дата сообщения: 31.05.2008 22:01
Доброго времени суток, ещё один вопрос:
Нужно ещё раз ваша помощь реализовать вывод, как и в предыдущий раз, только теперь не просто конкретный id, а ещё и с конкретным параметром "год участия"(в таблице поле "year"). К примеру нужно выввести имя учасника 2008 года номер id, которого = 1.

Я пробывал сделать так, но не выходит:

$query="SELECT * FROM tablename";
$result=mysql_query($query);

$data=array();

while ($row = mysql_fetch_assoc($result))
$data[$row['id']['year']]=$row;

ну и выводим данные, где нужно как
echo $data[номер_id][номер_year]['имя_стоблца']

Если не правильно, огромная просьба, пожалуйста подскажите как...
Автор: Dreiman
Дата сообщения: 01.06.2008 12:35
Cheery, прошу прощения за наглость))) Я очень прошу подскажите последний этот момент и всё, честное слово, очень нужно!!!
Автор: Dreiman
Дата сообщения: 01.06.2008 19:40
Глубокоуважаемая администрация, прошу прощения за предыдущие два сообщения))) я просто серьёзно тупанул))) оказалось стоило поразмыслить чуток мозгами и всё получилось!!!
Автор: werdikt
Дата сообщения: 02.06.2008 11:27
Помогите! Делаю сайт по курсовой, и мне надо сделать такую подписку: на главной странице у меня поле для ввода е-мейл и две кнопки - отписаться и подписаться, как сделать чтобы после того как введено мыло в поле, и нажав кнопку подписаться, добовлялось мыло в базу данных или другой файл (подскажите мож какой другой). А если мыло такое есть, то выводилось соответствующее сообщение. А при отписке тоже ввести мыло и нажать кнопку отписаться, и чтоб удалялось мыло из бд и тож выводилось сообщение. Конечно, я понимаю, что это очень глупый метод и вообще не продуманый, и его надо реализовать с помощью SQL, а времени нет изучать его. Пмогите!!! плиз, курсач горит
Автор: 6epcepk
Дата сообщения: 02.06.2008 13:46
При нажатии отправляем форму методом POST, проверяем/добавляем полученный e-mail в скрипте, на который ссылается форма.


Цитата:
а времени нет изучать его. Пмогите!!! плиз, курсач горит

Для этих целей есть соответствующий раздел - http://forum.ru-board.com/topic.cgi?forum=24&topic=2604&start=940#lt

ПС: тут нет альтруистов.

ПСС: не понимаю людей, которые дотягивают сдачу работ до последнего.

Страницы: 12345678910111213

Предыдущая тема: PHP: лимит времени на выполнение скрипта


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.