Foros del Web » Programando para Internet » PHP »

PHP OO Error de sintaxis

Estas en el tema de Error de sintaxis en el foro de PHP en Foros del Web. Estoy dando mis primeros passos con POO y quiero editar una pagina mia que tenia 3 bloques y crear una funcion para todos, hice esto: ...
  #1 (permalink)  
Antiguo 14/12/2010, 17:43
 
Fecha de Ingreso: diciembre-2010
Mensajes: 16
Antigüedad: 13 años, 4 meses
Puntos: 2
Pregunta Error de sintaxis

Estoy dando mis primeros passos con POO y quiero editar una pagina mia que tenia 3 bloques y crear una funcion para todos, hice esto:

Código PHP:
class bloque {
  private 
$contenido=array();
  private 
$titulos=array();
  public function 
cargarOpcion($con,$tit,$ic)
  {
    
$this->contenido[]=$con;
    
$this->titulos[]=$tit;
    
$this->icono[]=$ico;
  }
  public function 
mostrar()
  {
    for(
$f=0;$f<count($this->titulos);$f++)
    {
      echo 
'<div class="ultcom">
    <img src="'
.$url.'/images/'.$this->icono[$f].'" title="'.$this->titulo[$f].'" alt="'.$this->titulo[$f].'" width="16px">
    <b size=14">'
.$this->titulo[$f].'&hellip;</b>
    <hr>
    '
.$this->contenido[$f].'
    </div>'
;
    }
  }
}


$ultimoscoments=mysql_query("
        SELECT c.id, c.id_secreto, c.nombre, s.id
        FROM comentarios c, secretos s
        WHERE c.id_secreto = s.id
        ORDER BY c.id desc 
        LIMIT $ncomentarios  
        "
,$conexion) or
  die(
"Problemas en el select:".mysql_error());

echo
'<div class="content_right">';

$bloq1=new bloque();
$bloq1->cargarOpcion(
                     
'Ultimos comentarios&hellip;',
                     
''.$ultimoscoments=mysql_query("
                                         SELECT c.id, c.id_secreto, c.nombre, s.id
                                         FROM comentarios c, secretos s
                                         WHERE c.id_secreto = s.id
                                         ORDER BY c.id desc 
                                         LIMIT $ncomentarios  
                                         "
,$conexion) or
                     die(
"Problemas en el select:".mysql_error());
                     while(
$ultcom mysql_fetch_array($ultimoscoments))
                     {
                     echo
'> <a href="'.$url.'/index.php?id_secreto='.$ultcom['id_secreto'].'" >
                     <b>'
.$ultcom['nombre'].'</b> comento el secreto '.$ultcom['id_secreto'].'</a><br>';
                     }.
'',
                     
'thread.png'
                     
);
$bloq1->mostrar(); 
pero no lo logra hacer andar, el problema esta en la variable, pero como la deberia poner?
  #2 (permalink)  
Antiguo 14/12/2010, 20:46
 
Fecha de Ingreso: julio-2008
Mensajes: 208
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: Error de sintaxis

El error que te da es porque estas invoncando mal a la funcion, debes pasarle misma cantidad de parametros que en la definicion y los mismos deben ser string.
Código:
$bloq1->cargarOpcion( 
                     'Ultimos comentarios&hellip;', 
                     ''.$ultimoscoments=mysql_query(" 
                                         SELECT c.id, c.id_secreto, c.nombre, s.id 
                                         FROM comentarios c, secretos s 
                                         WHERE c.id_secreto = s.id 
                                         ORDER BY c.id desc  
                                         LIMIT $ncomentarios   
                                         ",$conexion) or 
                     die("Problemas en el select:".mysql_error()); 
                     while($ultcom = mysql_fetch_array($ultimoscoments)) 
                     { 
                     echo'> <a href="'.$url.'/index.php?id_secreto='.$ultcom['id_secreto'].'" > 
                     <b>'.$ultcom['nombre'].'</b> comento el secreto '.$ultcom['id_secreto'].'</a><br>'; 
                     }.'', 
                     'thread.png' 
                     );
Deberia corresponderse con la funcion:

Código:
public function cargarOpcion($con,$tit,$ic) 
  { 
    $this->contenido[]=$con; 
    $this->titulos[]=$tit; 
    $this->icono[]=$ico; 
  }
Por lo que podria ser esto lo que realmente quieres hacer:
Código:
$bloq1->cargarOpcion( 
                     'Ultimos comentarios&hellip;', 
                     $ultimoscoments, 
                     'thread.png' 
                     );
Aunque por la logica que pones capaz ni eso capaz lo que quieres es hacer:

Código:
$COMENTARIOS_POSTA='';
while($ultcom = mysql_fetch_array($ultimoscoments)) 
                     { 
                     $COMENTARIOS_POSTA .= '> <a href="'.$url.'/index.php?id_secreto='.$ultcom['id_secreto'].'" > 
                     <b>'.$ultcom['nombre'].'</b> comento el secreto '.$ultcom['id_secreto'].'</a><br>';
}

//Invocar la funcion con los comentarios como string (que estan en la variable //COMENTARIOS_POSTA)

$bloq1->cargarOpcion( 
                     'Ultimos comentarios&hellip;', 
                     $COMENTARIOS_POSTA , 
                     'thread.png' 
                     );

Me explico, trata de pasar strings a la funcion que supongo que lo unico que hace es mostrar esas 3 areas en tu web.....no hagas la logica dentro de la funcion como intentas ahora mismo, hazlo antes y copialo en una variable (COMENTARIOS_POSTA ) y luego si invoca a la funcion..

Saluteeee!!!

Editado: Pregunta como pones el codigo para que quede como PHP ??? si lo pongo entre etiquetas [CODE] me queda como lo estas viendo y la verdad que esta mucho mejor el ejemplo que tu muestras....

Saluteeeee!!!! againnnnnnn!!!
__________________
Lo maravilloso de aprender algo es que nadie puede arrebatárnoslo.

Última edición por sandinosaso; 14/12/2010 a las 20:48 Razón: consultilla
  #3 (permalink)  
Antiguo 14/12/2010, 20:53
 
Fecha de Ingreso: diciembre-2010
Mensajes: 16
Antigüedad: 13 años, 4 meses
Puntos: 2
Respuesta: Error de sintaxis

gracias por tu respuesta e interes!

lo encierro entre: [PHP*][/PHP*]

Etiquetas: sintaxis
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:00.