PHP.SU

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

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

> Найдено сообщений: 15
Anton63 Отправлено: 10 Августа, 2009 - 17:57:18 • Тема: Добавление статей • Форум: Программирование на PHP

Ответов: 2
Просмотров: 253
Ребят, подскажите как лучше осуществить следующее:
Надо что бы пользователь мог добавить статью ко мне на сайт через специальную форму.
При добавлении статей надо учитывать возможность форматировать текст(Жирный, курсив и т.д.), и что бы картинки можно было вставлять... Все статьи хранятся в БД, у поля с текстом статьи тип "text".
Anton63 Отправлено: 22 Июля, 2009 - 08:18:04 • Тема: Вывод данных из БД • Форум: Программирование на PHP

Ответов: 3
Просмотров: 397
PHP:
скопировать код в буфер обмена
  1.  
  2. $max=5;
  3. $res=mysql_query("SELECT head FROM ansvers", $db)  or die("Ошибка: ".mysql_error());
  4. //Получаем количество элементов в массиве
  5. $mass = mysql_num_rows($res)  or die("Ошибка: ".mysql_error());
  6. //Делим на количество отображаемых на странице сообщений и округляем в большую сторону
  7. $pages = ceil($mass/$max);
  8. //Принимаем входящую переменную, которая указывает номер страницы
  9. $_p = $_GET['page'];
  10. //Создаем вспомогательные переменные для навигации, если переменная $_p не задана
  11. if(!$_p OR $_p ==''){
  12. //Нижний предел
  13. $nmin = 0;
  14. //Верхний предел
  15. $nmax=$max-1;
  16. echo 'Анкеты<BR>';
  17. $res=mysql_query("SELECT head FROM ansvers LIMIT $nmin, $nmax", $db)  or die("Ошибка: ".mysql_error());
  18. while ($row = mysql_fetch_assoc($res)) // Выводим head по 5 штук на странице
  19. {
  20.      echo $row['head']."<br/>";
  21. }
  22. }
  23. else {//Переменная $_p создана
  24. $nmin = ($_p*$max)-$max ;
  25. $nmax=($max*$_p)-1;
  26. echo 'Анкеты<BR>';
  27. $res=mysql_query("SELECT head FROM ansvers LIMIT $nmin, $nmax", $db)  or die("Ошибка: ".mysql_error());
  28. while ($row = mysql_fetch_assoc($res)) // Выводим head по 5 штук на странице
  29. {
  30.      echo $row['head']."<br/>";
  31. }
  32. }
  33. //Выводим номера страниц
  34. echo "<br/><br/>";
  35. for($n=1;$n<=$pages;$n++) {
  36.  
  37. if($_p != $n) {echo '<a href="ansver.php?page='.$n.'">['.$n.']</a>&nbsp;';}
  38. if($_p == $n) {echo '['.$n.']&nbsp;';}
  39. }
  40.  

Значит так???
Так конечно лучше... хоть что то выводит... всего у меня 3 страницы получается(14 анкет)... на первой выводятся 4 анкеты, на второй выводятся 11 анкет... и на третей странице 11 анкет... где то всё равно ошибка...
Anton63 Отправлено: 21 Июля, 2009 - 08:07:37 • Тема: Вывод данных из БД • Форум: Программирование на PHP

Ответов: 3
Просмотров: 397
Помогите...
Никак не могу понять в чём проблема...
Это скрипт по выводу 5 сообщений на каждую страницу из БД.
Ошибок никаких не выводит, а вывод всё равно не тот...
Вот листинг
PHP:
скопировать код в буфер обмена
  1.  
  2. $db=mysql_connect('localhost', 'root', '')  or die("Ошибка: ".mysql_error());
  3. mysql_select_db('top10', $db)  or die("Ошибка: ".mysql_error());
  4.  
  5. $max=5;
  6. $res=mysql_query("SELECT head FROM ansvers", $db)  or die("Ошибка: ".mysql_error());
  7. //Создаём массив элементов БД
  8. $row=mysql_fetch_array($res)  or die("Ошибка: ".mysql_error());
  9. //Получаем количество элементов в массиве
  10. $mass = mysql_num_rows($res)  or die("Ошибка: ".mysql_error());
  11. //Делим на количество отображаемых на странице изображений и округляем в большую сторону
  12. $pages = ceil($mass/$max);
  13. //Принимаем входящую переменную, которая указывает номер страницы
  14. $_p = $_GET['page'];
  15. //Создаем вспомогательные переменные для навигации, если переменная $_p не задана
  16. if(!$_p OR $_p ==''){
  17. //Нижний предел
  18. $nmin = 0;
  19. //Верхний предел
  20. $nmax=$max-1;
  21. echo 'Анкеты<BR>';
  22. for($i=$nmin;$i<=$nmax;$i++){ // Выводим head по 5 штук на странице
  23.     if($row[$i]){
  24. echo $row[$i]."<BR>";
  25. }
  26. }
  27. }
  28. else {//Переменная $_p создана
  29. $nmin = ($_p*$max)-$max ;
  30. $nmax=($max*$_p)-1;
  31. echo 'Анкеты<BR>';
  32. for($i=$nmin;$i<=$nmax;$i++){ // Выводим head по 5 штук на странице
  33.     if($row[$i]){
  34. echo $row[$i]."c<BR>";
  35. }
  36. }
  37. }
  38. //Выводим номера страниц
  39. echo "<br/><br/>";
  40. for($n=1;$n<=$pages;$n++) {
  41.  
  42. if($_p != $n) {echo '<a href="ansver.php?page='.$n.'">['.$n.']</a>&nbsp;';}
  43. if($_p == $n) {echo '['.$n.']&nbsp;';}
  44. }
  45.  


У меня выводятся номера страниц... а самих заголовков нет...
Anton63 Отправлено: 16 Июля, 2009 - 13:03:24 • Тема: Немогу понять! • Форум: Программирование на PHP

Ответов: 17
Просмотров: 835
При добавлении данных в БД вместо напиши
И пропиши <form method='POST'> в форме для отправки...
Anton63 Отправлено: 16 Июля, 2009 - 09:49:01 • Тема: Немогу понять! • Форум: Программирование на PHP

Ответов: 17
Просмотров: 835
В форме для каждого эллемента есть name - имя переменной которая будет передоваться... через action указываем какому файлу эти переменные будут переданы... Данные кто нажал на кнопку передаются через сессию или куки...
Вроде как то так...
Anton63 Отправлено: 16 Июля, 2009 - 09:29:50 • Тема: Авторизация пользователя • Форум: Программирование на PHP

Ответов: 6
Просмотров: 1179
Пример:
Я нахожусь на файле boot.php в папке boot. Как мне перейти к файлу index.php, который находится папкой выше, при помощи header()?
Anton63 Отправлено: 16 Июля, 2009 - 09:26:25 • Тема: После авторизации - куки или сессии? • Форум: Программирование на PHP

Ответов: 17
Просмотров: 1668
Viper пишет:
Вездеход куки прошлый век имхо
тем более что их подделать на раз, два.


Полностью согласен... не безоппасно это... В интернет кафе, например, у друга или на работе никак нельзя оставлять авторизацию...
Anton63 Отправлено: 15 Июля, 2009 - 10:49:49 • Тема: Авторизация пользователя • Форум: Программирование на PHP

Ответов: 6
Просмотров: 1179
Ок... спасибо... домой приду-попробую... завтра отпишусь о результате.

А вообще я правильной дорогой иду, товарищи? Авторизация на главной странице сайта таким образом делается, через if???

Платинум пишет:

P.S. Тока что заметил знак = Это присвоение , а знак == это равно!
А в вашем случаи как понял "если равно "==", то"


Тысяча чертей... ведь раньше на C программировал... совсем забыл про "==". Ох уж мне эти переходы на другие языки программирования... ::dry.gif::
Anton63 Отправлено: 15 Июля, 2009 - 09:03:17 • Тема: Авторизация пользователя • Форум: Программирование на PHP

Ответов: 6
Просмотров: 1179
Файл index.html
PHP:
скопировать код в буфер обмена
  1.  
  2. if($_SESSION['var'] = 1){
  3. echo "Hello, ".$_SESSION['login'];
  4. }
  5. else{
  6. echo "
  7. <html>
  8. <head>
  9. <title>Главная страница</title>
  10. </head>
  11. <body>
  12. <table border = 2>
  13. <form method='POST' action='login.php'>
  14. <tr><td>
  15. <table>
  16. <tr><td>Логин:</td><td><input type='text' name='login' size='15'></td></tr>
  17. <tr><td>Пароль:</td><td><input type='password' name='pass' size='15'></td></tr>
  18. </table>
  19. </td></tr>
  20. <tr><td align=center><input type='submit' name='ok' value='Вход'></td></tr>
  21. </form>
  22. </table>
  23. </body>
  24. </html>";
  25. }
  26.  


Файл login.php
PHP:
скопировать код в буфер обмена
  1.  
  2. $db=mysql_connect('localhost', 'root', '');
  3. mysql_select_db('top10', $db);
  4.  
  5. // Обезвреживаем переменные
  6. $blogin = htmlspecialchars($_POST[login]);
  7. $bpass = htmlspecialchars($_POST[pass]);
  8.  
  9. //проверяем есть ли пользователь с таким login'ом и pass'ом
  10. $res=mysql_query("SELECT * FROM users WHERE login='$blogin' AND pass='$bpass'", $db);
  11. if(mysql_num_rows($res) != 1){    //такого пользователя нет
  12. echo "Введены не верные логин или пароль";
  13. }
  14. else{    //пользователь найден
  15. $_SESSION['login']=$blogin;    //устанавливаем login & pass
  16. $_SESSION['pass']=$bpass;
  17. $_SESSION['var']=1;
  18. Header("Location: index.html");    // перенаправляем на index.html
  19. }
  20.  


Пытаюсь сделать авторизацию пользователя... Т.е. если пользователь авторизован и для него создана сессия со значением "$_SESSION['var']=1;", то выводится
PHP:
скопировать код в буфер обмена
  1.  
  2. echo "Hello, ".$_SESSION['login'];
  3.  


Если нет, то выводится форма для авторизации. При заполнении формы пользователь проверяет введённые данные и если они верны, то создаётся сессия и в массив записываются его данные:
PHP:
скопировать код в буфер обмена
  1.  
  2. $_SESSION['login']=$blogin;
  3. $_SESSION['pass']=$bpass;
  4. $_SESSION['var']=1;
  5. Header("Location: index.html");
  6.  


После чего он попадает на главную страницу, где получает сообщение
PHP:
скопировать код в буфер обмена
  1.  
  2. echo "Hello, ".$_SESSION['login'];
  3.  


Если в форму ввести неверные данные тогда выводится сообщение
PHP:
скопировать код в буфер обмена
  1.  
  2. echo "Введены не верные логин или пароль";
  3.  

Если же введены верные данные, то при проверке

он всё равно выводит форму...
Гуру языка ПХП, подскажите, что я делаю не так...
Anton63 Отправлено: 14 Июля, 2009 - 08:19:28 • Тема: Создания опроса • Форум: SQL и Архитектура БД

Ответов: 5
Просмотров: 60
Viper пишет:
только как мне кажется поле comment типа varchar в данном случае не есть гуд. у вас либо лимит должен быть меньше, либо если комментарии будут большей длинны то лучше text или blob


Спасибо, учту...

SAD пишет:
можно вытянуть, но тебе ник и все остальное нужно в сессии хранить
$_SESSION['...']=$nick;
и вытягивать также
база вроде норм, сам справишься


Ага, с сессиями я вроде уже разобрался... насчёт базы порадовал... буду справляться... Хорошо
(Добавление)
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $date = date(Y);
  3. echo "
  4. <html>
  5. <head>
  6. </head>
  7. <body>
  8. <form method='POST' action='work_registration.php'>
  9. <table>
  10. <tr><td>Дата рождения:</td><td>
  11. <select name='birthday'>
  12. ";
  13. for($i=$date-60; $i<=$date; $i++){
  14. echo "<option value='.$i.'>";
  15. }
  16. echo "
  17. </td></tr>
  18. </table>
  19. </form>
  20. </body>
  21. </html>
  22. ";
  23. ?>


Почему в не работает выпадающий список? В качестве результата, в выпадающем списке он мне выдаёт ";} echo "
Anton63 Отправлено: 13 Июля, 2009 - 12:55:23 • Тема: Создания опроса • Форум: SQL и Архитектура БД

Ответов: 5
Просмотров: 60
Никто со структурой БД не поможет что ли? Однако
Anton63 Отправлено: 13 Июля, 2009 - 10:50:36 • Тема: Создания опроса • Форум: SQL и Архитектура БД

Ответов: 5
Просмотров: 60
Задумка, в общем, такая:
Это чё то типо ТОР10. например 10 самых богатых людей, 10 самых быстрых машин и т.д. Есть форма для заполнения(Её заполнять могут только зарегистрированные пользователи, значит нужно прослеживать сессию пользователя и данные о нике пользователя берутся из таблицы users в БД).

Пример(форма):
Автор: Billo
Заголовок: Самые большие города мира
Ответ 1: Москва
Ответ 2: Лондон
Ответ 3: Нью-Йорк
Ответ 4: Самара
Ответ 5: Париж
"Отправить"


Так вот... после заполнения формы и нажатия на кнопку "Отправить" Этот опрос добавляется в БД со множеством подобных опросов(В каждом опросе 5 вариантов ответа)
Незарегистрированный пользователь может смотреть только результаты.

Результат:
Самые большие города мира
Автор: Billo; 26.05.2009
1. Москва
2. Лондон
3. Нью-Йорк
4. Самара
5. Париж
Комментарии

А администратор сайта видит это так(R- редактировать X-удалить):

Админка:
Самые большие города мира R X
Автор: Billo; 26.05.2009
1. Москва R
2. Лондон R
3. Нью-Йорк R
4. Самара R
5. Париж R
Комментарии R X

Значит для админа сайта тоже надо проследить сессию и выдать результат опроса с возможностью его редактирования.
Подскажите пожалуйста как структурировать БД для этой задачи.
В частности меня интересует какие таблицы нужно создать, как их связать и какие поля там должны быть... И как лучше хранить данные с ответами в таблице(Ответ 1, Ответ 2...Ответ 5)? При условии, что их потом надо будет редактировать... и оптимизировать под поиск по сайту...

Я думаю что то таблица должна быть примерно такая:

create table answers (
id int(10) unsigned NOT NULL auto_increment,
nick varchar(50) NOT NULL,
datetime datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
head varchar(150),
answer1 varchar(50),
answer2 varchar(50),
answer3 varchar(50),
answer4 varchar(50),
answer5 varchar(50),
comment varchar(300)?
primary key (id)
);

id - счётчик, nick берётся из таблицы users, datetime - дата и время(вставляется автоматически при создании опроса), answer - это ответы, comment - это комментарии(они берутся из таблицы comments)...

Вот... значит нам нужны таблицы answers, users и comments... Ещё вопрос... как их связать?...И ещё вопрос... Как должна выглядеть таблица comments?
(Добавление)
Я создам три таблицы...
Первая с вопросом и ответами...т.к. создатель опроса сам заполняет все 5 полей с ответами(все поля обязательны для заполнения).
create table answers (
id_ans int(10) unsigned NOT NULL auto_increment,
nick varchar(50) NOT NULL,
date date NOT NULL,
head varchar(150) NOT NULL,,
answer1 varchar(50) NOT NULL,,
answer2 varchar(50) NOT NULL,,
answer3 varchar(50) NOT NULL,,
answer4 varchar(50) NOT NULL,,
answer5 varchar(50) NOT NULL,,
primary key (id_ans)
);

Вторая таблица с комментариями... в этой таблице будут храниться комментарии ко всем опросам. Т.е. связываться таблицы будут через id_ans. При оставлении комментария будет присваиваться id_ans такой же как и в таблице answers. А при запросе комментариев к опросу будут выбираться все комментарии с одинаковым id_ans.
create table comments (
id_com int(10) unsigned NOT NULL auto_increment,
nick varchar(50) NOT NULL,
date date NOT NULL,
comment varchar(300) NOT NULL,
id_ans int(10),
primary key (id_com)
);


Как вам такой вариант???

И ещё вопрос... при авторизации пользователя для него создаётся сессия... и при создании опроса или комментария можно ли из этой сессии вытянуть его ник для полей nick в таблицах?

Третья таблица - это users... в ней будут храниться зарегистрированные пользователи... но это уже из другой оперы...
Anton63 Отправлено: 09 Июля, 2009 - 08:42:33 • Тема: Не могу создать таблицу • Форум: SQL и Архитектура БД

Ответов: 4
Просмотров: 53
WNeZRoS пишет:
пропиши, после или перед echo "БД создана<BR>";


mysql_select_db('db_zero');




Спасибо... долго я не мог до этого додуматься... а всё оказалось так просто...
Теперь всё работает... Хорошо
Anton63 Отправлено: 08 Июля, 2009 - 09:47:42 • Тема: Не могу создать таблицу • Форум: SQL и Архитектура БД

Ответов: 4
Просмотров: 53
Спасиб... иду пробовать...
Anton63 Отправлено: 08 Июля, 2009 - 09:40:43 • Тема: Не могу создать таблицу • Форум: SQL и Архитектура БД

Ответов: 4
Просмотров: 53
Проблемы с созданием таблицы.

<?php
$ms = mysql_connect("localhost", "root", "");
if($ms)
{
echo "MySQL подключён<BR>";
$sq = "create database db_zero";
if(mysql_query($sq, $ms))
{
echo "БД создана<BR>";
}
else
{
echo "БД не создана<BR>";
}
$table ="CREATE TABLE test_zero (num INT,title TEXT, text TEXT)";
if(mysql_query($table, $ms))
{
echo "Таблица создана<BR>";
}
else
{
echo "Таблица не создана<BR>";
}
}
else
{
echo "MySQL не подключён<BR>";
}
?>

Результат:
MySQL подключён
БД создана
Таблица не создана

Почему таблица не создаётся? В чём проблема?

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB