Foros del Web » Programando para Internet » PHP »

Duda con clases en PHP

Estas en el tema de Duda con clases en PHP en el foro de PHP en Foros del Web. Veran, me han mandado realizar un ejercicio, en el que tengo que usar clases y definir objetos y demas, y tengo dos archivos: Código PHP: ...
  #1 (permalink)  
Antiguo 25/02/2010, 07:44
50l3r
Invitado
 
Mensajes: n/a
Puntos:
Duda con clases en PHP

Veran, me han mandado realizar un ejercicio, en el que tengo que usar clases y definir objetos y demas, y tengo dos archivos:

Código PHP:
<html>
    <head>
        <title></title>
    </head>
    
    <body bgcolor=#336667 style="color:#ffffff">
    
        <hr align=center>
    
        <table align=center width=100%>
        
            <td width=330><img src=Imagenes/imagen.jpg></td>
            
            <td>
                <h1>Biblioteca</h1>
                <p><u><b>Operaciones con los Ejemplares</b></u></p>
                <p><form action=index.php method=post>
                            <div align=right><b>Buscar Ejemplar:&nbsp;</b><input type=text name=Buscar1><input type=hidden name=flag value=enviado><input type=submit value=Buscar></div>
                        </form>
                        <center>
                        <form action=index.php method=post>
                            <input type=Hidden name=Buscar2 value=Buscar2>
                            <input type=Submit value="Ver Listado Completo de la Biblioteca">
                        </form>
                        
                        <form action=index.php method=post>
                            <input type=Hidden name=Buscar3 value=Buscar3>
                            <input type=Submit value="Ver Listado Completo de la Biblioteca Ordenado por Titulo">
                        </form>
                        </center>
            </td>
    
        </table>
    
        <hr align=center>
    
    </body>
</html>

<?php

$senal1 
$_POST['Buscar1'];
$senal2 $_POST['Buscar2'];
$senal3 $_POST['Buscar3'];
$flag $_POST[flag];
$tablas 0;
$upa 0;

if (
$senal1 == '' && $flag!= ''){
echo 
"<div style='color:red;font-weight:bold' align=center>Introduce algo en el Buscador</div>";
exit;
}

require 
"biblioteca.php";
$libros = new rellenar;
//---------------------------------------------------------------------------------------------------------------BUSCADOR-------------------------------------------------------------------------------------
if($senal1 != ''){
if ( 
eregi("^[a-z0-9_ ]+$"$senal1) ) {

foreach (
$libros as $i => $libritos){

    
$partes explode(',',$libritos);

    foreach (
$partes as $o){
    
        if( 
preg_match("/$senal1/",$o)){
            
$tablas++;
            
$upa++;
            if(
$upa == 1){    echo "<table border align=center style=color:green><th>Titulo</th><th>Autor</th><th>Editorial</th>";}
          
            if(
$tablas != 0){
                while(
$tablas != 0){
                
$librillos explode(',',$libros[$i]);
                echo 
"<tr>
                <td>$librillos[0]</td><td>$librillos[1]</td><td>$librillos[2]</td>"
;
                
$tablas $tablas 1;}}
                
                
                
}}}}else{echo 
"Solo se permite Introducir numeros y letras en el Buscador";
exit;}
echo 
"</table><br><center>El nº de ejemplares encontrados es: $upa</center>";
exit;}
//---------------------------------------------------------------------------------------------------------------BUSCADOR-------------------------------------------------------------------------------------

//---------------------------------------------------------------------------------------------------------LISTADO COMPLETO-----------------------------------------------------------------------------
if($senal2 != ''){
$contador 0;
if (
$libros != ''){
echo 
"<table border align=center style=color:green><th>Titulo</th><th>Autor</th><th>Editorial</th>";

foreach (
$libros as $i => $libritostos){
$contador++;
$partes explode(',',$libritostos);
                echo 
"<tr>
                <td>$partes[0]</td><td>$partes[1]</td><td>$partes[2]</td>"
;}


echo 
"</table><br><center>El nº de ejemplares encontrados es: $contador</center>";
exit;
}else{echo 
"<div style='color:red;font-weight:bold' align=center>No hay ejemplares de libros en el archivo incluido</div>";}}
//---------------------------------------------------------------------------------------------------------LISTADO COMPLETO-----------------------------------------------------------------------------

//---------------------------------------------------------------------------------------------------------LISTADO ORDENADO-----------------------------------------------------------------------------
if($senal3 != ''){
$contador 0;
if (
$libros != ''){
echo 
"<table border align=center style=color:green><th>Titulo</th><th>Autor</th><th>Editorial</th>";

foreach (
$libros as $i => $libritostos){
$contador++;
$partes explode(',',$libritostos);
sort($partes[0]);
                echo 
"<tr>
                <td>$partes[0]</td><td>$partes[1]</td><td>$partes[2]</td>"
;}


echo 
"</table><br><center>El nº de ejemplares encontrados es: $contador</center>";
exit;
}else{echo 
"<div style='color:red;font-weight:bold' align=center>No hay ejemplares de libros en el archivo incluido</div>";}

}
//---------------------------------------------------------------------------------------------------------LISTADO ORDENADO-----------------------------------------------------------------------------

















//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
?>
Código PHP:
<?php
class biblioteca{
                public 
$la_biblioteca = array();
                
                
                function 
__construct(){
                
$this->la_biblioteca=array();}
                
                
                function 
rellenar(){
                
$this->la_biblioteca=array( 
                        
'libros1' => 'el medico,Noah Gordon,Time Warner'
                        
'libros2' => 'marina,Carlos Ruiz Zafon,Edebé',
                        
'libros3'=>  'la hoguera de las vanidades,Tom Wolfe,RBA Editores',
                        
'libros4'=>  'el libro de las ilusiones,Paul Auster,Faber',
                        
'libros5'=>  'la muerte en venecia,Michael Mann,Anaya',
                        
'libros6'=>  'a sangre fria,Truman Capote,Ilusions',
                        
'libros7'=>  '2010: odisea en el espacio,Artur C.Clarke,P&J');}

                function 
__destruct(){
                unset(
$this->$la_biblioteca);
                }
                
                function 
__añadir($titulo,$autor,$editorial){
                
$siguiente count($la_biblioteca) + 1;
                
array_push($this->$la_biblioteca,"'".$titulo.",".$autor.",".$ejemplar."'");
                }
}
?>


Me da el siguiente error:

Fatal error: Class 'rellenar' not found in E:\WEB\ejercicio\index.php on line 55

__________________________________________________ ____________

Necesito, crear una biblioteca, en la que pueda buscar un libro, ver todos los libros, y ver todos ordenador por titulo

que es lo que hago mal? creo que esta incorrecta la clase biblioteca ya que no tengo conocimientos sobre clases

gracias
  #2 (permalink)  
Antiguo 25/02/2010, 07:53
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Duda con clases en PHP

Código PHP:
Ver original
  1. // .............
  2. require "biblioteca.php";
  3. $libros = new rellenar;
  4.  
  5. // ....................
  6. class biblioteca{
  7.            function rellenar(){

Rellenar() es un método de la clase Biblioteca, la instancia debe hacer referencia a la clase, no a un método

Cambia esto :

Código PHP:
Ver original
  1. require "biblioteca.php";
  2. $libros = new rellenar;

Por esto :

Código PHP:
Ver original
  1. require "biblioteca.php";
  2. $libros = new biblioteca();

PD: Información útil para que aprendas a programar con POO : http://www.forosdelweb.com/f68/faqs-...bjetos-254614/
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 25/02/2010, 08:08
50l3r
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda con clases en PHP

ahora lo tengo todo correctamente, asi:

index.php:

Código PHP:
<html>
    <head>
        <title></title>
    </head>
    
    <body bgcolor=#336667 style="color:#ffffff">
    
        <hr align=center>
    
        <table align=center width=100%>
        
            <td width=330><img src=Imagenes/imagen.jpg></td>
            
            <td>
                <h1>Biblioteca</h1>
                <p><u><b>Operaciones con los Ejemplares</b></u></p>
                <p><form action=index.php method=post>
                            <div align=right><b>Buscar Ejemplar:&nbsp;</b><input type=text name=Buscar1><input type=hidden name=flag value=enviado><input type=submit value=Buscar></div>
                        </form>
                        <center>
                        <form action=index.php method=post>
                            <input type=Hidden name=Buscar2 value=Buscar2>
                            <input type=Submit value="Ver Listado Completo de la Biblioteca">
                        </form>
                        
                        <form action=index.php method=post>
                            <input type=Hidden name=Buscar3 value=Buscar3>
                            <input type=Submit value="Ver Listado Completo de la Biblioteca Ordenado por Titulo">
                        </form>
                        </center>
            </td>
    
        </table>
    
        <hr align=center>
    
    </body>
</html>

<?php

$senal1 
$_POST['Buscar1'];
$senal2 $_POST['Buscar2'];
$senal3 $_POST['Buscar3'];
$flag $_POST[flag];
$tablas 0;
$upa 0;

if (
$senal1 == '' && $flag!= ''){
echo 
"<div style='color:red;font-weight:bold' align=center>Introduce algo en el Buscador</div>";
exit;
}

require 
"biblioteca.php";
$libros = new biblioteca;
//---------------------------------------------------------------------------------------------------------------BUSCADOR-------------------------------------------------------------------------------------
if($senal1 != ''){
if ( 
eregi("^[a-z0-9_ ]+$"$senal1) ) {

foreach (
$libros as $i => $libritos){

    
$partes explode(',',$libritos);

    foreach (
$partes as $o){
    
        if( 
preg_match("/$senal1/",$o)){
            
$tablas++;
            
$upa++;
            if(
$upa == 1){    echo "<table border align=center style=color:green><th>Titulo</th><th>Autor</th><th>Editorial</th>";}
          
            if(
$tablas != 0){
                while(
$tablas != 0){
                
$librillos explode(',',$libros[$i]);
                echo 
"<tr>
                <td>$librillos[0]</td><td>$librillos[1]</td><td>$librillos[2]</td>"
;
                
$tablas $tablas 1;}}
                
                
                
}}}}else{echo 
"Solo se permite Introducir numeros y letras en el Buscador";
exit;}
echo 
"</table><br><center>El nº de ejemplares encontrados es: $upa</center>";
exit;}
//---------------------------------------------------------------------------------------------------------------BUSCADOR-------------------------------------------------------------------------------------

//---------------------------------------------------------------------------------------------------------LISTADO COMPLETO-----------------------------------------------------------------------------
if($senal2 != ''){
$contador 0;
if (
$libros != ''){
echo 
"<table border align=center style=color:green><th>Titulo</th><th>Autor</th><th>Editorial</th>";

foreach (
$libros as $i => $libritostos){
$contador++;
$partes explode(',',$libritostos);
                echo 
"<tr>
                <td>$partes[0]</td><td>$partes[1]</td><td>$partes[2]</td>"
;}


echo 
"</table><br><center>El nº de ejemplares encontrados es: $contador</center>";
exit;
}else{echo 
"<div style='color:red;font-weight:bold' align=center>No hay ejemplares de libros en el archivo incluido</div>";}}
//---------------------------------------------------------------------------------------------------------LISTADO COMPLETO-----------------------------------------------------------------------------

//---------------------------------------------------------------------------------------------------------LISTADO ORDENADO-----------------------------------------------------------------------------
if($senal3 != ''){
$contador 0;
if (
$libros != ''){
echo 
"<table border align=center style=color:green><th>Titulo</th><th>Autor</th><th>Editorial</th>";

foreach (
$libros as $i => $libritostos){
$contador++;
$partes explode(',',$libritostos);
sort($partes[0]);
                echo 
"<tr>
                <td>$partes[0]</td><td>$partes[1]</td><td>$partes[2]</td>"
;}


echo 
"</table><br><center>El nº de ejemplares encontrados es: $contador</center>";
exit;
}else{echo 
"<div style='color:red;font-weight:bold' align=center>No hay ejemplares de libros en el archivo incluido</div>";}

}
//---------------------------------------------------------------------------------------------------------LISTADO ORDENADO-----------------------------------------------------------------------------

















//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
?>


biblioteca.php:

Código PHP:
<?php
class biblioteca{
                public 
$la_biblioteca = array();
                
                
                function 
__construct(){
                
$this->la_biblioteca=array();}
                
                
                function 
rellenar(){
                
$this->la_biblioteca=array( 
                        
'libros1' => 'el medico,Noah Gordon,Time Warner'
                        
'libros2' => 'marina,Carlos Ruiz Zafon,Edebé',
                        
'libros3'=>  'la hoguera de las vanidades,Tom Wolfe,RBA Editores',
                        
'libros4'=>  'el libro de las ilusiones,Paul Auster,Faber',
                        
'libros5'=>  'la muerte en venecia,Michael Mann,Anaya',
                        
'libros6'=>  'a sangre fria,Truman Capote,Ilusions',
                        
'libros7'=>  '2010: odisea en el espacio,Artur C.Clarke,P&J');}

                function 
__destruct(){
                unset(
$this->la_biblioteca);
                }
                
                function 
__añadir($titulo,$autor,$editorial){
                
$siguiente count($la_biblioteca) + 1;
                
array_push($this->$la_biblioteca,"'".$titulo.",".$autor.",".$ejemplar."'");
                }
}
?>
______________________________


La cosa es que no me funciona ninguna de las acciones que quiero, es decir, buscar, ver todos, y ver todos ordenados

al intentar por ejemplo ver todos (senal2) me arroja este resultado:

Titulo Autor Editorial
Array

El nº de ejemplares encontrados es: 1
  #4 (permalink)  
Antiguo 25/02/2010, 09:40
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Duda con clases en PHP

A ver...

¿Sabes acceder a atributos y/o métodos de una clase? Te aconsejo que averigües.

Con respecto a tu código, $libritos no tiene los valores que le das, porque nunca llamas al método rellenar, y tampoco es una buena manera de llamar al atributo $la_biblioteca;

Consejo :

Código PHP:
Ver original
  1. class biblioteca {
  2.     private $la_biblioteca = array();
  3.  
  4.     function __construct() {
  5.         $this->la_biblioteca=array();
  6.         $this->rellenar();
  7.     }
  8.  
  9.     public function getLaBiblioteca() {
  10.         return $this->la_biblioteca;
  11.     }
  12.    
  13.     public function setLaBiblioteca($array) {
  14.         $this->la_biblioteca = $array;
  15.     }
  16.  
  17.     function rellenar() {
  18.         $this->la_biblioteca=array(
  19.                 'libros1' => 'el medico,Noah Gordon,Time Warner',
  20.                 'libros2' => 'marina,Carlos Ruiz Zafon,Edebé',
  21.                 'libros3'=>  'la hoguera de las vanidades,Tom Wolfe,RBA Editores',
  22.                 'libros4'=>  'el libro de las ilusiones,Paul Auster,Faber',
  23.                 'libros5'=>  'la muerte en venecia,Michael Mann,Anaya',
  24.                 'libros6'=>  'a sangre fria,Truman Capote,Ilusions',
  25.                 'libros7'=>  '2010: odisea en el espacio,Artur C.Clarke,P&J');
  26.     }
  27.  
  28.     function __destruct() {
  29.         unset($this->la_biblioteca);
  30.     }
  31.  
  32.     function __añadir($titulo,$autor,$editorial) {
  33.         $siguiente = count($la_biblioteca) + 1;
  34.         array_push($this->$la_biblioteca,"'".$titulo.",".$autor.",".$ejemplar."'");
  35.     }
  36. }
  37. $libros = new biblioteca;
  38. $libs = $libros->getLaBiblioteca();
  39. foreach ($libs as $i => $libritos){
  40.     print_r($libritos);
  41. }
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 25/02/2010, 10:31
50l3r
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda con clases en PHP

muchisimas gracias :), tema solucionado

Etiquetas: clases
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 21:35.