Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вот как так сделать?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
new01
Отправлено: 17 Февраля, 2011 - 15:48:13
Post Id



Посетитель


Покинул форум
Сообщений всего: 301
Дата рег-ции: Июнь 2010  
Откуда: Челябинск


Помог: 1 раз(а)




Есть таблица со строками id и name .Иногда надо удалить запись.Так вот делаю это так
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $host = "localhost";
  3. $username = "zet";
  4. $password = "******";
  5. $connect = mysql_connect("$host","$username","$password") or die("Yb");
  6. mysql_select_db("zet", $connect );
  7. if(!$connect)
  8. {
  9. echo"ERROR_база";
  10. }
  11. else
  12. {
  13. $sql ="DELETE FROM table1
  14. WHERE id='2';";
  15. $result=mysql_query($sql) or die (mysql_error());
  16. }
  17. mysql_close($connect);
  18. ?>
  19.  
  20.  
  21.  
  22.  


Всё выходит ,запись с id=2 удаляется ,но вот возникает другая проблема,у меня например уже записано 1000 запсей ,их номера идут по порядку.ТАк вот когда одну запись удаляю остается 999 записей,но id не перестраивается ,последнее всё равно id=1000,а должно быть равно 999.Как так сдлеать?

(Отредактировано автором: 17 Февраля, 2011 - 15:48:55)



-----
new01
 
 Top
grefon
Отправлено: 17 Февраля, 2011 - 16:11:40
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Никак! Это невозможно. id на то и id, чтобы быть неизменным идентификатором строки.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
new01
Отправлено: 17 Февраля, 2011 - 16:16:07
Post Id



Посетитель


Покинул форум
Сообщений всего: 301
Дата рег-ции: Июнь 2010  
Откуда: Челябинск


Помог: 1 раз(а)




grefon пишет:
Никак! Это невозможно. id на то и id, чтобы быть неизменным идентификатором строки.

Получается будут пробелы в ид записях?
Я хотел сделать случаный выбор записи через случайный выбор ид.А тут некоторых ид не будте, и как теперь через цикл while ?


-----
new01
 
 Top
grefon
Отправлено: 17 Февраля, 2011 - 16:35:56
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Не понял В корне неверное решение для выбора записей!
Пробелы будут - это нормально, так и должно быть.
Для выборки случайных записей цикл вообще не нужен. Все выполняется одним запросом:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM TABLE ORDER BY RAND() LIMIT 20


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
new01
Отправлено: 17 Февраля, 2011 - 16:39:55
Post Id



Посетитель


Покинул форум
Сообщений всего: 301
Дата рег-ции: Июнь 2010  
Откуда: Челябинск


Помог: 1 раз(а)




Этот запрос выбирает случайную запись из таблицы ORDER BY?И что значит limit 20 ?

(Отредактировано автором: 17 Февраля, 2011 - 16:40:21)



-----
new01
 
 Top
grefon
Отправлено: 17 Февраля, 2011 - 16:44:00
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




SELECT * - выбераем что-то из таблицы, если пишем * то выбираем все столбцы
FROM table - указываем из какой таблицы выбираем
ORDER BY RAND() - указываем случайную сортировку при выборке
LIMIT 20 - задаем лимит записей для запроса. То есть при таком запросе нам вернется 20 случайных строк. Если указать LIMIT 1 то вернется одна строка.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
new01
Отправлено: 17 Февраля, 2011 - 16:46:35
Post Id



Посетитель


Покинул форум
Сообщений всего: 301
Дата рег-ции: Июнь 2010  
Откуда: Челябинск


Помог: 1 раз(а)




grefon пишет:
SELECT * - выбераем что-то из таблицы, если пишем * то выбираем все столбцы
FROM table - указываем из какой таблицы выбираем
ORDER BY RAND() - указываем случайную сортировку при выборке
LIMIT 20 - задаем лимит записей для запроса. То есть при таком запросе нам вернется 20 случайных строк. Если указать LIMIT 1 то вернется одна строка.

А вот в RAND() в скобках нужно указывать максимум и минимум или просто оставить пустыми?


-----
new01
 
 Top
grefon
Отправлено: 17 Февраля, 2011 - 16:47:32
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Чтобы выбрать случайную запись из всей таблицы оставить пустым.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
new01
Отправлено: 17 Февраля, 2011 - 16:50:04
Post Id



Посетитель


Покинул форум
Сообщений всего: 301
Дата рег-ции: Июнь 2010  
Откуда: Челябинск


Помог: 1 раз(а)




Вот вам спасибо большое ,вы мне прям сегодня так и помогаете !! Улыбка))
Пожалуйста посмотрите конечный код скажите так правильно?И вот вопрос : В какой переменной будет здесь хранится запись?
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $host = "localhost";
  3. $username = "zet";
  4. $password = "******";
  5. $connect = mysql_connect("$host","$username","$password") or die("Yb");
  6. if(!$connect)
  7. {
  8. echo"ERROR";
  9. }
  10. else
  11. {
  12. $db = mysql_select_db($username,$connect);
  13. $sql = "SELECT * FROM TABLE1 ORDER BY RAND() LIMIT 1";
  14. $result=mysql_query($sql );
  15. if(!$result)
  16. {
  17. echo"ERROR";
  18. }
  19. else
  20. {
  21. echo"OK";
  22. }
  23. }
  24. mysql_close($connect);
  25. ?>
  26.  

(Отредактировано автором: 17 Февраля, 2011 - 16:52:01)



-----
new01
 
 Top
DeepVarvar Супермодератор
Отправлено: 17 Февраля, 2011 - 16:57:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




new01 пишет:
if(!$result)

Всегда будет true...
 
 Top
new01
Отправлено: 17 Февраля, 2011 - 16:59:40
Post Id



Посетитель


Покинул форум
Сообщений всего: 301
Дата рег-ции: Июнь 2010  
Откуда: Челябинск


Помог: 1 раз(а)




DeepVarvar пишет:
Всегда будет true...

Я верю вам , скажите в чем ошибка ?


-----
new01
 
 Top
grefon
Отправлено: 17 Февраля, 2011 - 17:01:18
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




PHP:
скопировать код в буфер обмена
  1. $host = "localhost";
  2. $username = "zet";
  3. $password = "******";
  4. $base_name = "zet";
  5.  
  6. $connect = @mysql_connect($host, $username, $password);  
  7. if (!$connect) { echo "Не доступен сервер mySQL"; exit(); }  
  8. if (!@mysql_select_db ( $base_name, $connect ) ) { echo "Не доступна база данных"; exit(); }
  9. mysql_set_charset("utf8"); // УСТАНАВЛИВАЕМ КОДИРОВКУ БАЗЫ ДАННЫХ
  10.  
  11. $sql="SELECT * FROM table1 ORDER BY RAND() LIMIT 20";
  12. $result=mysql_query($sql) or die (mysql_error());
  13.  
  14. while ($row = mysql_fetch_array($result)) {
  15.         echo "<p>".$row['id']." - ".$row['name']."</p>";
  16. }


Этот запрос извлечет 20 случайных строк и отправит их в браузер. Если нужна только одна строка то тогда LIMIT ставим 1, а циклом while можно не пользоваться. Будет так:

PHP:
скопировать код в буфер обмена
  1. $sql="SELECT * FROM table1 ORDER BY RAND() LIMIT 1";
  2. $result=mysql_query($sql) or die (mysql_error());
  3.  
  4. $row = mysql_fetch_row($result);
  5. echo "<p>".$row[0]." - ".$row[1]."</p>";

(Отредактировано автором: 17 Февраля, 2011 - 17:01:58)



-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB