Имя:    Пароль:      Помнить меня       
Unsorted   ~  Software  ~  Development and Design  ~  Помощь по PHP Все вопросы по PHP сюда
На страницу «  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25  »
Doctor_Mozg
Сообщение  21 Ноя 2006, 16:37  Ссылка : Ответить с цитатой
Возраст: 38 Пол: Мужской  Доверенный пользователь
C нами с 25.01.2005
Репутация: 133

Язык программирования, разработанный специально для динамической генерации веб-страниц. Намного превосходит возможности SSI. Имеет функции работы с базами данных (MySQL), создания графических файлов Jpeg и PNG (библиотека GD), обработки XML-документов и многие другие.
В начало
Профиль : Фотоальбом : Личное Сообщение : ICQ
veloadmin
Сообщение  24 Июн 2009, 20:08  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 02.03.2007
Репутация: 108

......
FROM `users` users
inner join `sales` AS sales on sales.u_id = users.u_id
WHERE sales.u_id =2 AND sales.ctock >=750

Не получается, т.к. присоединяемым таблицам стоило бы задать имена Смайлик


Последний раз редактировалось: veloadmin (24 Июн 2009, 20:15), всего редактировалось 2 раз(а)
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : E-mail : Сайт : ICQ
Олег
Сообщение  24 Июн 2009, 20:09  Ссылка : Ответить с цитатой
Возраст: 45 Пол: Мужской  Доверенный пользователь
C нами с 27.03.2005
Репутация: 205.2

Павлин, "inner join"? Я в шоке! Страшные слова какие. Весело
Цитата:
WHERE sales.u_id ='2' и чтоб еще и тут же sales.ctock >='750'
На языке SQL фраза "и чтоб еще и тут же" выражается оператором AND. Улыбочка Только уберите там кавычки от чисел (2 и 750), ибо это числа, а не строки (и типы полей соответствующих, конечно, должны быть числовыми).

_____________________________
Уточняйте значение слов, и вы избавите человечество от половины своих заблуждений. Рене Декарт
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : E-mail
Павлин
Сообщение  24 Июн 2009, 20:20  Ссылка : Ответить с цитатой
Возраст: 38 Пол: Мужской 
C нами с 08.05.2009
Репутация: 5.6

Олег, Я и пишу так SELECT sales.klient, sales.stock, sales.number, sales.rest, sales.s_date, sales.t_name, sales.t_ypakovka, sales.u_id, users.u_id FROM `users`
inner join `sales` on sales.u_id = users.u_id WHERE sales.u_id =1 and sales.ctock >=750 А отвечает
Цитата:
#1054 - Unknown column 'sales.ctock' in 'where clause'

_____________________________
Прошу не тыкать в мануал его и так предостаточно!!!
В начало
Профиль : Личное Сообщение : Сайт : SkypeID : ICQ
veloadmin
Сообщение  24 Июн 2009, 20:23  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 02.03.2007
Репутация: 108

Павлин,См. что я выше написал. Ошибка означает что не может найтись такое...
Т.к. к полю ctock указан идентификатор sales, а он не определен ни для одной таблицы
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : E-mail : Сайт : ICQ
Олег
Сообщение  24 Июн 2009, 20:23  Ссылка : Ответить с цитатой
Возраст: 45 Пол: Мужской  Доверенный пользователь
C нами с 27.03.2005
Репутация: 205.2

Павлин, так что же тут поделаешь, если у Вас в таблице `sales` нет поля `ctock`? Улыбочка

Добавлено спустя 2 минуты 45 секунд:

veloadmin, не путайте человека. Улыбочка Алиасы заводить вовсе не обязательно. (Хотя и стоило бы для сокращения записи, может быть.)

_____________________________
Уточняйте значение слов, и вы избавите человечество от половины своих заблуждений. Рене Декарт
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : E-mail
Павлин
Сообщение  24 Июн 2009, 20:26  Ссылка : Ответить с цитатой
Возраст: 38 Пол: Мужской 
C нами с 08.05.2009
Репутация: 5.6

Олег, тысяча извинений спасибо я очепятку допустил не ctock а stock Юзер

Добавлено спустя 12 минут 52 секунды:

Олег,
Цитата:
Павлин, "inner join"? Страшные слова какие.

а что вас так удивило Улыбочка я учусь по вашему совету с простых примеров, а можно как ещё заменить?

Добавлено спустя 8 минут 19 секунд:

veloadmin, спасибо, а как делать с помощью алиаса можете примерчик подать не сложный

_____________________________
Прошу не тыкать в мануал его и так предостаточно!!!
В начало
Профиль : Личное Сообщение : Сайт : SkypeID : ICQ
Павлин
Сообщение  26 Июн 2009, 9:59  Ссылка : Ответить с цитатой
Возраст: 38 Пол: Мужской 
C нами с 08.05.2009
Репутация: 5.6

Олег, здравствуйте, как в php делать форматирование таблиц printf("<tr><td colspan="2">%s</td>\n", $row["u_name"]); не получается пишет
Цитата:
Parse error: syntax error, unexpected T_LNUMBER in Z:\home\test1.ru\www\index4.php on line 119

_____________________________
Прошу не тыкать в мануал его и так предостаточно!!!
В начало
Профиль : Личное Сообщение : Сайт : SkypeID : ICQ
Олег
Сообщение  26 Июн 2009, 11:13  Ссылка : Ответить с цитатой
Возраст: 45 Пол: Мужской  Доверенный пользователь
C нами с 27.03.2005
Репутация: 205.2

Павлин,
во-первых, у Вас в строковой константе, заключённой в кавычки, присутствуют кавычки, что не есть хорошо. Надо их либо экранировать: "<tr><td colspan=\"2\">%s</td>\n" — либо заменить на одиночные: "<tr><td colspan='2'>%s</td>\n".
Во-вторых, если Вы не собираетесь пользоваться "продвинутыми" средствами форматирования функции printf, то намного удобнее пользоваться echo и включать переменные прямо в строковую константу:
echo "<tr><td colspan='2'>$row[u_name]</td>\n";

Цитата:
а что вас так удивило
Почему-то никогда не сталкивался с "inner join" и даже толком не пойму, в чём его особенность по сравнению с обычным "join". Насколько я понимаю (могу ошибаться), обычный "join" эквивалентен перечислению таблиц через запятую (с указанием условия связывания). Ещё бывает полезен "left join", отличающийся тем, что если в левой таблице есть строки, не соответствующие ни одной строке правой таблицы, то они будут добавлены в результат, а соответствующие поля правой таблицы будут заменены на null. Ну т.е. пусть есть две таблицы:
Цитата:
Таблица `Color`:
`cid`, `color`
1, 'red'
2, 'green'
3, 'blue'
Таблица `Fruit`:
`fid`, `fruit`
1, 'red apple'
2, 'green apple'
Если эти таблицы объединить запросом "SELECT * FROM Color JOIN Fruit ON cid=fid;" — должно по идее получиться следующее (проверьте!):
Цитата:
`cid`, `color`, `fid`, `fruit`
1, 'red', 1, 'red apple'
2, 'green', 2, 'green apple'
А если в запросе заменить "join" на "left join", то должна появиться дополнительная строка в результате:
Цитата:
`cid`, `color`, `fid`, `fruit`
1, 'red', 1, 'red apple'
2, 'green', 2, 'green apple'
3, 'blue', null, null

_____________________________
Уточняйте значение слов, и вы избавите человечество от половины своих заблуждений. Рене Декарт
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : E-mail
biorobot
Сообщение  26 Июн 2009, 11:30  Ссылка : Ответить с цитатой
Возраст: 53 Пол: Мужской  Доверенный пользователь
C нами с 01.01.2008
Репутация: 77.1

Олег писал(а):
Почему-то никогда не сталкивался с "inner join" и даже толком не пойму, в чём его особенность по сравнению с обычным "join".
если речь про MySQL, то разницы нет (отсюда):
Цитата:
INNER JOIN and , (comma) are semantically equivalent in the absence of a join condition: both produce a Cartesian product between the specified tables (that is, each and every row in the first table is joined to each and every row in the second table).


Кстати,
... ON t1.id=t2.id
можно заменить на
... USING (id)
В начало
Профиль : Личное Сообщение
Олег
Сообщение  26 Июн 2009, 13:15  Ссылка : Ответить с цитатой
Возраст: 45 Пол: Мужской  Доверенный пользователь
C нами с 27.03.2005
Репутация: 205.2

biorobot писал(а):
(отсюда):
Цитата:
INNER JOIN and , (comma) are semantically equivalent in the absence of a join condition: both produce a Cartesian product between the specified tables (that is, each and every row in the first table is joined to each and every row in the second table).
biorobot, спасибо за справку! Я как раз по этому вопросу заглядывал на эту же страницу, но как-то не хватило терпения до нужного места. Отвлёкся на "In MySQL, CROSS JOIN is a syntactic equivalent to INNER JOIN (they can replace each other)". Велик и могуч SQL. Весело Впрочем теперь, с высоты полученных знаний, можно заметить, что ответ-то был в самом верху, в синтаксисе: "table_reference [INNER | CROSS] JOIN table_factor". Т.е. можно писать "INNER", можно писать "CROSS", а можно просто ничего не писать перед "JOIN", и это будет, наверное, самым правильным решением!

biorobot писал(а):
Кстати,
... ON t1.id=t2.id
можно заменить на
... USING (id)
Да я тоже всё время с удовольствием замечаю такую возможность и думаю "всё, буду пользоваться!" Но потом вспоминаю, что у меня в таблицах никогда не бывает полей с совпадающими именами. Улыбочка Да и если бы в двух таблицах было поле 'id' — с вероятностью 99% это были бы идентификаторы разных объектов, и объединять по ним было бы вовсе не "NATURAL". Улыбочка

_____________________________
Уточняйте значение слов, и вы избавите человечество от половины своих заблуждений. Рене Декарт
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : E-mail
biorobot
Сообщение  26 Июн 2009, 13:26  Ссылка : Ответить с цитатой
Возраст: 53 Пол: Мужской  Доверенный пользователь
C нами с 01.01.2008
Репутация: 77.1

У меня бывает, особенно когда many-to-many, типа
... FROM user_group ug JOIN groups g USING(group_id) ...
В начало
Профиль : Личное Сообщение
Олег
Сообщение  26 Июн 2009, 14:38  Ссылка : Ответить с цитатой
Возраст: 45 Пол: Мужской  Доверенный пользователь
C нами с 27.03.2005
Репутация: 205.2

biorobot, это один из аргументов в споре о том, как "правильно" (с точки зрения эстетики и удобства) именовать поля таблиц, который я уже давно веду с самим собой (за неимением под рукой других желающих). Улыбочка

Я обычно (как можно видеть из примера выше) добавляю в название поля "идентификатор" таблицы (первую букву или пару букв), чтобы все поля имели уникальные имена, и не приходилось плодить псевдонимов или обращаться по полному имени (с упоминанием таблицы). Напимер, в Вашем примере у меня поля назывались бы: `G_ID` в таблице `Group` и `UG_GID` в таблице `UserGroup` (в первом случае именно `G_ID`, а не `G_GID`, чтобы не было тавтологии). В этом есть даже некий "семантический" смысл: везде, где упоминается имя поля, ясно не только, какое это свойство, но и какого именно класса. (Например `U_Name` — не просто некое имя, а именно имя пользователя.)

Вообще меня эта тема интересует. Я знаю, что в некоторых больших открытых сообществах разработчиков документально фиксируются "правила хорошего тона" оформления текстов программ. Я видел такие правила, например, для C++ (или PHP, не помню точно), но никогда не видел подобных правил, касающихся именования таблиц и полей в базах данных. Если кто-то видел что-нибудь подобное — поделитесь информацией, пожалуйста!

_____________________________
Уточняйте значение слов, и вы избавите человечество от половины своих заблуждений. Рене Декарт
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : E-mail
Павлин
Сообщение  26 Июн 2009, 14:50  Ссылка : Ответить с цитатой
Возраст: 38 Пол: Мужской 
C нами с 08.05.2009
Репутация: 5.6

Олег,
Цитата:
echo "<tr><td colspan='2'>$row[u_name]</td>\n";
я решил проблему так
Цитата:
echo "<tr><td colspan=2>$row[u_name]</td>\n";
т.е. без ковычек
Еще вопрос из множества а
echo "<table border=1 bgcolor=#FFFFb1 cellspacing=10 cellpadding=2>\n";   

    while ($row3 = mysql_fetch_assoc($result3))
{
        echo "<tr>\n";
        printf("<td colspan=7><center>Период&nbsp;№$row3[period]</td>\n");
        echo "</tr>\n"; 
}

    while ($row2 = mysql_fetch_assoc($result2))
{
        echo "<tr>\n"; 
        printf("<td>$row2[u_name]</td>\n");
        printf("<td>$row2[t_ypakovka]</td>\n");
        printf("<td>$row2[klient]</td>\n");
        printf("<td>$row2[stock]</td>\n");
        printf("<td>$row2[number]</td>\n");
        printf("<td>$row2[s_date]</td>\n");
        printf("<td>$row2[rest]</td>\n");
        echo "</tr>\n"; 

}
        
        echo "</table>\n";
как мне сюда вставить форму ввода для каждой строки и чтоб то что вставил падало в mysql путём кнопочки?

_____________________________
Прошу не тыкать в мануал его и так предостаточно!!!
В начало
Профиль : Личное Сообщение : Сайт : SkypeID : ICQ
Олег
Сообщение  26 Июн 2009, 15:26  Ссылка : Ответить с цитатой
Возраст: 45 Пол: Мужской  Доверенный пользователь
C нами с 27.03.2005
Репутация: 205.2

Павлин писал(а):
т.е. без ковычек
Вариант, конечно, для начала, но вряд ли стоит привыкать так делать. Во-первых, когда появится значение какого-нибудь атрибута HTML, состоящее из нескольких слов, — кавычки понадобятся. Во-вторых, если захотите перейти со временем на XHTML — там кавычки обязательны, т.ч. больше кода перепроверять и поправлять придётся. В общем, пишите лучше одиночные кавычки.

Павлин писал(а):
Еще вопрос из множества а
Что за множество "A"? Я в шоке

Павлин писал(а):
как мне сюда вставить форму ввода для каждой строки и чтоб то что вставил падало в mysql путём кнопочки?
Замечательная у Вас способность: сформулировать "ТЗ" на весь рабочий день так, как будто надо вставить в уже готовый код парочку строк. Весело

Я пока могу лишь перечислить, чему нужно научиться для того, что Вам сейчас нужно:
  1. создавать формы в HTML (теги form и input);
  2. получать данные из форм в PHP (переменная $_REQUEST);
  3. добавлять и изменять данные в MySQL (операторы INSERT и UPDATE).
Докладывайте по пунктам: что получилось, что вызвало трудности...

Добавлено спустя 3 минуты 33 секунды:

Общая технология работы с формами в PHP такова. В начале скрипта проверяете, не пришли ли нужные данные (например, есть ли в массиве $_REQUEST нужное значение). Если данных ещё нет — выводите форму и завершаете скрипт. Если данные есть — обрабатываете их (например, кладёте в БД).

_____________________________
Уточняйте значение слов, и вы избавите человечество от половины своих заблуждений. Рене Декарт
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : E-mail
biorobot
Сообщение  26 Июн 2009, 16:17  Ссылка : Ответить с цитатой
Возраст: 53 Пол: Мужской  Доверенный пользователь
C нами с 01.01.2008
Репутация: 77.1

Олег писал(а):
biorobot, это один из аргументов в споре о том, как "правильно" (с точки зрения эстетики и удобства) именовать поля таблиц, который я уже давно веду с самим собой (за неимением под рукой других желающих). Улыбочка
Я не желающий! Смешно Я SQL не люблю, пишу по необходимости и как можно проще. Сарказм
Олег писал(а):
Я знаю, что в некоторых больших открытых сообществах разработчиков документально фиксируются "правила хорошего тона" оформления текстов программ.
Это бывает наверное во всех крупных компаниях (style guide, coding standard, etc.) и, действительно, в крупных сообществах, типа FSF/GNU.
Олег писал(а):
...но никогда не видел подобных правил, касающихся именования таблиц и полей в базах данных. Если кто-то видел что-нибудь подобное — поделитесь информацией, пожалуйста!
Да я вот бегло посмотрел, люди такую тему обсуждают: гугл
В начало
Профиль : Личное Сообщение
Показать сообщения:   
На страницу «  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25  »

Unsorted   ~  Software  ~  Development and Design  ~  Помощь по PHP

Ответить на тему

Перейти:  





Powered by phpBB   © Unsorted Team  support@unsorted.me  promo@unsorted.me  Полезные скрипты