PHP.SU

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

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

> Найдено сообщений: 5
radieu Отправлено: 22 Мая, 2011 - 19:04:19 • Тема: Постраничная навигация, с отправкой числа выводимых сообщений • Форум: Если скрипт не работает

Ответов: 7
Просмотров: 2420
ugin_root добавлять "&col=20" нужно чтобы при переходе значение в $pnumber сохранялось? Думаю нет. Как мне это реализовать?

Вот что у меня получилось:
index.php
CODE (html):
скопировать код в буфер обмена
  1. <form name="" action="index.php" method="get">
  2. <input type = 'text' name = "col" value="5">
  3. <p><input type="submit" name="ok" value="Назначить">  </p>
  4. </form>


read.php

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. require_once('Navigator.class.php');
  4.  
  5.  
  6. $n=mysql_query(" SELECT count(*) FROM book");
  7. $all=mysql_result($n,0,0);
  8. if ($all)
  9. {  
  10.     //записей на страницу
  11.      
  12.  /* if(!empty($_SESSION['col']) and !isset($_GET['ok']))
  13.     $pnumber = $_SESSION['col'];
  14. else {
  15.     $_SESSION['col'] = $_GET['col'];
  16.     $pnumber = $_GET['col'];
  17. }*/
  18.  
  19.  
  20.  
  21.  
  22. $pnumber = isset($_GET['col']) ? (int)$_GET['col'] : 5;
  23.  
  24.                                        
  25.    
  26.    
  27.     //создаем объект
  28.     $n=new Navigator($all,$pnumber);
  29.  
  30.  
  31.  
  32.         $result = mysql_query("SELECT * FROM book order by id desc LIMIT ".$n->start().",".$pnumber);
  33.  
  34.  
  35.  
  36.  
  37.  
  38. while($r = mysql_fetch_array($result)) {
  39.  
  40.  
  41.   echo "
  42. <p><TABLE BORDER WIDTH=600 align=center>
  43. <TR>
  44. <TD WIDTH=100>Почта: $r[email]</TD>
  45. <TD WIDTH=100>Имя $r[name]</TD>
  46. <TD WIDTH=400>Сообщение: $r[text]</p>
  47. </TD>
  48. </TR>
  49. </TABLE>";
  50.  
  51. }
  52.    //печатаем навигацию
  53.     echo $n->navi();
  54.  
  55.  
  56.  
  57.  
  58.         }
  59. ?>
radieu Отправлено: 22 Мая, 2011 - 18:11:56 • Тема: Постраничная навигация, с отправкой числа выводимых сообщений • Форум: Если скрипт не работает

Ответов: 7
Просмотров: 2420
ugin_root Да спасибо, с этой ошибкой разобрался.
OrmaJever пишет:
7 строка должна выглядеть так
PHP:
скопировать код в буфер обмена
$pnumber = isset($_GET['col']) ? (int)$_GET['col'] : 1; //вот так пытаюсь сделать

Заработало, спасибо.

Все работает когда указываем значение, но при сдедующем переходе по навигации, количество отображаемых сообщений становится равным, в данном случае еденице. Как это исправить?
(Добавление)
Dazar пишет:
Чёт за все те 3 месяца что я пользуюсь php так и не могу понять 3 код с 1 поста(Файл навигатор класс

Тоже не понимаю, но он работает=)
radieu Отправлено: 21 Мая, 2011 - 16:17:40 • Тема: Постраничная навигация, с отправкой числа выводимых сообщений • Форум: Если скрипт не работает

Ответов: 7
Просмотров: 2420
Сама навигация прекрасно работает, но мне нужно чтоб ы пользователь сам указывал какое кол-во сообщений он хочет видеть.

Вот форма для отправки кол-ва сообщений:

CODE (html):
скопировать код в буфер обмена
  1. <form name="" action="read.php" method="get">
  2. <input type = 'text' name = "col" value='5'>
  3. <p><input type="submit" name="col" value="Назначить">  </p>

Пытаюсь принять и записать в $pnumber с помощью GET, выводит ошибку.

PHP:
скопировать код в буфер обмена
  1. $n=mysql_query(" SELECT count(*) FROM book");
  2. $all=mysql_result($n,0,0);
  3. if ($all)
  4. {  
  5.     //записей на страницу
  6.     //$pnumber = 3;
  7.      $pnumber = $_GET['col']; //вот так пытаюсь сделать
  8.  
  9. //создаем объект
  10.     $n=new Navigator($all,$pnumber);
  11.  
  12. $result = mysql_query("SELECT * FROM book order by id desc LIMIT {$n->start()},$pnumber ");
  13.  
  14.  
  15. while($r = mysql_fetch_array($result)) {
  16.  
  17.  
  18.   echo "
  19. <p><TABLE BORDER WIDTH=600 align=center>
  20. <TR>
  21. <TD WIDTH=100>Почта: $r[email]</TD>
  22. <TD WIDTH=100>Имя $r[name]</TD>
  23. <TD WIDTH=400>Сообщение: $r[text]</p>
  24. </TD>
  25. </TR>
  26. </TABLE>";
  27.  
  28. }
  29.    //печатаем навигацию
  30.     echo $n->navi();
  31. }


Ошибка:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Warning: Division by zero in X:\home\localhost\www\lab2\Navigator.class.php on line 15
  2.  
  3. Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in X:\home\localhost\www\lab2\read.php on line 32


Файл навигатор класс:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class Navigator
  3. {
  4.         function __construct($all,$pnumber,$query='')
  5.         {
  6.                 $this->all=$all;
  7.                
  8.                 $this->pnumber=$pnumber;
  9.                 $this->query=$query;
  10.                 $this->page=isset($_GET['page']) ? (int)$_GET['page'] : 1;
  11.         }
  12.  
  13.         function start()
  14.         {
  15.                 $this->num_pages=ceil($this->all/$this->pnumber);
  16.                
  17.                 if (isset($_GET['last']))
  18.                 $this->page=$this->num_pages;
  19.                
  20.                 $this->start=$this->page*$this->pnumber-$this->pnumber;
  21.  
  22.                 if ($this->page > $this->num_pages || $this->page < 1)
  23.                 {
  24.                         $this->page=1;
  25.                         $this->start=0;
  26.                 }
  27.  
  28.                 return $this->start;
  29.         }
  30.  
  31.         function navi()
  32.         {
  33.                
  34.                 if ($this->num_pages<2)
  35.                 return '';             
  36.                
  37.                 $buff='<div class="navigator">';
  38.                
  39.     for($pr = '', $i =1; $i <= $this->num_pages; $i++)
  40.     {
  41.         $buff.=
  42.         $pr=(($i == 1 || $i == $this->num_pages || abs($i-$this->page) < 2) ? ($i == $this->page ? " [$i] " : ' <a href="'.$_SERVER['SCRIPT_NAME'].'?page='.$i.'&'.$this->query.'">'.$i.'</a> ') : (($pr == ' ... ' || $pr == '')? '' : ' ... '));
  43.     }
  44.                 return $buff.'</div>';
  45.         }
  46.  
  47. }

Явно что -то не то делаю, помогите пожалуйста.
radieu Отправлено: 21 Мая, 2011 - 11:21:01 • Тема: Присоеденить каптчу к форме • Форум: Напишите за меня, пожалуйста

Ответов: 1
Просмотров: 130
Воощем все сделал, отмена.
radieu Отправлено: 20 Мая, 2011 - 14:08:50 • Тема: Присоеденить каптчу к форме • Форум: Напишите за меня, пожалуйста

Ответов: 1
Просмотров: 130
Здравствуйте, помогите присоеденить капчу к форме. Вот код формы:

CODE (html):
скопировать код в буфер обмена
  1. include "comment.class.php";
  2. <div id="main">
  3.  
  4. <?php
  5.  
  6. /*
  7. /       Output the comments one by one:
  8. */
  9.  
  10. foreach($comments as $c){
  11.         echo $c->markup();
  12. }
  13.  
  14. ?>
  15.  
  16. <div id="addCommentContainer">
  17.         <p>Добавить комментарий</p>
  18.         <form id="addCommentForm" method="post" action="">
  19.         <div>
  20.                 <form action="index.php" method="post" enctype="multipart/form-data"><!-- Форма в которую будет отправлен код -->
  21.                         <label for="name">Имя</label>
  22.                 <input type="text" name="name" id="name" />
  23.            
  24.             <label for="email">Email</label>
  25.             <input type="text" name="email" id="email" />
  26.            
  27.             <label for="url">Твой сайт (не обязательно)</label>
  28.             <input type="text" name="url" id="url" />
  29.            
  30.             <label for="body">Твой комментарий</label>
  31.             <textarea name="body" id="body" cols="20" rows="5"></textarea>
  32.            
  33.             <label for="body">Каптча*</label>
  34.             <input type="text" name="keystring" id="keystring" />
  35.                         <p style="border:#808080 6px double; height:60px; width:120px"><img src="captcha/index_cap.php?<?php echo session_name()?>=<?php echo session_id()?>"></p>
  36.                        
  37.                         <input type="submit" id="submit" value="Отправить" />
  38.        
  39.  
  40.                
  41.                 </div>



Вот класс для обработки вводимой информации

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. class Comment
  4. {
  5.         private $data = array();
  6.        
  7.         public function __construct($row)
  8.         {
  9.                 /*
  10.                 /       The constructor
  11.                 */
  12.                
  13.                 $this->data = $row;
  14.         }
  15.        
  16.         public function markup()
  17.         {
  18.                 /*
  19.                 /       This method outputs the XHTML markup of the comment
  20.                 */
  21.                
  22.                 // Setting up an alias, so we don't have to write $this->data every time:
  23.                 $d = &$this->data;
  24.                
  25.                 $link_open = '';
  26.                 $link_close = '';
  27.                
  28.                 if($d['url']){
  29.                        
  30.                         // If the person has entered a URL when adding a comment,
  31.                         // define opening and closing hyperlink tags
  32.                        
  33.                         $link_open = '<a href="'.$d['url'].'">';
  34.                         $link_close =  '</a>';
  35.                 }
  36.                
  37.                 // Converting the time to a UNIX timestamp:
  38.                 $d['dt'] = strtotime($d['dt']);
  39.                
  40.                 // Needed for the default gravatar image:
  41.                 $url = 'http://'.dirname($_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]).'img/default_avatar.png';
  42.                
  43.                 return '
  44.                
  45.                         <div class="comment">
  46.                        
  47.                                
  48.                                 <div class="name">'.$link_open.$d['name'].$link_close.'</div>
  49.                                 <div class="date" title="Added at '.date('H:i \o\n d M Y',$d['dt']).'">'.date('d M Y',$d['dt']).'</div>
  50.                                 <p>'.$d['body'].'</p>
  51.                         </div>
  52.                 ';
  53.         }
  54.        
  55.         public static function validate(&$arr)
  56.         {
  57.        
  58.                 //////
  59.                 $errors = array();
  60.                 $data   = array();
  61.                
  62.                 ///////
  63.                
  64.                 if(!($data['email'] = filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL)))
  65.                 {
  66.                         $errors['email'] = 'Please enter a valid Email.';
  67.                 }
  68.                
  69.                 if(!($data['url'] = filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL)))
  70.                 {
  71.                         // If the URL field was not populated with a valid URL,
  72.                         // act as if no URL was entered at all:
  73.                        
  74.                         $url = '';
  75.                 }
  76.                
  77.                 // Using the filter with a custom callback function:
  78.                
  79.                 if(!($data['body'] = filter_input(INPUT_POST,'body',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
  80.                 {
  81.                         $errors['body'] = 'Please enter a comment body.';
  82.                 }
  83.                
  84.                 if(!($data['name'] = filter_input(INPUT_POST,'name',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
  85.                 {
  86.                         $errors['name'] = 'Please enter a name.';
  87.                 }
  88.                
  89.                 if(!empty($errors)){
  90.                        
  91.                         // If there are errors, copy the $errors array to $arr:
  92.                        
  93.                         $arr = $errors;
  94.                         return false;
  95.                 }
  96.                
  97.                 // If the data is valid, sanitize all the data and copy it to $arr:
  98.                
  99.                 foreach($data as $k=>$v){
  100.                         $arr[$k] = mysql_real_escape_string($v);
  101.                 }
  102.                
  103.                 // Ensure that the email is lower case:
  104.                
  105.                 $arr['email'] = strtolower(trim($arr['email']));
  106.                
  107.                 return true;
  108.                
  109.         }
  110.  
  111.         private static function validate_text($str)
  112.         {
  113.                 /*
  114.                 /       This method is used internally as a FILTER_CALLBACK
  115.                 */
  116.                
  117.                 if(mb_strlen($str,'utf8')<1)
  118.                         return false;
  119.                
  120.                 // Encode all html special characters (<, >, ", & .. etc) and convert
  121.                 // the new line characters to <br> tags:
  122.                
  123.                 $str = nl2br(htmlspecialchars($str));
  124.                
  125.                 // Remove the new line characters that are left
  126.                 $str = str_replace(array(chr(10),chr(13)),'',$str);
  127.                
  128.                 return $str;
  129.         }
  130.  
  131. }
  132.  
  133. ?>



Вот капча, тут много разных файлов :blink:

Файл index_cap.php



PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.  
  4. /* (закоментировано, не стал убирать, может пригодится) Использовать:
  5.  
  6.         <?PHP
  7.         session_start();
  8.         ?>
  9.         <form action="./" method="post">
  10.         <p>Enter text shown below:</p>
  11.         <p><img src="PATH-TO-THIS-SCRIPT?<?PHP echo session_name()?>=<?PHP echo session_id()?>"></p>
  12.         <p><input type="text" name="keystring"></p>
  13.         <p><input type="submit" value="Check"></p>
  14.         </form>
  15.         <?PHP
  16.         if(count($_POST)>0){
  17.                 if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] ==  $_POST['keystring']){
  18.                         echo "Correct";
  19.                 }else{
  20.                         echo "Wrong";
  21.                 }
  22.         }
  23.         unset($_SESSION['captcha_keystring']);
  24.         ?>
  25.  
  26. */
  27.  
  28. include('kcaptcha.php');
  29.  
  30. if(isset($_REQUEST[session_name()])){
  31.         session_start();
  32. }
  33.  
  34. $captcha = new STOPBOT();
  35.  
  36. if($_REQUEST[session_name()]){
  37.         $_SESSION['captcha_keystring'] = $captcha->getKeyString();
  38. }
  39.  
  40. ?>



Остальные файлы, это сама каптча и настройки для нее. Помогите плиз прикрутить. Если нужно могу выложить остальное.

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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB