Foros del Web » Programando para Internet » PHP »

Ayuda en este libro

Estas en el tema de Ayuda en este libro en el foro de PHP en Foros del Web. Código PHP: <?php class  maxGuestbook {    var  $messageDir  =  'mensajes' ;    var  $dateFormat  =  'Y-m-d g:i:s A' ;    var  $itemsPerPage  =  10 ;    var  $messageList ;     ...
  #1 (permalink)  
Antiguo 22/11/2009, 13:07
Avatar de ColdFusion  
Fecha de Ingreso: octubre-2008
Ubicación: Tocoa, Colon Honduras C.A.
Mensajes: 419
Antigüedad: 15 años, 6 meses
Puntos: 9
Ayuda en este libro

Código PHP:
<?php
class maxGuestbook{
   var 
$messageDir 'mensajes';
   var 
$dateFormat 'Y-m-d g:i:s A';
   var 
$itemsPerPage 10;
   var 
$messageList;
   
function 
processGuestbook(){
   if (isset(
$_POST['submit'])) {
      
$this->insertMessage();
        
$name   "";
   
$email  "";
   
$submitDate  "";
   
$content ""
   unset(
$_POST);
   }
   
$page = isset($_GET['pag']) ? $_GET['pag'] : 1;
   
   
$this->displayGuestbook($page);
}
   
function 
getMessageList(){
    
   
$this->messageList = array();
   
    
// Open the actual directory
    
if ($handle = @opendir($this->messageDir)) {
        
// Read all file from the actual directory
        
while ($file readdir($handle))  {
            if (!
is_dir($file)) {
               
$this->messageList[] = $file;
          }
        }
    }    
    
    
rsort($this->messageList);
    
    return 
$this->messageList;
}   

function 
displayGuestbook($page=1){
      
$list $this->getMessageList();
      
//echo "<center><a href='add.php'>Leave a message</a></center>";
      
echo "<table class='newsList'>";
      
      
//Get start point and end point
      
$startItem = ($page-1)*$this->itemsPerPage;
      if ((
$startItem $this->itemsPerPage) > sizeof($list)) $endItem sizeof($list);
      else 
$endItem $startItem $this->itemsPerPage
      
      for (
$i=$startItem;$i<$endItem;$i++){
         
//foreach ($list as $value) {
         
$value $list[$i];
          
$data file($this->messageDir.DIRECTORY_SEPARATOR.$value);
          
$name  trim($data[0]);
          
$email trim($data[1]);
         
$submitDate trim($data[2]);    
         unset (
$data['0']);
         unset (
$data['1']);
         unset (
$data['2']);
          
         
$content "";
         foreach (
$data as $value) {
               
$content .= $value;
         }
          
          echo 
"<tr><th align='left'>$name:</th>
                    <th class='right'>$submitDate</th></tr>"
;
          echo 
"<tr><td colspan='2'>".nl2br(htmlspecialchars($content))."<br/></td></tr>";
      }
      echo 
"</table>";
      if (
sizeof($list) == 0){
         echo 
"<center><h2>No hay mensajes hasta el momentos!</h2><span>Puedes agregar el tuyo usando el formulario de abajo.</span></center>";
      }
      
// Create pagination
      
if (sizeof($list) > $this->itemsPerPage){
         echo 
"<div id=\"navigation\">";
         if (
$startItem == 0) {
            if (
$endItem sizeof($list)){
               echo 
"<div id=\"nright\"><a href=\"".$_SERVER['PHP_SELF']."?page=".($page+1)."\" >Siguiente &raquo;</a></div>";
            } else {
               
// Nothing to display
            
}
         } else {
            if (
$endItem sizeof($list)){
               echo 
"<div id=\"nleft\"><a href=\"".$_SERVER['PHP_SELF']."?pag=".($page-1)."\" >&laquo; Anterior</a></div>";
               echo 
"<div id=\"nright\"><a href=\"".$_SERVER['PHP_SELF']."?pag=".($page+1)."\" >Siguiente &raquo;</a></div>";
            } else {
               echo 
"<div id=\"nleft\"><a href=\"".$_SERVER['PHP_SELF']."?pag=".($page-1)."\" >&laquo; Anterior</a></div>";
            }
         }
         
         echo 
"<br/></div><br/>";
      }
      echo 
"<hr />";
      
$this->displayAddForm();
}

function 
displayAddForm(){
?>  
  <form class="iform"  action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    Nombre:<br/>
    <input type="text" name="name" size="30"/><br/><br/>
    Email:<br/>
    <input type="text" name="email" size="30"/><br/><br/>
    Mensaje:<br/>
    <textarea name="message" rows="7" cols="49"></textarea><br/>
  <input type="submit" name="submit" value="Agregar" />
  </form> 
   
<?php   
}

function 
insertMessage(){
   
$name   = isset($_POST['name']) ? $_POST['name'] : 'Anonimo';
   
$email  = isset($_POST['email']) ? $_POST['email'] : '';
   
$submitDate  date($this->dateFormat);
   
$content = isset($_POST['message']) ? $_POST['message'] : '';
   
   if (
trim($name) == ''$name 'Anonimo';
   if (
strlen($content)<5) {
      exit();
   }
   
   
$filename date('YmdHis');
   if (!
file_exists($this->messageDir)){
      
mkdir($this->messageDir);
   }
   
$f fopen($this->messageDir.DIRECTORY_SEPARATOR.$filename.".txt","w+");         
   
fwrite($f,$name."\n");
   
fwrite($f,$email."\n");
   
fwrite($f,$submitDate."\n");
   
fwrite($f,$content."\n");
   
fclose($f);
   
}
}
?>
Los mensaje se agrega bien el unico problema en esto es que despues de haber agregado el mensaje y se actualiza la pagina se vuelve a agregar el mismo msj, deso que ya no lo tenga..

como podria hacer
  #2 (permalink)  
Antiguo 22/11/2009, 14:06
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 1 mes
Puntos: 25
Respuesta: Ayuda en este libro

No logre ver donde haces la actualizacion, pero el problema es que al actualizar vuelves a mandar los datos, con que haces la actualizacion de la web?
Creo que convendria con Header.
  #3 (permalink)  
Antiguo 22/11/2009, 16:02
 
Fecha de Ingreso: noviembre-2009
Mensajes: 20
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Ayuda en este libro

Puedes intentar hacer esto, al final del método insertMessage, cambia:

Código PHP:
fclose($f); 
a secas, por:

Código PHP:
fclose($f);
unset(
$_POST["name"]);
unset(
$_POST["email"]);
unset(
$_POST["message"]); 
Ten en cuenta que al principio de insertMessage hay una serie de valores por defecto para esas tres variables que vienen por $_POST. Si no quieres que al actualizar inserte un mensaje sin datos, con campo $_POST["name"] = "Anonimo", comprueba que no vengan vacíos esos campos.

Por cierto, unset() desinicializa una variable, es una función muy útil porque no pone la variable simplemente a "" o 0, sino que la hace desparecer, como si nunca hubiese sido declarada o inicializada.

Espero que te sirva.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:24.