PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (1): [1]
Найдено сообщений: 5
radieu
Отправлено: 22 Мая, 2011 - 19:04:19 • Тема: Постраничная навигация, с отправкой числа выводимых сообщений • Форум: Если скрипт не работает
Ответов: 7 Просмотров: 2420
ugin_root добавлять "&col=20" нужно чтобы при переходе значение в $pnumber сохранялось? Думаю нет. Как мне это реализовать?
Вот что у меня получилось:
index.php
CODE (
html ):
скопировать код в буфер обмена
<form name = "" action = "index.php" method = "get" >
<input type = 'text' name = "col" value = "5" >
<p ><input type = "submit" name = "ok" value = "Назначить" > </ p >
</ form >
read.php
PHP:
скопировать код в буфер обмена
<?PHP
require_once ( 'Navigator.class.php' ) ;
if ( $all )
{
//записей на страницу
/* if(!empty($_SESSION['col']) and !isset($_GET['ok']))
$pnumber = $_SESSION['col'];
else {
$_SESSION['col'] = $_GET['col'];
$pnumber = $_GET['col'];
}*/
$pnumber = isset ( $_GET [ 'col' ] ) ?
( int
) $_GET [ 'col' ] : 5 ;
//создаем объект
$n = new Navigator( $all , $pnumber ) ;
$result = mysql_query ( "SELECT * FROM book order by id desc LIMIT " . $n -> start ( ) . "," . $pnumber ) ;
echo "
<p><TABLE BORDER WIDTH=600 align=center>
<TR>
<TD WIDTH=100>Почта: $r[email] </TD>
<TD WIDTH=100>Имя $r[name] </TD>
<TD WIDTH=400>Сообщение: $r[text] </p>
</TD>
</TR>
</TABLE>" ;
}
//печатаем навигацию
echo $n -> navi ( ) ;
}
?>
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 ):
скопировать код в буфер обмена
<form name = "" action = "read.php" method = "get" >
<input type = 'text' name = "col" value = '5' >
<p ><input type = "submit" name = "col" value = "Назначить" > </ p >
Пытаюсь принять и записать в $pnumber с помощью GET, выводит ошибку.
PHP:
скопировать код в буфер обмена
if ( $all )
{
//записей на страницу
//$pnumber = 3;
$pnumber = $_GET [ 'col' ] ; //вот так пытаюсь сделать
//создаем объект
$n = new Navigator( $all , $pnumber ) ;
$result = mysql_query ( "SELECT * FROM book order by id desc LIMIT {$n->start ()},$pnumber " ) ;
echo "
<p><TABLE BORDER WIDTH=600 align=center>
<TR>
<TD WIDTH=100>Почта: $r[email] </TD>
<TD WIDTH=100>Имя $r[name] </TD>
<TD WIDTH=400>Сообщение: $r[text] </p>
</TD>
</TR>
</TABLE>" ;
}
//печатаем навигацию
echo $n -> navi ( ) ;
}
Ошибка:
CODE (
htmlphp ):
скопировать код в буфер обмена
Warning: Division by zero in X: \home\localhost\www\lab2\Navigator. class. php on line 15
Warning
: mysql_fetch_array ( ) expects parameter
1 to be resource
, boolean given in X
: \home\localhost\www\lab2\read
. php on line
32
Файл навигатор класс:
PHP:
скопировать код в буфер обмена
<?PHP
class Navigator
{
function __construct( $all , $pnumber , $query = '' )
{
$this -> all = $all ;
$this -> pnumber = $pnumber ;
$this -> query = $query ;
$this -> page = isset ( $_GET [ 'page' ] ) ?
( int
) $_GET [ 'page' ] : 1 ; }
function start( )
{
$this -> num_pages = ceil ( $this -> all / $this -> pnumber ) ;
if ( isset ( $_GET [ 'last' ] ) ) $this -> page = $this -> num_pages ;
$this -> start = $this -> page * $this -> pnumber - $this -> pnumber ;
if ( $this -> page > $this -> num_pages || $this -> page < 1)
{
$this -> page = 1 ;
$this -> start = 0 ;
}
return $this -> start ;
}
function navi( )
{
if ( $this -> num_pages < 2)
return '' ;
$buff = '<div class="navigator">' ;
for ( $pr = '' , $i = 1 ; $i <= $this -> num_pages ; $i ++ )
{
$buff .=
$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 == '' ) ?
'' : ' ... ' ) ) ; }
return $buff . '</div>' ;
}
}
Явно что -то не то делаю, помогите пожалуйста.
radieu
Отправлено: 20 Мая, 2011 - 14:08:50 • Тема: Присоеденить каптчу к форме • Форум: Напишите за меня, пожалуйста
Ответов: 1 Просмотров: 130
Здравствуйте, помогите присоеденить капчу к форме. Вот код формы:
CODE (
html ):
скопировать код в буфер обмена
include "comment.class.php";
<div id = "main" >
<?php
/ *
/ Output the comments one by one:
*/
foreach( $comments as $c) {
echo $c-> markup();
}
?>
<div id = "addCommentContainer" >
<p > Добавить комментарий</ p >
<form id = "addCommentForm" method = "post" action = "" >
<div >
<form action = "index.php" method = "post" enctype = "multipart/form-data" > <!-- Форма в которую будет отправлен код -->
<label for = "name" > Имя</ label >
<input type = "text" name = "name" id = "name" / >
<label for = "email" > Email</ label >
<input type = "text" name = "email" id = "email" / >
<label for = "url" > Твой сайт (не обязательно)</ label >
<input type = "text" name = "url" id = "url" / >
<label for = "body" > Твой комментарий</ label >
<textarea name = "body" id = "body" cols = "20" rows = "5" ></ textarea >
<label for = "body" > Каптча*</ label >
<input type = "text" name = "keystring" id = "keystring" / >
<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 >
<input type = "submit" id = "submit" value = "Отправить" / >
</ div >
Вот класс для обработки вводимой информации
PHP:
скопировать код в буфер обмена
<?PHP
class Comment
{
public function __construct( $row )
{
/*
/ The constructor
*/
$this -> data = $row ;
}
public function markup( )
{
/*
/ This method outputs the XHTML markup of the comment
*/
// Setting up an alias, so we don't have to write $this->data every time:
$d = & $this -> data ;
$link_open = '' ;
$link_close = '' ;
if ( $d [ 'url' ] ) {
// If the person has entered a URL when adding a comment,
// define opening and closing hyperlink tags
$link_open = '<a href="' . $d [ 'url' ] . '">' ;
$link_close = '</a>' ;
}
// Converting the time to a UNIX timestamp:
// Needed for the default gravatar image:
$url = 'http://' . dirname ( $_SERVER [ 'SERVER_NAME' ] . $_SERVER [ "REQUEST_URI" ] ) . 'img/default_avatar.png' ;
return '
<div class="comment">
<div class="name">' . $link_open . $d [ 'name' ] . $link_close . '</div>
<div class="date" title="Added at ' . date ( 'H:i \o\n d M Y' , $d [ 'dt' ] ) . '">' . date ( 'd M Y' , $d [ 'dt' ] ) . '</div> <p>' . $d [ 'body' ] . '</p>
</div>
' ;
}
public static function validate( & $arr )
{
//////
///////
if ( ! ( $data [ 'email' ] = filter_input ( INPUT_POST
, 'email' , FILTER_VALIDATE_EMAIL
) ) ) {
$errors [ 'email' ] = 'Please enter a valid Email.' ;
}
if ( ! ( $data [ 'url' ] = filter_input ( INPUT_POST
, 'url' , FILTER_VALIDATE_URL
) ) ) {
// If the URL field was not populated with a valid URL,
// act as if no URL was entered at all:
$url = '' ;
}
// Using the filter with a custom callback function:
if ( ! ( $data [ 'body' ] = filter_input ( INPUT_POST
, 'body' , FILTER_CALLBACK
, array ( 'options' => 'Comment::validate_text' ) ) ) ) {
$errors [ 'body' ] = 'Please enter a comment body.' ;
}
if ( ! ( $data [ 'name' ] = filter_input ( INPUT_POST
, 'name' , FILTER_CALLBACK
, array ( 'options' => 'Comment::validate_text' ) ) ) ) {
$errors [ 'name' ] = 'Please enter a name.' ;
}
// If there are errors, copy the $errors array to $arr:
$arr = $errors ;
return false ;
}
// If the data is valid, sanitize all the data and copy it to $arr:
foreach ( $data as $k => $v ) {
}
// Ensure that the email is lower case:
return true ;
}
private static function validate_text( $str )
{
/*
/ This method is used internally as a FILTER_CALLBACK
*/
return false ;
// Encode all html special characters (<, >, ", & .. etc) and convert
// the new line characters to <br> tags:
// Remove the new line characters that are left
return $str ;
}
}
?>
Вот капча, тут много разных файлов :blink:
Файл index_cap.php
PHP:
скопировать код в буфер обмена
<?PHP
/* (закоментировано, не стал убирать, может пригодится) Использовать:
<?PHP
session_start();
?>
<form action="./" method="post">
<p>Enter text shown below:</p>
<p><img src="PATH-TO-THIS-SCRIPT?<?PHP echo session_name()?>=<?PHP echo session_id()?>"></p>
<p><input type="text" name="keystring"></p>
<p><input type="submit" value="Check"></p>
</form>
<?PHP
if(count($_POST)>0){
if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){
echo "Correct";
}else{
echo "Wrong";
}
}
unset($_SESSION['captcha_keystring']);
?>
*/
include ( 'kcaptcha.php' ) ;
}
$captcha = new STOPBOT( ) ;
$_SESSION [ 'captcha_keystring' ] = $captcha -> getKeyString ( ) ;
}
?>
Остальные файлы, это сама каптча и настройки для нее. Помогите плиз прикрутить. Если нужно могу выложить остальное.
Страниц (1): [1]
Powered by ExBB FM 1.0 RC1. InvisionExBB