постраничнй вывод на файлах

Discussion in 'PHP' started by Bridun, 13 Feb 2011.

  1. Bridun

    Bridun New Member

    Joined:
    3 Feb 2011
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Привет всем помогите сделать постраничнй вывод
    Это сам вывод с гостевой как его разбить постранично потому что много собирается

    PHP:
    <?php 

    $message_file 
    file("engine/quest.csv"); 
    foreach(
    $message_file as $line


    $elem explode(";",$line); 

    echo(
    "<tr> 
    <td align=center valign=top colspan=2><b>Имя :</b> 
    $elem[1] ( <b>$elem[2]</b> )</td> 

    </tr> 
    <tr> 

    <td align=center valign=top width=50%><b>E-mail :</b> <a href=mailto:
    $elem[3] target=_blank>$elem[3]</a></td> 
    <td align=center valign=top width=50%><b>Сайт :</b> <a href=
    $elem[4] target=_blank>$elem[4]</a></td> 
    </tr> 
    <tr> 
    <td valign=top colspan=2><div style=margin-left:20px; ><b>Вопрос </b>№ (
    $elem[0]$elem[5]</div></td> 

    </tr> 
    <tr> 
    <td align=right valign=top colspan=2><small>Написано : 
    $elem[6]</small></td> 

    </tr> 
    <tr> 
    <td bgcolor=#E0F1F7 valign=top colspan=2 ><div style=margin-left:20px;><b><font color=red>
    $elem[7]</font></b></div></td> 
    </tr> 
    <tr> 
    <td valign=top colspan=2 >&nbsp;</td> 
    </tr>"
    ); 


    echo(
    "</table>"); 

    ?>
     
    #1 Bridun, 13 Feb 2011
    Last edited: 13 Feb 2011
  2. Bridun

    Bridun New Member

    Joined:
    3 Feb 2011
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Вот я шото делал такое но не преключаются страницы и записывает 2 сообщения почемуто где здесь ошибка

    PHP:
     <?
    ?>
    <?php
    ob_start
    ();
    session_start();
    error_reporting(0);
    $page_h1 'Появились вопросы - напишите нам';
    $page_title 'FAQ';
    $page_descr 'FAQ';
    $page_keyws 'FAQ';
    $path ' ,&nbsp;<img src=./engine/img/li.gif />&nbsp;<a href="./guest.html">FAQ</a>';
    $site="http://".$_SERVER['SERVER_NAME'];

                
    $message_file="engine/guest.csv";
                
    $general=file($message_file);
                 
    $lines_file=file($message_file);
                  
    $lines=count($lines_file);
                    
    $Pmessage_file file("$message_file");
               
    $onlyg=3;
                 if (@
    $page == "" or $page 0)
                  {
                   
    $page "1";
                   }
               
    $first count($Pmessage_file) - ($onlyg * ($page 1));
                 
    $second count($Pmessage_file) - ($onlyg $page) + 1;
             if (
    $second 1)
            {
             
    $second 1;
            }
            
    $pages = (int) ((count($Pmessage_file) + $onlyg) / $onlyg);
             for (
    $onlyg 1$onlyg <= $pages$onlyg++)
         {
             if (
    $onlyg != $page)
            {
            
    $line .= " | <a href=\"guest.html?id=$onlyg\">$onlyg</a>";
            }
               if (
    $onlyg == $page)
            {
            
    $line .= "<a href=\"guest.html?id=$onlyg\">$onlyg</a>";
            }
         }
            for ( 
    $i $first-1$i >= $second-1$i--)
        {
          list(
    $max,$name,$city,$email,$url,$text,$d,$reply,$redata)=explode(";", ($general[$i]));

             
    $id $i;
              
    $id++;
              echo 
    "<table border=1 bordercolor=#E5E5E5 align=center cellpadding=0 cellspacing=0 width=100%>
           <tr>
            <td align=center valign=top colspan=2><b>Имя :</b> 
    $name ( <b>$city</b> )</td>
        </tr>
        <tr>
            <td align=center valign=top width=50%><b>E-mail :</b> <a href=mailto:
    $email target=_blank>$email</a></td>
            <td align=center valign=top width=50%><b>Сайт :</b> <a href=
    $url target=_blank>$url</a></td>
        </tr>
        <tr>
            <td valign=top colspan=2><div style=margin-left:20px; ><b>Вопрос :</b> 
    $text</div></td>
        </tr>
        <tr>
            <td align=right valign=top colspan=2><small>Сообщение № 
    $max написано $d</small></td>
        </tr>
        <tr>
            <td bgcolor=#E0F1F7 valign=top colspan=2 ><div style=margin-left:20px;><b>
    $reply</b><font color=red>$redata</font></div></td>
                </tr>
                    <tr>
            <td valign=top colspan=2 >&nbsp;</td>
                </tr></table>"
    ;
        }
        echo 
    "Страницы : $line<br>";
         echo 
    "Всего ссообщений : $lines<br>";
     if ( isset(
    $_POST['submit']))
      {
        
    $error "";
        if ( isset(
    $_POST["name"]) && !empty($_POST["name"])) $name $_POST["name"]; else $error .= "<li>Не введено Имя</li>";
        if ( isset(
    $_POST["city"]) && !empty($_POST["city"])) $city $_POST["city"]; else $error .= "<li>Не введено Откуда</li>";
        if ( isset(
    $_POST["email"]) && !empty($_POST["email"])) $email $_POST["email"]; else $error .= "<li>Не введен E-mail</li>";;
        if ( isset(
    $_POST["text"]) && !empty($_POST["text"])) $text $_POST["text"]; else $error .= "<li>Не введён текст сообщения</li>";
        if ( 
    strlen($text) > 1000 $error.="<li>Максимальная длинна сообщения 500 символов</li>";
        if ( 
    strlen($name) > 40 $error.="<li>Максимальная длинна имени 40 символов</li>";
        
    $url   trim($_POST['site']);
        if ( 
    $url == "http://" $url "";
        
    $text  stripslashes(htmlspecialchars($text));
        
    $name  stripslashes(htmlspecialchars($name));
        
    $city  stripslashes(htmlspecialchars($city));
        
    $email stripslashes(htmlspecialchars($email));
        
    $text str_replace("\n"," ",$text);
        if ( 
    eregi("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]"$email) ) $error $error."<li>Неправильно введён E-mail!</li>";
        if ( !
    preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i",$email) && trim($email) != "" $error $error."<li>Неправильно введён E-mail!</li>";



         if ( !empty(
    $error) ) echo("<ul style='color:red;'>".$error."</ul>");
        else 
    // записываем в файл
         
    {
            
    // вычисляем номер последней записи id
            
    $file  file("engine/guest.csv");
            
    $max 0;
            foreach( 
    $file as $line)
            {
                if ( !empty(
    $line) )
                {
                    
    $elem explode(";",$line);
                    if ( 
    $elem[0] > $max$max $elem[0];
                }
            }
            
    $max++;
            if (
    is_writeable("engine/guest.csv"))
               {
            
    $month = array('1' => 'января','2' => 'февраля','3' => 'марта','4' => 'апреля','5' => 'мая','6' => 'июня','7' => 'июля','8' => 'августа','9' => 'сентября','10' => 'октября','11' => 'ноября','12' => 'декабря');
                
    $d=date("d {$month[date("n")]} Y, в H:i");
                
    $f=fopen("engine/guest.csv","a+");
                
    $write_text "$max;$name;$city;$email;$url;$text;$d;$reply;$redata \n";
                
    fputs($f,$write_text);
                
    fclose($f);
                {
                    echo(
    "<font color=red>Ваш вопрос записан! Спасибо! В ближайшее время Вы получите ответ.</font><html><head><meta http-equiv='Refresh' content='2; URL = guest.html'></head>");
                }
            }
           else echo(
    "<p style='color:red;'>Не удалось записать в файл<html><head><meta http-equiv='Refresh' content='2; URL = guest.html'></head></p>");
         }
      }


    ?>
                          <style type="text/css">
                       .textfield {
                            border: #DBDBDB solid 1px;
                            background-image: url('./images/textfield.gif');
                                    }

                        .button {
                               background-image: url('./images/textfield.gif');
                           border: #DBDBDB solid 1px;
                                 }

                        textarea {
                           border: #DBDBDB solid 1px;
                                 font-size:10px;

                                }


                       small {font-size:9px;
                              margin-right:40px;

                                }

                                   </style>
     <br/>
    <form action='' method='POST'>
    <input type="hidden" name="action" value="do">
    <input type="hidden" name="reply" />
     <hr style="width:100%; color:#E0F1F7;" />
    <table align="center" border="0" cellpadding=0 cellspacing=5 width=100% >
     <tr>
      <td align='right' width=30%>Имя : </td>
      <td><input type="text" name="name"  size="40" class="textfield">
        <span style="color:#FF0000;font-size:10pt">*</span></td>
     </tr>
      <td align='right'>Откуда : </td>
      <td><input type="text" name="city"  size="40" class="textfield">
        <span style="color:#FF0000;font-size:10pt">*</span></td>
     </tr>
     <tr>
      <td align='right'>E-mail : </td>
      <td><input type="text" name="email"  size="40" class="textfield">
        <span style="color:#FF0000;font-size:10pt">*</span></td>
     </tr>
     <tr>
      <td align='right'>Сайт : </td>
      <td><input type="text" name="site" size="40" value="http://......net" class="textfield"></td>
     </tr>
     <tr>
      <td align='center' colspan=2>

    <textarea type="text" name="text" rows="10" cols="90"></textarea></td>
     </tr>
     <tr>
      <td>&nbsp;</td><td><input type="submit" value="Отправить" name="submit" class="button"></td>
      </tr>
     </table>
    </form>



     <?
                                         echo("<br/>Придерживайтесь правил");
    $content = ob_get_contents();
    ob_end_clean();
    ?>
     
  3. Bridun

    Bridun New Member

    Joined:
    3 Feb 2011
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Помогите пожалуйста осталась одна проблема почему не переключается

    работает отлично в админке а на сайте нет всмысле в браузере переключается ?page=1или2 а на самом деле нет помогите пожалуйста
    PHP:
    <?
    // подключаем ф-ю
    function navigator$title$title_links$id$quantity_show$total$get )
    {
    if( 
    $id=='' )
    {
    $id='1';
    }
    if( 
    $quantity_show '1' )
    {
    $quantity_show '1';
    }
    $line $title;
    $pages ceil$total $quantity_show );
    for( 
    $i 1$i <= $pages$i++ )
    {
    if( 
    $pages $pages $id and $id <= $pages )
    {
    $e = ( $i $quantity_show ) - $quantity_show;
    $e $e $quantity_show;
    if( 
    $i == '0' )
    {
    $e++;
    }
    if( 
    $quantity_show == '1' and $i != '1' )
    {
    $e++;
    }
    if( 
    $id == $i )
    {
    $second $quantity_show $id;
    $first $second $quantity_show;
    if(
    $second $total)
    {
    $second $total;
    }
    if(
    $second '0')
    {
    $second '0';
    }
    $e $e 1;
    $line.= ' <a href="?'.$get.'='.$i.'" title="'.$title_links.' '.$i.'">'.$e.'</a> |';
    }
    if( 
    $id $i and $id $i and $id != $i)
    {
    $e $e 1;
    $line .= ' <a href="?'.$get.'='.$i.'" title="'.$title_links.' '.$i.'">'.$e.'</a> |';
    }
    if( 
    $id $i and $id $i and $id != $i)
    {
    $e $e 1;
    $line .= ' <a href="?'.$get.'='.$i.'" title="'.$title_links.' '.$i.'">'.$e.'</a> |';
    }
    }
    }
    if( 
    strlen$line ) > '11' )
    {
    return array( 
    $line$first$second );
    }
    return 
    FALSE;
    }
    # если есть данные в командной строке, то выводим их
    if ( isset( $_GET ) )
    {
    foreach ( 
    $_GET as $key => $value )
    {
    $
    $key=$value;
    }
    }
    # считываем базу в массив строк, в нашем случае база называется 'txt/csv' и данные в ней должны иметь разделение \n
    $file file('engine/guest.csv');
    # считаем сколько всего строк в базе
    $total count($file);
    $count count($file);
    # применим функцию (по три записи на вывод)
    $line_arr navigator('Страниц :',''$page3$total'page');
    # в итоге получается $line - линия навигации
    $line $line_arr[0];
    # какой первый $file выводить, именно на этой страничке
    $first $line_arr[1];
    # какой последний $file выводить, именно на этой страничке
    $second $line_arr[2];
    # еще раз печатаем линию навигации, но уже вверху
    for ( $i $total $first 1$i >= $total $second$i--)
    {
    $elem explode (';'$file[$i]);
    echo(
    " <table border=1 bordercolor=#E5E5E5 align=center cellpadding=0 cellspacing=0 width=100% ><tr>
    <td align=center valign=top colspan=2><b>Имя :</b> 
    $elem[1] ( <b>$elem[2]</b> )</td>
    </tr>
    <tr>
    <td align=center valign=top width=50%><b>E-mail :</b> <a href=mailto:
    $elem[3] target=_blank>$elem[3]</a></td>
    <td align=center valign=top width=50%><b>Сайт :</b> <a href=
    $elem[4] target=_blank>$elem[4]</a></td>
    </tr>
    <tr>
    <td valign=top colspan=2><div style=margin-left:20px; ><b>Вопрос :</b> 
    $elem[5]</div></td>
    </tr>
    <tr>
    <td align=right valign=top colspan=2><small>Сообщение № 
    $elem[0] написано $elem[6]</small></td>
    </tr>
    <tr>
    <td bgcolor=#E0F1F7 valign=top colspan=2 ><div style=margin-left:20px;><b>
    $elem[7]</b><font color=red>$elem[8]</font></div></td>
    </tr>
    <tr>
    <td valign=top colspan=2 >&nbsp;</td>
    </tr></table>"
    );
    }
    if(
    $line != '')
    {
    echo 
    "$line";
    }
    echo 
    "<br>Всего ссообщений : $count<br>";
    ?>
     
    #3 Bridun, 13 Feb 2011
    Last edited: 14 Feb 2011