elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Ejecuto una web php, no da error, pero se queda en blanco. No muestra nada.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejecuto una web php, no da error, pero se queda en blanco. No muestra nada.  (Leído 2,927 veces)
LucasHood

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Ejecuto una web php, no da error, pero se queda en blanco. No muestra nada.
« en: 24 Agosto 2016, 19:10 pm »

Muy buenas, sé que va a ser mucho código e igual sabéis responderme sin necesidad de verlo todo. Tengo tres archivos php (videoclub.php, clienteVideoclup.php, testCliente.php). La idea es que videoclub tenga una clase 'Soporte' y de ella heredan 'DVD' y 'Videojuego' que son cosas que se pueden alquilar. Con todos sus parámetros.
Luego clienteVideoclub tiene la clase 'Cliente' para crear usuarios que alquilan (un máximo de tres soportes). Y luego la clase test en la que quiero hacer pruebas y que se impriman diferentes formas del programa según los datos. Pero se queda en blanco:

MUCHAS GRACIAS DE ANTEMANO! :)

testClient.php:
Código
  1. <?php
  2.  
  3. include ("videoclub.php");
  4. include ("clienteVideoclub.php");
  5.  
  6. $client1 = new Cliente ("Carlos López", "CL001", false);
  7. $peli1 = new DVD ("Los Otros", 1, 2.99, 120, "Español");
  8. $peli2 = new DVD ("Los Vengadores", 2, 2.99, 140, "Español, inglés y francés");
  9. $peli3 = new DVD ("El Hundimiento", 3, 2.99, 167, "Español, inglés y alemán");
  10. $vidJu1 = new Videojuego ("FIFA 17", 4, 5.99, "Play Station 4", "Deporte", 1, 4);
  11. $vidJu2 = new Videojuego ("Tomb Raider VII", 5, 6.99, "PC", "Aventuras", 1, 1);
  12.  
  13. $peli1->imprime_caracteristicas();
  14. $peli3->imprime_caracteristicas();
  15.  
  16. echo '<br>Mostramos info de cliente nada más crearlo: <br>';
  17. $client1->show_info();
  18. echo '<br> * - - - - - - - - - - - - * <br>';
  19. $client1->alquila_soporte($peli1); echo '<br>';
  20. $client1->alquila_soporte($peli2); echo '<br>';
  21. $client1->show_info(); echo '<br>';
  22. echo '<br> * - - - - - - - - - - - - * <br>';
  23.  
  24.  
  25. ?>
  26.  

videoclub.php
Código
  1. <meta charset="utf-8">
  2. <?php
  3.  
  4. class Soporte {
  5.  
  6.   public $titulo;
  7.   protected $numero;
  8.   private $precio;
  9.  
  10.   function __construct($tit,$num,$precio){
  11.       $this->titulo = $tit;
  12.       $this->numero = $num;
  13.       $this->precio = $precio;
  14. }
  15.  
  16.   public function dame_precio_sin_iva(){
  17.       return $this->precio;
  18. }
  19.  
  20.   public function dame_precio_con_iva(){
  21.       return $this->precio * 1.16;
  22. }
  23.  
  24.   public function dame_numero_identificacion(){
  25.     return $this->numero;
  26. }
  27.  
  28. public function imprime_caracteristicas(){
  29.       echo $this->titulo;
  30.       echo "<br>" . $this->precio . " (IVA no incluido)";
  31. }
  32.  
  33. public function dame_titulo(){
  34. return $this->titulo;
  35. }
  36. }
  37.  
  38.  
  39. class DVD extends Soporte {
  40. private $duracion;
  41. private $idiomas_disponibles;
  42.  
  43. function __construct ($tit, $num, $precio, $duracion, $idiomas){
  44. parent::__construct($tit, $num, $precio);
  45. $this->duracion = $duracion;
  46. $this->idiomas_disponibles = $idiomas;
  47. }
  48.  
  49. public function dame_duracion(){
  50. return $this->duracion;
  51. }
  52.  
  53. public function dame_idiomas(){
  54. return $this->idiomas_disponibles;
  55. }
  56.  
  57. public function imprime_caracteristicas(){
  58. echo 'Pelicula DVD<br>';
  59. parent::imprime_caracteristicas();
  60. echo '<br>Duración: ' . $this->dame_duracion() . ' min.';
  61. echo '<br>Idimas: ' . $this->dame_idiomas();
  62. }
  63. }
  64.  
  65. class Videojuego extends Soporte{
  66. private $consola;
  67. private $tipo;
  68. private $numMinJug;
  69. private $numMaxJug;
  70.  
  71. function __construct ($tit, $num, $precio, $consola, $estilo, $min_j, $max_j){
  72. parent::__construct($tit, $num, $precio);
  73. $this->consola = $consola;
  74. $this->tipo = $estilo;
  75. $this->numMinJug = $min_j;
  76. $this->numMaxJug = $max_j;
  77. }
  78.  
  79. public function dame_consola(){
  80. return $this->consola;
  81. }
  82.  
  83. public function dame_tipo(){
  84. return $this->tipo;
  85. }
  86.  
  87. public function dame_jugadores(){
  88. if($this->numMinJug == $this->numMaxJug){
  89. if($this->numMinJug == 1){
  90. echo 'Juego de un jugador';
  91. } else {
  92. echo 'Juego de ' . $this->numMinJug . ' jugadores.';
  93. }
  94. } else {
  95. echo 'De ' . $this->numMinJug . ' a ' . $this->numMaxJug . ' jugadres.';
  96. }
  97. }
  98. public function imprime_caracteristicas(){
  99. echo 'Juego de ' . $this->dame_consola() . '<br>';
  100. parent::imprime_caracteristicas();
  101. echo '<br> Num. Jugadores: ';
  102. $this->dame_jugadores();
  103. echo '<br>Tipo: ' . $this->dame_tipo();
  104. }
  105. }
  106. ?>
  107.  


clienteVideoclub.php:
Código
  1. <meta charset="utf-8">
  2.  
  3. <?php
  4.  
  5. include ("videoclub.php");
  6. class Cliente {
  7. private $user_name;
  8. private $user_id;
  9. private $max_rent_prd;
  10. private $isPremium;
  11. private $rented_products;
  12. private $num_of_rentPrd;
  13.  
  14. function __construct ($name, $id, $premium){
  15. $this->user_name = $name;
  16. $this->user_id = $id;
  17. $this->isPremium = $premium;
  18. if($this->isPremium == true){
  19. $this->max_rent_prd = 5;
  20. } else {
  21. $this->max_rent_prd = 3;
  22. }
  23. $this->rented_prd = array();
  24. $this->num_of_rentPrd = 0;
  25. for($i=0; $i<$this->max_rent_prd; $i++){
  26. $this->rented_prd[$i] = null;
  27. }
  28. }
  29.  
  30. public function get_privilege(){
  31. if ($this->isPremium == true ){
  32. return true;
  33. } else {
  34. return false;
  35. }
  36. }
  37.  
  38. public function get_userName(){
  39. return $user_name;
  40. }
  41.  
  42. public function get_userID(){
  43. return $user_id;
  44. }
  45.  
  46. /**Este método recibe un soporte y devuelve true si está entre los alquileres del
  47. cliente. Devuelve false en caso contrario. */
  48. public function ha_alquilado ($soporte){
  49. foreach ($this->rented_products as $product){
  50. if(!is_null($product)){
  51. if($product->dame_numero_identificacion() ==
  52. $soporte->dame_numero_identificacion()){
  53. return true;
  54. }
  55. }
  56. }
  57. }
  58.  
  59. /**Este método comprueba si el cliente tiene alquilados todos los soportes
  60. que puede alquilar de una vez */
  61. public function is_full(){
  62. foreach ($this->rented_products as $product){
  63. if(is_null($product)){
  64. return false;
  65. }
  66. }
  67. return true;
  68. }
  69.  
  70. /** Este método sirve para alquilar una peli&#769;cula o juego por parte del cliente.
  71. Recibe el soporte a alquilar y, en caso que el alquiler se pueda producir, debe
  72. introducir el objeto soporte recibido en el array de soportes alquilados del
  73. cliente. */
  74. public function alquila_soporte($soporte){
  75. if ($this->ha_alquilado($soporte)){
  76. echo 'El cliente ya ha alguilado el soporte';
  77. } else if ($this->is_full()) {
  78. echo 'No puede alquilar más. Devuelva algún soporte';
  79. } else {
  80. foreach($this->rented_products as $product){
  81. if ($product == null){
  82. echo 'Ha alquilado ' . $product->dame_titulo();
  83. $product = $soporte;
  84. $num_of_rentPrd ++;
  85. break;
  86. }
  87. }
  88. }
  89. }
  90.  
  91. /** Método que devuelve el soporte a caja. El soporte desaparece del array
  92. $rented_products del cliente*/
  93. public function devuelve_soporte($soporte){
  94. foreach ($this->rented_products as $product){
  95. if($soporte->dame_numero_indentificacion() ==
  96. $product->dame_numero_identificacion()){
  97. echo 'Devuelto: ' . $product->dame_titulo();
  98. $product = null;
  99. $num_of_rentPrd --;
  100. }
  101. }
  102. }
  103.  
  104. /** Método que muestra toda la información disponible del cliente*/
  105. public function show_info(){
  106. echo '<br> Nombre: ' . $this->get_userName();
  107. echo '<br> ID_client: ' . $this->get_userID();
  108. if ($this->get_privilege()) {
  109. echo "Es premium.<br>";
  110. } else {
  111. echo "No es premium.<br>";
  112. }
  113. //echo "Ha alquilado " . $num_of_rentPrd . " productos.";
  114. foreach ($this->rented_products as $product){
  115. if ($product = null){
  116. echo '<br>- ...';
  117. } else {
  118. echo'<br>- ' . $product->dame_titulo();
  119. }
  120. }
  121. }
  122.  
  123. }
  124.  
  125. ?>
  126.  


« Última modificación: 24 Agosto 2016, 19:56 pm por LucasHood » En línea

dopr

Desconectado Desconectado

Mensajes: 42



Ver Perfil
Re: Ejecuto una web php, no da error, pero se queda en blanco. No muestra nada.
« Respuesta #1 en: 25 Agosto 2016, 19:05 pm »

Si te soy sincero no he leido ni la mitad del código pero lo poco que he leído parece estar bien.
Prueba a hacer un try catch, a intentar imprimir algo antes de crear todos los objetos para ver si va.
Y antes de todo escribe en la primera línea:
Código:
error_reporting(E_ALL);

Saludos.


En línea

High Hopes.
[u]nsigned


Desconectado Desconectado

Mensajes: 2.397

JS/Node developer


Ver Perfil WWW
Re: Ejecuto una web php, no da error, pero se queda en blanco. No muestra nada.
« Respuesta #2 en: 26 Agosto 2016, 21:29 pm »

Me di cuenta a ojo, en la linea 115 del ultimo codigo tenes:
Código
  1. if ($product = null){

Estas haciendo una asignación en lugar de una comparación, deberia ser:
Código
  1. if ($product == null){

Si no te tira errores ni warnings, revisa tu codigo linea por linea buscando este tipo de cosas, que no dan error pero alterar totalmente el funcionamiento de la aplicación.

PD:($product = null) devolverá true siempre! ;)
« Última modificación: 26 Agosto 2016, 21:31 pm por [u]nsigned » En línea

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!
LucasHood

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Ejecuto una web php, no da error, pero se queda en blanco. No muestra nada.
« Respuesta #3 en: 27 Agosto 2016, 11:50 am »

Me di cuenta a ojo, en la linea 115 del ultimo codigo tenes:
Código
  1. if ($product = null){

Estas haciendo una asignación en lugar de una comparación, deberia ser:
Código
  1. if ($product == null){

Si no te tira errores ni warnings, revisa tu codigo linea por linea buscando este tipo de cosas, que no dan error pero alterar totalmente el funcionamiento de la aplicación.

PD:($product = null) devolverá true siempre! ;)

Gracias. Y sí. Era todo fallo mío. Eso y alguna cosa más. Me aventuré a subir el código demasiado rápido y realmente pude revisar varias cosas y encontrar más errores.
Muchas gracias por tu tiempo y revisión.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines