Foros del Web » Programando para Internet » PHP »

PHP OO La variable del php no la puedo seguir usando

Estas en el tema de La variable del php no la puedo seguir usando en el foro de PHP en Foros del Web. Hola, he creado un código que lo que hace es sacar unos datos x de una tabla los cuales contienen unos datos utiles para redirigir ...
  #1 (permalink)  
Antiguo 09/12/2016, 11:47
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
La variable del php no la puedo seguir usando

Hola, he creado un código que lo que hace es sacar unos datos x de una tabla los cuales contienen unos datos utiles para redirigir a un vídeo de youtube. Es decir, un video de youtube siempre empieza: https://www.youtube.com/watch?v=(luego aqui es la parte variable para redirigir a uno u a otro). Por lo tanto yo quiero que el dato que saque de la bd se ponga detrás de ese = para que rediriga a mi vídeo. El código es muy simple pero el problema es que no consigo que funcione en el momento de poner el dato detrás del =. También, he probado y después de sacar los datos de la bd el dato se saca correctamente y no hay ningún tipo de error. Necesito ayuda y gracias^^

Código PHP:
<?php
$servername 
"x";
$username "x";
$password "x";
$dbname "x";

// Create connection
$conn = new mysqli($servername$username$password$dbname);
// Check connection
if ($conn->connect_error) {
    die(
"Connection failed: " $conn->connect_error);


$sql "SELECT * FROM micanal";
$result $conn->query($sql);

if (
$result->num_rows 0) {
    
// output data of each row
    
while($row $result->fetch_assoc()) {
        
$v1 $row["vid1"];
        
$v2 $row["vid2"];
        
$v3 $row["vid3"];
        
$v4 $row["vid4"];
        
$v5 $row["vid5"];
        
$v6 $row["vid6"];
        
$v7 $row["vid7"];
        
$v8 $row["vid8"];
        
$v9 $row["vid9"];
    }
} else {
    echo 
"0 results";
}
$conn->close();
?>
Código HTML:
<html><head><title>MyBadS</title>
<link rel="stylesheet" href="media/estilo.css" type="text/css" media="all">
<style> 
body{ 
background: url(./media/background.jpg);
background-size: auto 75px;
background-size: 100%;
background-size: contain;
background-size: cover;
} 
</style>  
</head>

<body>

<div id="caja1">
<a href="https://www.youtube.com/watch?v=<?php echo $row['vid1']; ?>" target="_blank"><img id="img1" src="./media/montaje.jpg"/></a>
<a href="https://www.youtube.com/watch?v=ZC06I0l9Ux8" target="_blank"><img id="img2" src="./media/montaje.jpg"/></a>
<a href="https://www.youtube.com/watch?v=ZC06I0l9Ux8" target="_blank"><center><img id="img3" src="./media/montaje.jpg"/></center></a>
<p> 
  #2 (permalink)  
Antiguo 09/12/2016, 12:24
 
Fecha de Ingreso: octubre-2009
Mensajes: 305
Antigüedad: 14 años, 6 meses
Puntos: 29
Respuesta: La variable del php no la puedo seguir usando

en el primer código recorres todos los registros y sobrescribes las variables de $v1 al $v9, luego en el HTML solo tienes un bloque (lo llamas caja) con un enlace que hace referencia a $row['vid1'], cuando he de suponer que quieres mostrar todos los enlaces.

1 - reorganiza la tabla, eso de tener campos vid1. vid2, vidN es mala practica.

2 - embebe el html dentro del PHP, la idea es que construyas la lista de enlaces dentro del ciclo, no recorrer antes para mostrar nada luego.
  #3 (permalink)  
Antiguo 09/12/2016, 12:30
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: La variable del php no la puedo seguir usando

Hola OfSerker,

Yo probaría así:

Código PHP:
Ver original
  1. <a href="https://www.youtube.com/watch?v=<?php echo $vid1; ?>" target="_blank"><img id="img1" src="./media/montaje.jpg"/></a>

Puesto que $row['lo_que_sea'] solo tiene valor dentro del bucle.
  #4 (permalink)  
Antiguo 09/12/2016, 13:56
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Respuesta: La variable del php no la puedo seguir usando

Hola rbczgz y gracias por responder.

Lo he probado y no funciona, como si esa variable no tuviese ningún valor. Lo único que me sale es esto en el buscador: https://www.youtube.com/watch?v= (que es justo la parte que hay ya puesta).

Cita:
Yo probaría así:

Código PHP:
Ver original
<a href="https://www.youtube.com/watch?v=<?php echo $vid1; ?>" target="_blank"><img id="img1" src="./media/montaje.jpg"/></a>
Hola sustentio y gracias.

Soy nuevo en esto y no tengo mucha idea de esto pero en teoria debería funcionar. Es muy raro que al principio me coja los datos y cuando viene el href no existan. Estoy frustrado, no se que hacer y tampoco no he entendido muy bien lo que has dicho de que sobrescribo y que tengo un bloque que es capa. Capa es para que las imágenes se centren en una posición (hay más archivo pero el útil es este).

Gracias a los 2 por responder, un saludo!
  #5 (permalink)  
Antiguo 09/12/2016, 14:17
 
Fecha de Ingreso: octubre-2009
Mensajes: 305
Antigüedad: 14 años, 6 meses
Puntos: 29
Respuesta: La variable del php no la puedo seguir usando

ya le indique el problema del porqué no existen, estas haciendo un ciclo primero y solapando las variables después, tu frase "Soy nuevo en esto y no tengo mucha idea de esto pero en teoria debería funcionar", no tiene sentido ya que es evidente que no dominas la teoría, así que mucho menos en la practica te ha de funcionar.

Estudie primero sobre programación y controles de flujo, sin dicho conocimiento no va a avanzar, además un repaso a la función fetch_assoc() de la clase Mysqli en la documentación sería ideal para que termine de entender el comportamiento de dicha función.
  #6 (permalink)  
Antiguo 09/12/2016, 15:26
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Respuesta: La variable del php no la puedo seguir usando

Al final, lo he conseguido hacer pero de una manera muy brusca. ¿Alguien me podría ayudar a reducir código? Es todo el rato lo mismo. Por cierto probé con include y require y nada... Aqui tenéis la basura de código... esto multiplicado x9 fotos que tenía y x2 porque necesito esa id 2 veces en cada foto...

Un saludo y si alguien me ayuda a reducirlo se lo agradecería. (En el código sólo aparece 1/18 veces).

Código PHP:
<html><head><title>MyBadS</title>
<link rel="stylesheet" href="media/estilo.css" type="text/css" media="all">
<style> 
body{ 
background: url(./media/background.jpg);
background-size: auto 75px;
background-size: 100%;
background-size: contain;
background-size: cover;

</style>  
</head>

<body>
<script src="https://apis.google.com/js/platform.js"></script>
<div id="g-ytsubscribe" class="g-ytsubscribe" data-channelid="UCbrqbGj4SoY2DI39qKioCmw" data-layout="default" data-count="default"></div>
<div id="caja1">
<a href="https://www.youtube.com/watch?v=<?php /*###################PRIMERO#################### */
$servername "X";
$username "X";
$password "X";
$dbname "X";

// Create connection
$conn = new mysqli($servername$username$password$dbname);
// Check connection
if ($conn->connect_error) {
    die(
"Connection failed: " $conn->connect_error);


$sql "SELECT * FROM micanal";
$result $conn->query($sql);

if (
$result->num_rows 0) {
    
// output data of each row
    
while($row $result->fetch_assoc()) {
$v1=$row["vid1"];
$v2=$row["vid2"];
$v3=$row["vid3"];
$v4=$row["vid4"];
$v5=$row["vid5"];
$v6=$row["vid6"];
$v7=$row["vid7"];
$v8=$row["vid8"];
$v9=$row["vid9"];
    }
} else {
    echo 
"0 results";
}
$conn->close();
echo 
$v1?>" target="_blank">
  #7 (permalink)  
Antiguo 09/12/2016, 15:47
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: La variable del php no la puedo seguir usando

Sin ánimos de ofender de hecho todo lo contrario, estás aprendiendo a correr antes de caminar. Como dice arriba creo que debes estudiar un poco antes de meter dedos en la masa.

Digo esto porque explicas lo que quieres muy bien pero al ver en práctica de tu código queda plasmado que no lo estás haciendo y en parte se ven incongruencias

Saludos
  #8 (permalink)  
Antiguo 11/12/2016, 14:51
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: La variable del php no la puedo seguir usando

Yo lo primero que cambiaría es la base de datos, una tabla con x campos iguales no tienen sentido, no no es útil tener 2 o más campos en la misma tabla para almacenar el mismo dato.

Para tu propósito, bastaría con una tabla simple con 2 campos incluso con 1 podía valer.
mi_canal
id(clave primaria)
video


Teniendo esto claro vamos nos a tu código.

Código PHP:
<?php
// Datos de conexion 
$servername "X"
$username "X"
$password "X"
$dbname "X"

// Establecemos la conexión a la base de datos
$conn = new mysqli($servername$username$password$dbname); 
// Check connection 
if ($conn->connect_error) { 
    die(
"Connection failed: " $conn->connect_error); 
}  

$sql "SELECT * FROM micanal"
$result $conn->query($sql); 

if (
$result->num_rows 0) { // Comprobamos si hay datos
    // Recorremos los datos 
    
while($row $result->fetch_assoc()) {
    
// Mostramos el enlace
    
echo '<a href="https://www.youtube.com/watch?v='.$row['video'].'" target="_blank">';
   
// o los almacenas en una variable para imprimir después 
    
$link _ video.= '<a href="https://www.youtube.com/watch?v='.$row['video'].'" target="_blank">';

    } 
} else { 
    echo 
"0 results"

$conn->close(); 


?>
__________________
Unset($vida['malRollo']);

Etiquetas: html, mysql, seguir, select, sql, tabla, usando, variable
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 03:00.