PHP.SU

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

Страниц (14): В начало « ... 6 7 8 9 [10] 11 12 13 14 »

> Найдено сообщений: 196
Exponat Отправлено: 27 Августа, 2013 - 15:48:47 • Тема: Постоянно записывает Array • Форум: Вопросы новичков

Ответов: 5
Просмотров: 175
Не помогло Недовольство, огорчение
Exponat Отправлено: 27 Августа, 2013 - 15:27:09 • Тема: Постоянно записывает Array • Форум: Вопросы новичков

Ответов: 5
Просмотров: 175
Здравствуйте.
Не пойму что не так:

PHP:
скопировать код в буфер обмена
  1. function Default_Write($id)
  2. {
  3. $id = addslashes($id);
  4. if ($_GET['action']=="news_inf")
  5. {
  6. $zapros_title = mysql_query ("SELECT * FROM `news` WHERE `id`='".$_GET['id']."'");
  7. $result_title = mysql_fetch_assoc($zapros_title);
  8.  
  9. echo "".$result_title['title']."";
  10.  
  11. }
  12. $result = mysql_query ("INSERT INTO `my_log` ( `page_id` , `all` , `today` , `date` , `zagolovok`) VALUES ('".$id."' , 1 , 1 , '".(time()+60*60*24)."', '".$result_title."');");
  13. return $result;
  14. }


В результате в таблице my_log, в столбце zagolovok пишется слово Array. А должно вписаться тайтл страницы. Это echo "".$result_title['title'].""; работает верно. Подскажите что не так.
Exponat Отправлено: 27 Августа, 2013 - 10:52:34 • Тема: Помогите с .htaccess RewriteRule • Форум: Вопросы новичков

Ответов: 6
Просмотров: 368
Продолжая эту тему я выяснил что сначала нужно mod_rewrite привести машинные ссылки в нормальные ЧПУ. А потом чтоб не потерять ссылочный вес ссылок редиректить их 301-ым.

Я вот тут пробую...может кому пригодится...

CODE (htmlphp):
скопировать код в буфер обмена
  1. Options +FollowSymLinks
  2. RewriteEngine On
  3.  
  4. # преобразовываю в ЧПУ ссылки таких видов: http://www.domain.info/?action=news_inf&id=26261 на такие: http://www.domain.info/news-26261
  5. RewriteRule ^news-([^/]*)$ /?action=news_inf&id=$1 [L]
  6.  
  7. # преобразовываю в ЧПУ ссылки таких видов: http://www.domain.info/index.php?action=news на такие:http://www.domain.info/news.html
  8. RewriteRule ^([^/]*)\.html$ /?action=$1 [L]


А теперь редииректим 301 чтоб не потерять ссылочный вес. Ведь все что написано сверху - это дубляж. Нужно исключить базовый вариант ссылок и всегда редиректить их всем юзерам и поисковым системам.

CODE (htmlphp):
скопировать код в буфер обмена
  1. # 301 Redirect домен без index.php
  2. RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /index.php
  3. RewriteRule .* / [R=301,L]
  4.  
  5. # 301 Redirect сайт всегда на www
  6. RewriteCond %{HTTP_HOST} ^domain\.info$ [NC]
  7. RewriteRule ^(.*)$ http://www.domain.info/$1 [R=301,L]
  8.  
  9. # 301 Redirect такой ссылки http://www.domain.info/?action=news на такую http://www.domain.info/news.html. Уже дубль закрыли.
  10. RewriteCond %{QUERY_STRING}  ^action=news$ [NC]
  11. RewriteRule ^$ /news.html? [R=301,NE,NC,L]


Но у меня вопрос к последнему редиректу. Я в нем указал конкретную страницу. А можно как-то указать регулярным выражением на все страницы типа: ? Ну например: http://www[dot]domain[dot]info/?action=любое название страницы на http://www[dot]domain[dot]info/любое название страницы

CODE (htmlphp):
скопировать код в буфер обмена
  1. # 301 Redirect всех ссылок типа http://www.domain.info/?action=любая страница (регулярное выражение) на такую http://www.domain.info/(имя страницы с условием регулярного выражения).html.
  2. RewriteCond %{QUERY_STRING}  ^action=(?????)$ [NC]
  3. RewriteRule ^$ /(???).html? [R=301,NE,NC,L]


Имею ввиду чтоб не писать каждое правило для конкретной страницы. Цыфр там нет, просто буквы.
Exponat Отправлено: 23 Августа, 2013 - 11:31:53 • Тема: Помогите с .htaccess RewriteRule • Форум: Вопросы новичков

Ответов: 6
Просмотров: 368
Ого....на сколько я понял весь этот процесс называется ЧПУ-ссылки. И он не просто. Нужно много почитать и посмотреть примеров. Это не делается за 20 минут... Я новичок. Спасибо что направили на верный путь Улыбка
Exponat Отправлено: 23 Августа, 2013 - 11:04:25 • Тема: Помогите с .htaccess RewriteRule • Форум: Вопросы новичков

Ответов: 6
Просмотров: 368
А редирект 301 єто не физический перенос страниц?
Как я прочитал удобнее будет использовать php редирект:
PHP:
скопировать код в буфер обмена
  1. <?
  2. Header( "HTTP/1.1 301 Moved Permanently" );
  3. Header( "Location: http://www.new-url.com" );
  4. ?>


У меня есть статическая шаблон-страница news_inf.php в которую выводятся полнотекстовые новости. Просто их id меняется. Это получается нужно код вставить в страницу вывода динамических новостей (news_inf.php). Например если у меня новость имеет адрес:
PHP:
скопировать код в буфер обмена
  1. http://domain.com/index.php?action=news_inf&id=26229

то в странице я пишу
PHP:
скопировать код в буфер обмена
  1. <?
  2. Header( "HTTP/1.1 301 Moved Permanently" );
  3. Header( "Location: http://www.domain.com/news/26229" );
  4. ?>

Так?
Exponat Отправлено: 23 Августа, 2013 - 10:18:57 • Тема: Помогите с .htaccess RewriteRule • Форум: Вопросы новичков

Ответов: 6
Просмотров: 368
Добрый день.
Таким правилом
PHP:
скопировать код в буфер обмена
  1. RewriteEngine On
  2. RewriteRule ^index.php$ / [QSA,R]

я делаю адрес на
А вот как сделать адрес
PHP:
скопировать код в буфер обмена
  1. http://domain.com/index.php?action=news
на
и
PHP:
скопировать код в буфер обмена
  1. http://domain.com/index.php?action=news_inf&id=26229
на

Хотел спросить, влияет ли такие манипуляции на поисковые системы? Нужно ли так делать? Я извиняюсь если тема похожа на другие. Их правила как-то не подходят для меня...может это связано с настройками сервера....
Exponat Отправлено: 31 Июля, 2013 - 15:35:58 • Тема: Правильный запрос на запись в БД при выборе определенного поля • Форум: Вопросы новичков

Ответов: 15
Просмотров: 631
Последний ответ помог мне:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $ins=mysql_query("UPDATE `ads` SET img='$filename', keywords='$keywords11' WHERE id=1") or die(mysql_error());
Exponat Отправлено: 31 Июля, 2013 - 12:10:45 • Тема: Правильный запрос на запись в БД при выборе определенного поля • Форум: Вопросы новичков

Ответов: 15
Просмотров: 631
EuGen пишет:
Скорее всего, некорректно передаётся значение переменной. Выяснить это можно с помощью mysql_error


Она показывает ноль.
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $keywords11 = 'asfdasfds';
  3. $ins=mysql_query("UPDATE `ads` SET `img`='$filename' AND`keywords`='$keywords11' WHERE `id`=1") or die(mysql_error());
  4.     echo "Файл <b>$filename</b> загружен, ключевые слова: <b>$keywords11</b>";


В базу, в столбце img записывает 0 а в столбце keywords пусто.

К стате при выводе
CODE (htmlphp):
скопировать код в буфер обмена
  1.  echo "Файл <b>$filename</b> загружен, ключевые слова: <b>$keywords11</b>";
переменная $keywords11 пишет то что надо. А вот в базу не хочет вписываться.
Exponat Отправлено: 31 Июля, 2013 - 11:31:06 • Тема: Правильный запрос на запись в БД при выборе определенного поля • Форум: Вопросы новичков

Ответов: 15
Просмотров: 631
так не работает....
CODE (htmlphp):
скопировать код в буфер обмена
  1. $keywords11 = 'asfdasfds';
  2. $ins=mysql_query("UPDATE `ads` SET `img`='$filename' AND`keywords`='$keywords11' WHERE `id`=1");
Exponat Отправлено: 31 Июля, 2013 - 10:17:00 • Тема: Правильный запрос на запись в БД при выборе определенного поля • Форум: Вопросы новичков

Ответов: 15
Просмотров: 631
Спасибо! Работает!
(Добавление)
А не подскажите как в этот запрос добавить чтоб в еще один столбик записывалась информация
Есть так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $ins=mysql_query("UPDATE `ads` SET `img`='$filename' WHERE `id`=1");


А хотелось бы так, но не работает...опять синтаксис не знаю... :
CODE (htmlphp):
скопировать код в буфер обмена
  1. $ins=mysql_query("UPDATE `ads` SET `img`='$filename', `keywords`='$keywords1' WHERE `id`=1");
Exponat Отправлено: 31 Июля, 2013 - 10:05:15 • Тема: Правильный запрос на запись в БД при выборе определенного поля • Форум: Вопросы новичков

Ответов: 15
Просмотров: 631
Добрый день. Поможете с правильным запросом?
У меня таблица ads

Поле Тип
id int(20)
img varchar(150)
keywords varchar(150)

Делаю вывод на страницу изображение которое содержится в строке id=5:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  $query = mysql_query("SELECT * FROM `ads` WHERE `id`='5'") or die(mysql_error());
  2.   $row = mysql_fetch_array($query);
  3.   $img5 = $row['img'];


Теперь я хочу с сайта заменить эту картинку, то есть залить файл в папку на сервер и чтоб имя файла автоматически вписалось в строку таблицы ads строка которой id=5:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  <td><img src="../image/part/'. $img5 .'" width=160 height=60/><p><strong>Выберите файл для загрузки:</strong><form enctype="multipart/form-data" method="post">
  2. <input type="file" name="userfile5" />
  3. <input type="submit" value="Загрузить" name="button5">
  4. </form>БЛОК 5</td>


А вот код загрузчика:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. //Выполняем код только при нажатии на кнопку
  3. if($_POST['button5']== true){
  4. //Для начала проверим не пытаются ли нам загрузить файл с расширением .php и т.д
  5. $path = array(".php",".php4",".php3",".phtml",".pl");
  6. foreach ($path as $item){
  7. //Проверяем регулярным выражением регистр
  8.  if(preg_match("/$item\$/i", $_FILES['userfile5']['name'])) {
  9.   echo "Разрешенно загружать, только картинки<br />";
  10.   echo "<a href='index.php'><<< Назад</a>";
  11.   exit();
  12.  }
  13. }
  14. //Проверим на ошибки, если они есть прекращаем скрипт и создаем отчет
  15. if($_FILES['userfile5']['error'] != 0){
  16. //Создаем файл и записываем  него код ошибки, а так же удаляем временный файл
  17. $error = fopen("error/error.dat","wb");
  18. if(fwrite($error,$_FILES['userfile5']['error']) == false){
  19.         echo "Ошибка записи в файл!!!";
  20.         exit();
  21. }else
  22. {
  23.         echo "<b>error.dat</b> - был успешно создан! &nbsp;&nbsp;<a href='error/error.inc'>Смотреть код ошибки</a>";
  24.         //Удаляем временный файл
  25.         unlink($_FILES['userfile5']['tmp_name']);
  26.         //выходим
  27.         exit();
  28. }
  29. fclose($error);
  30. }
  31. //Определяем директорию, куда будем загружать изображения
  32. $dir = '../image/part/';
  33. $file = $dir.basename($_FILES['userfile5']['name']);
  34.  
  35. if (move_uploaded_file($_FILES['userfile5']['tmp_name'], $file)) {
  36. echo "'. $file .'";
  37. $ins=mysql_query("INSERT INTO `ads`(img) VALUES ('$file') WHERE id=5");
  38.    echo "Файл успешно загружен.";
  39. } else {
  40.    echo "Произошла ошибка";
  41.    exit;
  42. }
  43. }
  44.  
  45. ?>


Файл заливается нормально. А вот имя файла не записывается в ту строку которою я хочу. Вот строка $ins=mysql_query("INSERT INTO `ads`(img) VALUES ('$file') WHERE id=5"); она должна записать в ту строчку имя файла. Но оно не записывает. Как правильно написать запрос?
Exponat Отправлено: 26 Июля, 2013 - 11:09:55 • Тема: Счетчик просмотров для каждой страницы сайта • Форум: Вопросы новичков

Ответов: 7
Просмотров: 2727
Кажется нашел:
CODE (htmlphp):
скопировать код в буфер обмена
  1. if (!searchID($unical_page_id_gid)) // существует ли запись с таким id
  2. {
  3.     Default_Write($unical_page_id_gid); // запись всех значений по умолчанию
  4.        
  5. }


надо на:
CODE (htmlphp):
скопировать код в буфер обмена
  1. if (!searchID($unical_page_id_gid)) // существует ли запись с таким id
  2. {
  3.     Default_Write($unical_page_id_gid); // запись всех значений по умолчанию
  4.         define("Today_and_all_counter", "Вы первый, кто видит эту страницу");
  5. }


Как вы и сказали. Спасибо!
Exponat Отправлено: 26 Июля, 2013 - 10:55:40 • Тема: Счетчик просмотров для каждой страницы сайта • Форум: Вопросы новичков

Ответов: 7
Просмотров: 2727
Да, все верно, работает. Вот только проблема... Когда первый раз заходишь на новость в том месте где должно выводится число просмотров пишется просто Today_and_all_counter. Но когда обновить страницу (F5) то просмотры показываются. Это можно исправить? Или это код надо серьезно перебирать?

Спасибо за ответы.
Exponat Отправлено: 26 Июля, 2013 - 10:33:13 • Тема: Счетчик просмотров для каждой страницы сайта • Форум: Вопросы новичков

Ответов: 7
Просмотров: 2727
Я его поключил раньше подключения к БД. Вроде все другие инклуды работают без сбоев. Но проблема вывода остается не решенной.
Что с этим делать – echo Today_and_all_counter;? Как его правильно подать?
Exponat Отправлено: 26 Июля, 2013 - 10:17:51 • Тема: Счетчик просмотров для каждой страницы сайта • Форум: Вопросы новичков

Ответов: 7
Просмотров: 2727
Добрый день.
На одном из ресурсов нашел php+mysql решение по считывание количества просмотров страниц сайта. Реализация состоит из одного файла counter.php ну и добавление таблицы в БД.
Вот сам код php:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. ///////////////////////////////////////////
  3. /// Скрипт статистики просмотров станиц ///
  4. //         http://wm-help.net/          ///
  5. ///////////////////////////////////////////
  6.  
  7. /* данные для соединения с MySQL */
  8. $INFO['sql_host'] = "******";
  9. $INFO['sql_user'] = "******";
  10. $INFO['sql_pass'] = "******";
  11. $INFO['sql_database'] = "******";
  12.  
  13. /* проверка, есть ли запись в MySQL */
  14. /* таблице с таким id или ее нет */
  15. function searchID($id)
  16. {
  17. $result = mysql_query ("SELECT * FROM `my_log` WHERE `page_id` LIKE '".$id."'");
  18. $num_rows = mysql_num_rows($result);
  19. if ($num_rows>0)
  20. {
  21.    return True;
  22. }
  23. else
  24. {
  25.    return False;
  26. }
  27. }
  28.  
  29.  
  30. /* Читает запись из MySQL таблицы */
  31. /* возвращает ассоциированный массив */
  32. function MySQLRead($id)
  33. {
  34. $id = addslashes($id);
  35. $result = mysql_query ("SELECT * FROM `my_log` WHERE `page_id` LIKE '".$id."'");
  36. return (array)mysql_fetch_assoc($result);
  37. }
  38.  
  39. /* Обновление времени для конкретной записи */
  40. function UpdateTime($id, $time)
  41. {
  42. $id = addslashes($id);
  43. $time = addslashes($time);
  44. $result = mysql_query ("UPDATE `my_log` SET `date` = '".$time."' WHERE `page_id` = '".$id."'");
  45. return $result;
  46. }
  47.  
  48. /* Обновление счетчиков для записи с указанным id */
  49. function UpdateCounders($id, $all, $today)
  50. {
  51. $id = addslashes($id);
  52. $time = addslashes($time);
  53. $result = mysql_query ("UPDATE `my_log` SET `all` = '".$all."',`today` = '".$today."' WHERE `page_id` = '".$id."'");
  54. return $result;
  55. }
  56.  
  57. /* Запись всех значений "По умолчанию" */
  58. function Default_Write($id)
  59. {
  60. $id = addslashes($id);
  61. $result = mysql_query ("INSERT INTO `my_log` ( `page_id` , `all` , `today` , `date` ) VALUES ('".$id."' , 1 , 1 , '".(time()+60*60*24)."');");
  62. return $result;
  63. }
  64.  
  65. $unical_page_id_gid = md5($_SERVER['REQUEST_URI']); // получение md5() хэша из url страницы
  66.  
  67. $link = mysql_connect($INFO['sql_host'], $INFO['sql_user'], $INFO['sql_pass']); // Соединение с MySQL
  68. mysql_select_db ($INFO['sql_database']); // Выбор базы данных
  69.  
  70. if (!searchID($unical_page_id_gid)) // существует ли запись с таким id
  71. {
  72.    Default_Write($unical_page_id_gid); // запись всех значений по умолчанию
  73. }
  74. else // если не существует
  75. {
  76. $tmp = MySQLRead($unical_page_id_gid); // считаем значения
  77. $all = $tmp['all'] + 1;
  78. $today = $tmp['today'] +1;
  79. if (time()>=$tmp['date']) // если сутки с момента записи прошли
  80. {
  81.    UpdateTime($unical_page_id_gid, (time()+60*60*24)); // обновим дату
  82.    UpdateCounders($unical_page_id_gid, $all, 1); // обновим счетчики
  83.    define("Today_and_all_counter", "Всего просмотров этой страницы: 1. Сегодня: 1");
  84. }
  85. else // если еще нет
  86. {
  87.    /* обновим счетчики */
  88.    UpdateCounders($unical_page_id_gid, $all, $today);
  89. }
  90. /* устанавливаем константу с текущими значениями счетчиков */
  91. define("Today_and_all_counter", "Всего просмотров этой страницы: $all. Сегодня: $today");
  92. }
  93.  
  94. mysql_close($link); // Разрываем соединение с MySQL
  95. ?>


На сайте сказано что нужно в страницу подсчета подключить include("counterpage/counter.php"); А в том месте, где должно находиться сообщение о том, сколько человек просмотрело данную страницу – строчку echo Today_and_all_counter;

В БД я вижу все считывается, и счетчик правильно считает. Но на сайте я не могу его вывести. Я пишу echo Today_and_all_counter; - оно выводится как текст. Пишу echo ($Today_and_all_counter()); пишет: Fatal error: Function name must be a string in /var/***************/*********.php on line 51

И еще когда подключаю include("counterpage/counter.php"); все другие файлы которые поключаются выдают ошибку подключение к БД.

Сайт самописный.

Страниц (14): В начало « ... 6 7 8 9 [10] 11 12 13 14 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB