Foros del Web » Programando para Internet » PHP »

Duda con mensajes en POO

Estas en el tema de Duda con mensajes en POO en el foro de PHP en Foros del Web. Hola, buenas tardes, Recién empecé a trabajar con POO, la verdad estaba muy renuente, pero creo que le he ido "tomando cariño" por así decirlo. ...
  #1 (permalink)  
Antiguo 03/06/2022, 11:34
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Duda con mensajes en POO

Hola, buenas tardes,

Recién empecé a trabajar con POO, la verdad estaba muy renuente, pero creo que le he ido "tomando cariño" por así decirlo. Sin embargo, hay algo, que puede ser muy, pero muy básico, que aún no puedo solucionar (se aceptan regaños por esto)

No puedo imprimir mensajes de algún evento completado. Es decir, si guardo información en mi bd, actualizó o borro, el mensaje no se muestra en pantalla.

Por ejemplo, tengo el siguiente código:

Código PHP:
 class Posting{
        
        public 
$id;
        public 
$name;
        public 
$event;
        public 
$date1;
        public 
$end1;
        public 
$unit;
        public 
$location;
        public 
$comments;
        public 
$show1;
        public 
$show2;
        public 
$show3;
        public 
$created;
        
        public function 
Posting(){
            
            
$newConn = new conecctionMySQL();
            
$newConn -> createConection();
            
            
$sqlInsertPost "Insert into message_boards(msg_id_user, msg_title, msg_show_title, msg_date, msg_show_date, msg_end, msg_unit, msg_location, msg_show_location, msg_summary, msg_date_post) values('" $this -> id "', '" $this -> event "', '" $this -> show1 "', '" $this -> date1 "', '" $this -> show2 "', '" $this -> end1 "', '" $this -> unit "', '" $this -> location "', '" $this -> show3 "', '" $this -> comments "', '" $this -> created "')";
            
$query $newConn -> executeQuery($sqlInsertPost);
            
            
$sqlSelectLastId "Select * from message_boards Where msg_id_user =" $this -> id " Order by id_msg DESC Limit 1";
            
$query $newConn -> executeQuery($sqlSelectLastId);
            
$rowSelectLastId $newConn -> getRows($query);
            
            
header('Location:comunications-between-owners.php?post=' $rowSelectLastId['0']);
            
            if(
$query){

                
$msg 'El registro se actualizó correctamente.';

            } else {

                
$msg 'Ocurrió un error en la actualización.';
            }        
        }

y si llamo $msg en mi página, simplemente no lo hace, y en el log de errores me dice que la variable $msg no es válida:

Código PHP:
PHP Warning:  Undefined variable $msg 
a lo que supongo que está mal invocada... mi pregunta entonces es, ¿Cómo las invoco o imprimo en mi página una vez realizado el proceso? Aclaro, el código funciona bien, solo es eso, que no puedo imprimir las variables

Saludos y agradezco por sus comentarios.
  #2 (permalink)  
Antiguo 03/06/2022, 21:26
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Duda con mensajes en POO

Tienes que definir la variable, tal cual dice... puedes poner antes del if:
$msg = "";

asi de simple, defines la variable antes de adjudicarle valores en el if
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #3 (permalink)  
Antiguo 05/06/2022, 11:17
Avatar de teslas  
Fecha de Ingreso: febrero-2013
Ubicación: Barcelona
Mensajes: 106
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Duda con mensajes en POO

Añade:

public $msg;

Ya nos diras ....
  #4 (permalink)  
Antiguo 07/06/2022, 13:08
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Respuesta: Duda con mensajes en POO

Hola petit89, teslas, gracias por responder!

Si hago esto:

Código PHP:
public $msg 'El archivo se subió satisfactoriamente.'
y lo mando a imprimir directo desde la clase:

Código PHP:
if($query){ 
                
      echo 
$this -> msg;


lo imprime en la página, en la parte superior (qué es desde donde llamo la clase o método), pero por ejemplo, si quiero imprimirlo en alguna sección determinada de la página, por ejemplo la forma de abajo en el div debajo del botón submit, no se imprime:

Código PHP:
<div class="form-general col-12">
    <form action="" method="post" enctype="multipart/form-data">
        <div class="mb-3">
            <input type="text" name="subject" class="form-control" id="subject" placeholder="Subject" readonly>
        </div>
        <div class="mb-3">
            <input type="text" name="name" class="form-control" id="name" placeholder="Name" value="<?php echo $rowSelectAccount['2'] . ' ' $rowSelectAccount['3']; ?>" readonly >
        </div>
        <div class="mb-3">
            <input type="email" name="email" class="form-control" id="email" placeholder="Email" value="<?php echo $rowSelectAccount['15']; ?>" readonly>
        </div>
        <div class="mb-3">
            <select class="form-select" name="unit" readonly >
                <option value="<?php if(empty($rowSelectAccount['5'])){ echo '0'; } else { echo $rowSelectAccount['5']; } ?>"><?php if(empty($rowSelectAccount['5'])){ echo 'Unit...'; } else { echo $rowSelectAccount['5']; } ?></option>
                <option value="101">101</option>
                <option value="102">102</option>
                <option value="104">104</option>
                <option value="105">105</option>
                <option value="106">106</option>
                <option value="107">107</option>
                <option value="108">108</option>
                <option value="201">201</option>
                <option value="202">202</option>
                <option value="204">204</option>
                <option value="205">205</option>
                <option value="206">206</option>
                <option value="207">207</option>
                <option value="208">208</option>
                <option value="301">301</option>
                <option value="302">302</option>
                <option value="303">303</option>
                <option value="304">304</option>
                <option value="305">305</option>
                <option value="306">306</option>
                <option value="307">307</option>
                <option value="308">308</option>
                <option value="401">401</option>
                <option value="402">402</option>
                <option value="403">403</option>
                <option value="404">404</option>
                <option value="405">405</option>
                <option value="501">501</option>
                <option value="502">502</option>
                <option value="503">503</option>
                <option value="504">504</option>
                <option value="505">505</option>
                <option value="601">601</option>
                <option value="602">602</option>
                <option value="603">603</option>
                <option value="701">701</option>
                <option value="702">702</option>
                <option value="PH1-801">PH1-801</option>
                <option value="PH2-802">PH2-802</option>
                <option value="PH3-703">PH3-703</option>
                <option value="PH4-704">PH4-704</option>
                <option value="PH5-604">PH5-604</option>
                <option value="PH6-406">PH6-406</option>
                <option value="PH7-407">PH7-407</option>
                <option value="PH8-408">PH8-408</option>
            </select>
        </div>
        <div class="mb-3">
            <input type="text" name="phone" class="form-control" id="phone" placeholder="Phone" value="<?php echo $rowSelectAccount['6']; ?>" readonly>
        </div>
        <div class="mb-3">
            <textarea class="form-control" id="exampleFormControlTextarea1" rows="3" placeholder="How can we help you?" name="comments"></textarea>
        </div>
        <div class="mb-3">
            <input class="form-control" name="form-file" type="file" id="formFile">
        </div>
        <div class="mb-3 text-center">
            <input type="submit" name="send" id="send" class="btn send-button" value="Send Message">
        </div>
        <div class="msg"><?php echo $ok?></div>
    </form>
</div>
Ya intenté con:

Código PHP:
<div class="msg"><?php echo $this -> msg?></div>
también en la clase use lo siguiente:

Código PHP:
if($query){ 
                
                
$ok $this -> msg;
            } 
y lo mando a llamar como está en la forma de arriba, pero no se imprime.
  #5 (permalink)  
Antiguo 15/06/2022, 15:58
Avatar de JoeMx  
Fecha de Ingreso: febrero-2003
Ubicación: A Km de Aquí.
Mensajes: 1.154
Antigüedad: 21 años, 2 meses
Puntos: 4
Respuesta: Duda con mensajes en POO

Hola Midrel, si haces un var_dump($ok); que dato te imprime (En caso de que te imprima algo)?
Saludos.
__________________
"Si lo piensas, es porque si lo puedes hacer"
  #6 (permalink)  
Antiguo 03/07/2022, 14:33
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Respuesta: Duda con mensajes en POO

Hola Joe,

Si, ya lo intenté, la variable si trae información. Es solo cuando la quiero imprimir en algún lugar que no lo hace. Solo en la parte superior de la página con un echo directo.

Y en la parte superior ya que mando a llamar siempre hasta arriba mis archivos de PHP por ejemplo (así hago siempre mis estructuras):

Código PHP:
<?php require('clases/mi_clase.php'?>
<?php 
require('bd/metodos/mi_metodo.php'?>
<?php 
require('bd/consultas/mi_consulta.php'?>
-- las variables de mi_clase se imprimen aquí siempre y cuando este impresa con echo --
<html>
<head>
   <body>
         -- si quiero imprimir alguna variable de mi clase aquí, no la imprime ---
   </body>
</head>
</html>

Etiquetas: mensajes, poo
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 15:44.