Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » MySQL Помогите составить запрос

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

Открыть новую тему     Написать ответ в эту тему

Jokerjar79



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Уж не знаю, может и проще как то можно...
 

Код:
select *, (p_hour*60 + p_minute) as minutes from table having minutes > hour(now())*60 + minute(now()) union (select *,(p_hour*60 + p_minute) as minutes from table having minutes <= hour(now())*60 + minute(now()) order by minutes desc limit 1) order by minutes;

Всего записей: 710 | Зарегистр. 08-09-2007 | Отправлено: 18:47 01-06-2009 | Исправлено: Jokerjar79, 18:50 01-06-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bubliy

Цитата:
p_hour, p_minute,

зачем так? что вам мешает использовать нормальные типы для времени?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:35 01-06-2009
bubliy

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
зачем так? что вам мешает использовать нормальные типы для времени?

База уже существует три года, довольно большая. Данные для нее формирует софт, который никто дорабатывать не собирается

Цитата:
select *, (p_hour*60 + p_minute) as minutes from table having minutes > hour(now())*60 + minute(now()) union (select *,(p_hour*60 + p_minute) as minutes from table having minutes <= hour(now())*60 + minute(now()) order by minutes desc limit 1) order by minutes;

Спасибо, попробую разобраться

Всего записей: 22 | Зарегистр. 26-05-2009 | Отправлено: 20:29 01-06-2009
SparcoCF

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть база, в ней таблица:
Data
id
text

 
Нужно что бы средствами ПХП можно было редактировать данные колонки text
 
Делаю так:

Код:
 
подключение к базе
 
$result = mysql_query("SELECT * FROM v0 WHERE id>0");
 
echo " <form method='POST' action='' name=''>";
while($row = mysql_fetch_array($result))
  {
echo "<input name='area' type='text' value='" . $row['area'] . "'>";
  }
 
<input type='submit' value='OK' name='on' />
</form>
 
if (isset($_POST['on'])) {
        $query="UPDATE v0 SET area = '".mysql_real_escape_string($_REQUEST['area'])."' WHERE id=id>0";
       $result=mysql_query($query); echo "$query";
    }
 

 
Так вот как составить правильно запрос что бы если например у меня в таблице 5 строк, и я заполнил например только инпуты второй и четвертой строки они передались в базу ?
Дело в том что как указано в моем примере когда я заполняю допустим первый инпут, все строки в базе заполняются этим значением.
Как правильно реализовать редактирование данных в базе через ПХП?

Всего записей: 110 | Зарегистр. 21-03-2009 | Отправлено: 14:29 18-06-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SparcoCF

Цитата:
Как правильно реализовать редактирование данных в базе через ПХП?

нужно в форме или в сессиях.. сохранять еще и id записей, чтобы потом обновлять обращаясь по ним.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 18:39 18-06-2009
SparcoCF

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Если можно, дайте маленький убогий примерчик или ссылку какую то на мануал что бы я понял что и как сделать.
 
может запрос должен выглядеть так:  
 
$query="UPDATE v0 SET area = '".mysql_real_escape_string($_REQUEST['area'])."' WHERE id=$id";
 
где $id=$row['id'] ?Или как сохранять id в форме ? (с сессиями я пока не подружился)

Всего записей: 110 | Зарегистр. 21-03-2009 | Отправлено: 19:05 18-06-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SparcoCF

Цитата:
Или как сохранять id в форме ? (с сессиями я пока не подружился)  

например в name
name='elname[id]'
где id и есть цифровой id

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:08 18-06-2009
SparcoCF

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
например в name
name='elname[id]'
где id и есть цифровой id

 
Попробовал так сделать:
 
echo "<td><input name='area[id]' type='text' value='" . $row['area'] . "'></td>";
 
$query="UPDATE v0 SET area = '".mysql_real_escape_string($_REQUEST['area'])."' WHERE id=id";
 
но получил предупреждение:
Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in test.php on line 42
 
я наверное опять оплошал здесь name='area[id]' с синтаксисом.

Всего записей: 110 | Зарегистр. 21-03-2009 | Отправлено: 19:29 18-06-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SparcoCF
еще раз .. заменяем id цифровым значением id для конкретной записи.

Цитата:
WHERE id=id

что это ?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:05 18-06-2009
SparcoCF

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ничего не получается
 

Цитата:
еще раз .. заменяем id цифровым значением id для конкретной записи.  

дело в том что у меня все данные выводятся массивом  

Код:
while($row = mysql_fetch_array($result))  

так что просто вписать цифровое значение id для конкретной записи не подходит так как она не одна. Но для теста пусть будет и одна.
делаю так  
echo "<td><input name='area[1]' type='text' value='" . $row['area'] . "'></td>";  
 
но все же дальше появляется предупреждение:  
Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in test.php on line 42
 
Пробую и так:

Код:
echo "<td><input name='area[". $row['id'] ."]' type='text' value='" . $row['area'] . "'></td>";  

Но все то же.
 
 

Всего записей: 110 | Зарегистр. 21-03-2009 | Отправлено: 20:22 18-06-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SparcoCF

Цитата:
Ничего не получается

потому что не думаете. совсем

Цитата:
дело в том что у меня все данные выводятся массивом  

и что?  

Цитата:
так что просто вписать цифровое значение id для конкретной записи не подходит так как она не одна.

глупость пишите

Цитата:
Пробую и так:  

а при чем тут "так"? вы хоть обращаете внимание на текст ошибки???  

Цитата:
Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in test.php on line 42  



----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:19 18-06-2009
SparcoCF

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Цитата:
дело в том что у меня все данные выводятся массивом  
 
и что?

 
Ну как что ? Если я укажу конкретный id значит у меня будет апдейтиться только строка которая соответствует ему, или я не правильно что то понимаю. Объясните если не сложно.
 
Конечно что обращаю и понимаю что mysql_real_escape_string() ожидает что параметр будет string (не знаю как правильно перевести) а получает массив. А получает он массив потому что он находиться в функции while($row = mysql_fetch_array($result)) или я не прав ?

Всего записей: 110 | Зарегистр. 21-03-2009 | Отправлено: 21:33 18-06-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SparcoCF

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

а вам что нужно?  
вы же хотите обновить запись? для этого нужно обновить только ту, которую вы изменили.  
то есть каким то образом передать ее id и связать его с тем полем в форме, в котором вы меняете текст.
 

Цитата:
А получает он массив потому что он находиться в функции while($row = mysql_fetch_array($result)) или я не прав ?

 
кто он??? да елки палки - речь о mysql_query и переданных параметрах из формы.
как только у вас name выглядит как что_то[] - это уже массив
то есть $_POST['имя_поля'] является массивом

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:37 18-06-2009
SparcoCF

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да не злитесь Cheery оно того не стоит, я понимаю что это для вас элементарщина но не все программисты от природы.
 
Вроде бы начинаю понимать а может и нет:
 

Код:
$query="UPDATE v0 SET area = '".mysql_real_escape_string($_POST['area'])."' WHERE id=`".mysql_real_escape_string($_POST['area[id]'])."`";

 
Правильно я понял, или нет ?

Всего записей: 110 | Зарегистр. 21-03-2009 | Отправлено: 21:53 18-06-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SparcoCF

Цитата:
Правильно я понял, или нет ?  

нет
сделайте
print_r($POST['area']);
и рассматривайте

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:55 18-06-2009
SparcoCF

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
print_r($POST['area']);  

 
Сделал выводит самое последнее значение массива. А что бы выводилось то что я редактирую нужно привязать id но я не могу понять куда именно его привязать, я уже совсем запутался, делаю так  
 
while($row = mysql_fetch_array($result))
  {
echo "<td><input name='area[2]' type='text' value='" . $row['area'] . "'></td>";
}
 
не работает, оно и правильно что не работает поскольку я здесь name='area[2]' не указываю что двойка это айди, а как указать не знаю.
 
Пожалуйста, ткните меня носом в пример и мне на душе полегчает, а то я сам никак не додумаюсь а на примерах легче учиться.

Всего записей: 110 | Зарегистр. 21-03-2009 | Отправлено: 22:08 18-06-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
думать просто надо.  

Код:
<form method=post action='script.php'>
<input type=text name='txt[1]'>
<input type=text name='txt[3]'>
<input type=text name='txt[4]'>
<input type=submit>
</form>

вбито в первое поле text1, во второе text2, в третье.. соответственно.
результат

Цитата:
print_r($_POST["txt"]);    
 
Array
(
    [1] => text1
    [3] => text2
    [4] => text3
)
 

 
1,3,4 заменяете на нужный вам id.. ну неужели сложно понять такие простые вещи?  
тогда программирование не для вас

Код:
while($row = mysql_fetch_array($result))
  {
echo "<td><input name='area[".$row['id']."]' type='text' value='" . $row['area'] . "'></td>";
}  


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:17 18-06-2009 | Исправлено: Cheery, 22:18 18-06-2009
SparcoCF

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Большое спасибо за ответ и все таки я приводил такой пример выше:

Цитата:
Пробую и так:
 
Код:
echo "<td><input name='area[". $row['id'] ."]' type='text' value='" . $row['area'] . "'></td>";  

 
но вы сказали что не правильно.
 
Хорошо я получаю массив следующего вида:
id => значение введенное в инпут
 
как мне теперь отделить id от значения, что бы я смог его вставить в запрос который апдейтит таблицу ? Тоесть: $query="UPDATE v0 SET area = 'значение инпута' WHERE id=айди";
 
И не злитесь Cheery теперь вы видите как тяжело преподавателям в универах.
 
П.С.: ОГРОМНОЕ спасибо за уже оказанную помощь, и титаническое терпение.

Всего записей: 110 | Зарегистр. 21-03-2009 | Отправлено: 23:28 18-06-2009
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
но вы сказали что не правильно.

я говорил про query.. как вы его выполняете, так как на него ругалось с ошибкой

Цитата:
как мне теперь отделить id от значения, что бы я смог его вставить в запрос который апдейтит таблицу ? Тоесть: $query="UPDATE v0 SET area = 'значение инпута' WHERE id=айди";

foreach($_POST['txt'] as $id=>$val)
{
 
 
}
 

Цитата:
теперь вы видите как тяжело преподавателям в универах.

я сам преподаю временами в университете и гораздо более сложный предмет

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:56 18-06-2009
lagudal



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите, как лучше сделать
Есть база, скажем "foto" , в ней таблица "images", много полей там, среди которых для меня важны 2 - id  и tags
Понятно, что это прописанные теги для фотографий. Фотографий много, вручную тяжко теги писать. Поскольку картинки по категориям, то теги должны быть разные к разным массивам картинок. Получается, надо сделать примерно следующее:
Для каждого id (int(5)) из диапазона от 1 до 100 добавить в поле tags  (text)значение свадьба,vestuves,свадебный фотограф - строку, содержащую слова и словосочетания через запятую без пробелов.
Для id из другого диапазона - от 101 и т.д. - соответственно добавить в нужное поле другое значение. Ну и так далее.  
При этом, id идут не строго по порядку, т.е. в каждом диапазоне некоторых id может не быть, поскольку какие то фото вначале были, а затем были отредактированы или удалены, и какие то id стало быть отсутствуют..

Всего записей: 37 | Зарегистр. 30-09-2008 | Отправлено: 11:38 19-01-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

Компьютерный форум Ru.Board » Интернет » Web-программирование » MySQL Помогите составить запрос


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru