Colocar imagen PHP fuera de table

  • Poly
  • Guru
  • Guru
  • Avatar de Usuario
  • Registrado: Jul 31, 2004
  • Mensajes: 1054
  • Loc: Same place you left me.
  • Status: Offline

Nota Diciembre 3rd, 2011, 12:12 pm

Así que tengo un script PHP que está haciéndose eco de una tabla. Datos se carga desde una base de datos MySQL y colocados dentro de la tabla. Una vez cargados los datos de la secuencia de comandos comprueba qué categoría es para los datos y carga una imagen en función del número de la categoría. Sin embargo, cuando se carga la página, se muestra la imagen fuera de la tabla. Estoy suponiendo que esto tiene que ver con la función que se llama en medio de un eco. ¿Es correcto y cómo puedo solucionarlo?

Código: [ Select ]
<?php echo "<table id='tutBar' border='0' cellspacing='0' cellpadding='0'>
 <tr>
  <td rowspan='3' width='51' height='51'>" . tutImg() . "</td>
  <td><strong></td>
    <td><strong>Posted By: </strong>{$row['usr']}</td>
 </tr>
 <tr>
    <td><strong>{$row['name']}</strong></td>
    <td><strong>Posted On: </strong>{$row['date']}</td>
 </tr>
 <tr>
  <td>{$row['sdesc']}</td>
    <td><strong>ID:</strong> {$row['id']} | <strong>Sub-Category:</strong>{$row['subcat']}</td>
 </tr>
</table>
<br />{$row['ldesc']}";?>
  1. <?php echo "<table id='tutBar' border='0' cellspacing='0' cellpadding='0'>
  2.  <tr>
  3.   <td rowspan='3' width='51' height='51'>" . tutImg() . "</td>
  4.   <td><strong></td>
  5.     <td><strong>Posted By: </strong>{$row['usr']}</td>
  6.  </tr>
  7.  <tr>
  8.     <td><strong>{$row['name']}</strong></td>
  9.     <td><strong>Posted On: </strong>{$row['date']}</td>
  10.  </tr>
  11.  <tr>
  12.   <td>{$row['sdesc']}</td>
  13.     <td><strong>ID:</strong> {$row['id']} | <strong>Sub-Category:</strong>{$row['subcat']}</td>
  14.  </tr>
  15. </table>
  16. <br />{$row['ldesc']}";?>
Every job is a self-portrait of the person who did it: Autograph your work with excellence.
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Diciembre 3rd, 2011, 12:12 pm

  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Online

Nota Diciembre 4th, 2011, 3:43 pm

Estoy pensando en que puede tienen que ver con etiquetas abiertas que no se cerraron, o no deba estar allí. Por ejemplo, en la línea #4, tiene un fuerte elemento abierto allí con ninguna etiqueta de cierre. Yo recomendaría quitar. Mirando la siguiente fila que tiene dos células, casi estoy pensando que es un bloque entero td adicional que puede que desee quitar.

Quisiera saber si soluciona nada.
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • Poly
  • Guru
  • Guru
  • Avatar de Usuario
  • Registrado: Jul 31, 2004
  • Mensajes: 1054
  • Loc: Same place you left me.
  • Status: Offline

Nota Diciembre 4th, 2011, 11:33 pm

Traté de limpiar el código, pero sin suerte. Hice algunos cavar más y creo que su relación con la función que está cargando el archivo de imagen. Al cambiar un poco mi código y almacenar el vínculo de la imagen en la base de datos, se carga muy bien:
Código: [ Select ]
<?php echo "<table id='tutBar' border='0' cellspacing='0' cellpadding='0'>
 <tr>
  <td rowspan='3' id='tutTop'><img src=\"".$row['img']."\"></td>
  <td></td>
    <td><strong>Posted By: </strong>{$row['usr']}</td>
 </tr>
 <tr>
    <td><strong>{$row['name']}</strong></td>
    <td><strong>Posted On: </strong>{$row['date']}</td>
 </tr>
 <tr>
  <td>{$row['sdesc']}</td>
    <td><strong>ID:</strong> {$row['id']} | <strong>Sub-Category:</strong>{$row['subcat']}</td>
 </tr>
</table>
<br />{$row['ldesc']}";?>
  1. <?php echo "<table id='tutBar' border='0' cellspacing='0' cellpadding='0'>
  2.  <tr>
  3.   <td rowspan='3' id='tutTop'><img src=\"".$row['img']."\"></td>
  4.   <td></td>
  5.     <td><strong>Posted By: </strong>{$row['usr']}</td>
  6.  </tr>
  7.  <tr>
  8.     <td><strong>{$row['name']}</strong></td>
  9.     <td><strong>Posted On: </strong>{$row['date']}</td>
  10.  </tr>
  11.  <tr>
  12.   <td>{$row['sdesc']}</td>
  13.     <td><strong>ID:</strong> {$row['id']} | <strong>Sub-Category:</strong>{$row['subcat']}</td>
  14.  </tr>
  15. </table>
  16. <br />{$row['ldesc']}";?>



Cuando se utiliza la función para cargar las imágenes, carga antes del comienzo de la tabla. Im así obtener &lt;img&gt; &lt;table&gt;.

Mi base de datos almacena un ID para qué categoría se encuentra en el puesto, entonces la función carga una imagen en función del número de categoría y lo muestra. Podría modificar el código de insertar por lo que inserta el enlace de la imagen en la base, se selecciona la categoría, pero ahora prefiero hacerlo a través de una función.
Código: [ Select ]
function tutImg(){
        $query = "SELECT cat FROM tutorials WHERE id LIKE $id";
        $row = mysql_fetch_array(mysql_query($query));
        
        if($row == "0")
        {
            echo "<img src='img/php.png' />";
        }
        else {
            echo "<img src='img/nif.jpg' />";
        }
    }
  1. function tutImg(){
  2.         $query = "SELECT cat FROM tutorials WHERE id LIKE $id";
  3.         $row = mysql_fetch_array(mysql_query($query));
  4.         
  5.         if($row == "0")
  6.         {
  7.             echo "<img src='img/php.png' />";
  8.         }
  9.         else {
  10.             echo "<img src='img/nif.jpg' />";
  11.         }
  12.     }
Every job is a self-portrait of the person who did it: Autograph your work with excellence.
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Online

Nota Diciembre 5th, 2011, 8:44 am

Veo que hace un poco más claro cuando la función demostraron allí. En su función son eco de la salida, que es correcto, que obtiene muestra inmediatamente. En su lugar lo que debes hacer es retorno que lo cadena en lugar de salida. Así lo siguiente:

Código: [ Select ]
function tutImg(){
      $query = "SELECT cat FROM tutorials WHERE id LIKE $id";
      $row = mysql_fetch_array(mysql_query($query));
      
      if($row == "0")
      {
        return "<img src='img/php.png' />";
      }
      else {
        return "<img src='img/nif.jpg' />";
      }
    }
  1. function tutImg(){
  2.       $query = "SELECT cat FROM tutorials WHERE id LIKE $id";
  3.       $row = mysql_fetch_array(mysql_query($query));
  4.       
  5.       if($row == "0")
  6.       {
  7.         return "<img src='img/php.png' />";
  8.       }
  9.       else {
  10.         return "<img src='img/nif.jpg' />";
  11.       }
  12.     }


Luego en el código HTML (con PHP), haría el eco allí. Así que algo como esto:

PHP Código: [ Select ]
<td rowspan='3' width='51' height='51'>" . echo tutImg() . "</td>


Ver si eso ayuda:)
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Online

Nota Diciembre 5th, 2011, 8:51 am

Por cierto Poli, justo en una nota al margen no tiene eco en todo el contenido HTML que con PHP. La una cosa agradable sobre PHP es que puede separar HTML y el código PHP. Así que con lo anterior podría hacerlo en su lugar:

PHP Código: [ Select ]
<table id="tutBar" border="0" cellspacing="0" cellpadding="0">
   <tr>
      <td rowspan="3" width="51" height="51"><?php echo tutImg(); ?></td>
      <td><strong>Posted By: </strong><?php echo $row['usr']; ?></td>
   </tr>
   <tr>
      <td><strong><?php echo $row['name']; ?></strong></td>
      <td><strong>Posted On: </strong><?php echo $row['date']; ?></td>
   </tr>
   <tr>
      <td><?php echo $row['sdesc']; ?></td>
      <td><strong>ID:</strong> <?php echo $row['id']; ?> | <strong>Sub-Category:</strong><?php echo $row['subcat']; ?></td>
   </tr>
</table>
<br /><?php echo $row['ldesc']; ?>
  1. <table id="tutBar" border="0" cellspacing="0" cellpadding="0">
  2.    <tr>
  3.       <td rowspan="3" width="51" height="51"><?php echo tutImg(); ?></td>
  4.       <td><strong>Posted By: </strong><?php echo $row['usr']; ?></td>
  5.    </tr>
  6.    <tr>
  7.       <td><strong><?php echo $row['name']; ?></strong></td>
  8.       <td><strong>Posted On: </strong><?php echo $row['date']; ?></td>
  9.    </tr>
  10.    <tr>
  11.       <td><?php echo $row['sdesc']; ?></td>
  12.       <td><strong>ID:</strong> <?php echo $row['id']; ?> | <strong>Sub-Category:</strong><?php echo $row['subcat']; ?></td>
  13.    </tr>
  14. </table>
  15. <br /><?php echo $row['ldesc']; ?>


Lo anterior es cómo lo normalmente haría por lo que resulta más fácil de usar bien "(comillas dobles) o (solo cito) en el código ya no tiene que preocuparse por escapar de ellos y más fácil salida resultados de funciones. También creo que se ve más limpia y es menos propenso a errores. Por supuesto están invitados a utilizar cualquier estilo trabaja para usted, pero pensé sería tirar que por ahí en caso de que no sabías podría hacerlo en una forma diferente forma:)
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • Poly
  • Guru
  • Guru
  • Avatar de Usuario
  • Registrado: Jul 31, 2004
  • Mensajes: 1054
  • Loc: Same place you left me.
  • Status: Offline

Nota Diciembre 5th, 2011, 1:00 pm

Gracias BWM. Que tiene trabajando, su ahora cargar una imagen en el lugar correcto, no sólo la imagen correcta.

En la base de datos, una de las columnas es "gato", que es de la categoría. Se trata de un valor entero. La comprobación de la función qué valor int es la base de datos, en función de qué tutorial ID pulsar, a continuación, carga la imagen adecuada.

EX: ID: 1, gato: 1, imagen: php.jpg

Esto debe cargar el icono PHP. En su lugar se está cargando la imagen No se encontrado imagen (que es la condición más en la función).

Código: [ Select ]
function tutImg(){
        $query = "SELECT cat FROM tutorials WHERE id LIKE $id";
        $row = mysql_fetch_array(mysql_query($query));
        
        if($row == "1")
        {
            return "<img src='img/php.png' />";
        }
        else if($row == "2")
        {
            return "<img src='img/ps.jpg' />";
        }
        else if($row == "3")
        {
            return "<img src='img/asp.jpg' />";
        }
        else if($row == "4")
        {
            return "<img src='img/js.png' />";
        }
        else if($row == "5")
        {
            return "<img src='img/mysql.png' />";
        }
        else {
            return "<img src='img/nif.jpg' />";
        }
    }
  1. function tutImg(){
  2.         $query = "SELECT cat FROM tutorials WHERE id LIKE $id";
  3.         $row = mysql_fetch_array(mysql_query($query));
  4.         
  5.         if($row == "1")
  6.         {
  7.             return "<img src='img/php.png' />";
  8.         }
  9.         else if($row == "2")
  10.         {
  11.             return "<img src='img/ps.jpg' />";
  12.         }
  13.         else if($row == "3")
  14.         {
  15.             return "<img src='img/asp.jpg' />";
  16.         }
  17.         else if($row == "4")
  18.         {
  19.             return "<img src='img/js.png' />";
  20.         }
  21.         else if($row == "5")
  22.         {
  23.             return "<img src='img/mysql.png' />";
  24.         }
  25.         else {
  26.             return "<img src='img/nif.jpg' />";
  27.         }
  28.     }


Básicamente, todo esto debe hacer es comparar el int en "gato" a una lista y mostrar la imagen correspondiente. Sin embargo, independientemente de la cantidad en la base de datos, se está cargando la condición else.
Every job is a self-portrait of the person who did it: Autograph your work with excellence.
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Online

Nota Diciembre 5th, 2011, 9:25 pm

Contento fija su otro problema!

Creo que tu otro problema aquí es que estás probablemente no acceder correctamente a la matriz de fila $ retorno. Antes de llegar a que la consulta podría ser más eficiente mediante el signo igual frente a como. Yo normalmente sólo utilizaría como si simplemente está intentando encontrar parte de un valor en una cadena más grande o algo. Por lo que con la consulta anterior sería cambiar a:

PHP Código: [ Select ]
$query = "SELECT cat FROM tutorials WHERE id = $id";


También asegúrese de id $ bien se limpian o se puede abrir uno mismo hasta algún tipo de ataque de inyección SQL en el sitio Web.

Volver a tu pregunta real cuando vayas:

PHP Código: [ Select ]
$row = mysql_fetch_array(mysql_query($query));


Una matriz completa está almacenando en la variable de fila $. Esto significa que $fila no es realmente el "gato", su toda la matriz de valores. En realidad probablemente debería acceder a ella como:

$fila ["gato"]

Así que dicho esto todo juntos sería:

PHP Código: [ Select ]
function tutImg(){
      $query = "SELECT cat FROM tutorials WHERE id = $id";
      $row = mysql_fetch_array(mysql_query($query));
     
      if($row['cat'] == "1")
      {
         return "<img src='img/php.png' />";
      }
      else if($row['cat'] == "2")
      {
         return "<img src='img/ps.jpg' />";
      }
      else if($row['cat'] == "3")
      {
         return "<img src='img/asp.jpg' />";
      }
      else if($row['cat'] == "4")
      {
         return "<img src='img/js.png' />";
      }
      else if($row['cat'] == "5")
      {
         return "<img src='img/mysql.png' />";
      }
      else {
         return "<img src='img/nif.jpg' />";
      }
   }
  1. function tutImg(){
  2.       $query = "SELECT cat FROM tutorials WHERE id = $id";
  3.       $row = mysql_fetch_array(mysql_query($query));
  4.      
  5.       if($row['cat'] == "1")
  6.       {
  7.          return "<img src='img/php.png' />";
  8.       }
  9.       else if($row['cat'] == "2")
  10.       {
  11.          return "<img src='img/ps.jpg' />";
  12.       }
  13.       else if($row['cat'] == "3")
  14.       {
  15.          return "<img src='img/asp.jpg' />";
  16.       }
  17.       else if($row['cat'] == "4")
  18.       {
  19.          return "<img src='img/js.png' />";
  20.       }
  21.       else if($row['cat'] == "5")
  22.       {
  23.          return "<img src='img/mysql.png' />";
  24.       }
  25.       else {
  26.          return "<img src='img/nif.jpg' />";
  27.       }
  28.    }


También podrías incluso simplificar esto mucho más si se almacena el nombre de la imagen en la base de datos como un nuevo campo con todos sus datos. Esto también sería mucho más fácil añadir nuevas categorías en el camino. Permite decir en su base de datos tenía estos campos de la tabla de tutoriales:

ID de
gato
imagen

A continuación, podría hacerlo en su lugar:

PHP Código: [ Select ]
function tutImg(){
      $query = "SELECT cat, image FROM tutorials WHERE id = $id";
      $row = mysql_fetch_array(mysql_query($query));
     
      return "<img src='img/" . $row['image'] . "' />";
   }
  1. function tutImg(){
  2.       $query = "SELECT cat, image FROM tutorials WHERE id = $id";
  3.       $row = mysql_fetch_array(mysql_query($query));
  4.      
  5.       return "<img src='img/" . $row['image'] . "' />";
  6.    }


Esperemos que algo se le ayuda a:)
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • Poly
  • Guru
  • Guru
  • Avatar de Usuario
  • Registrado: Jul 31, 2004
  • Mensajes: 1054
  • Loc: Same place you left me.
  • Status: Offline

Nota Diciembre 6th, 2011, 12:43 am

Agrega el campo de la imagen en la base de datos e intentó cargarlo mediante la función, pero en lugar de cargar la imagen, es salida &lt; img src = / &gt;. También intenté la otra opción que usted sugiere, pero resulta todavía en ella volviendo a la condition(nif.jpg) otra cosa. También he actualizado a la = en lugar de como. ¿Cualquier sir buenas ideas?
Every job is a self-portrait of the person who did it: Autograph your work with excellence.
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Online

Nota Diciembre 6th, 2011, 9:07 am

Puede entrar en algo como phpMyAdmin y ejecutar una consulta que tiene este aspecto:

SQL Código: [ Select ]
SELECT cat, image FROM tutorials WHERE id = 3


Vea si al menos es devolver resultados. Si es entonces en el archivo PHP justo después de esta línea:

PHP Código: [ Select ]
$row = mysql_fetch_array(mysql_query($query));


Escriba en este:

PHP Código: [ Select ]
print_r($row);
exit;
  1. print_r($row);
  2. exit;


y quisiera saber cuáles son los resultados.
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • Poly
  • Guru
  • Guru
  • Avatar de Usuario
  • Registrado: Jul 31, 2004
  • Mensajes: 1054
  • Loc: Same place you left me.
  • Status: Offline

Nota Diciembre 6th, 2011, 11:44 am

Código: [ Select ]
SELECT cat, image FROM tutorials WHERE id = 3

Genera el código SQL como cabría esperar. Se cargan los campos de gato y la imagen de la fila con el ID de 3.

Agregar
Código: [ Select ]
print_r($row);
exit;
  1. print_r($row);
  2. exit;

devuelto nada. Terminó el código HTML y genera nada más.
Every job is a self-portrait of the person who did it: Autograph your work with excellence.
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Online

Nota Diciembre 6th, 2011, 2:59 pm

Esto demuestra que el problema es entonces con esta línea:

PHP Código: [ Select ]
$row = mysql_fetch_array(mysql_query($query));


¿Está seguro de que está conectado a una base de datos correctamente?

Usted también puede hacer a:

PHP Código: [ Select ]
echo $query;


justo después el lugar donde se establece la cadena de consulta. Sería curioso para lo que es la consulta SQL real que se establece. Tal vez no se establece su id $ posible.
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • Poly
  • Guru
  • Guru
  • Avatar de Usuario
  • Registrado: Jul 31, 2004
  • Mensajes: 1054
  • Loc: Same place you left me.
  • Status: Offline

Nota Diciembre 6th, 2011, 3:32 pm

Bingo. No se establece el identificador $. Cuando me hago eco de la consulta, su salida
Código: [ Select ]
SELECT cat, img FROM tutorials WHERE id =


Estoy cargando la función de function.php, que es la segunda cosa que cargado en la página, después de realizar la conexión de base de datos.
Código: [ Select ]
//Load the functions
  include_once ('function.php');
  1. //Load the functions
  2.   include_once ('function.php');
Every job is a self-portrait of the person who did it: Autograph your work with excellence.
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Online

Nota Diciembre 6th, 2011, 5:18 pm

Me imagino que probablemente tenga el id $ establecido en algún lado de esa función. Normalmente lo que haría es iniciar la función como esta:

PHP Código: [ Select ]
function tutImg($id){


y, a continuación, al llamar a la función que haría algo como esto:

PHP Código: [ Select ]
<?php echo tutImg($someid); ?>


Sería la manera preferida. Una forma más descuidado y perezoso sería simplemente declarar el identificador $ como global en la función y luego sería acceder a ella fuera. Lo contrario haría algo como esto:

PHP Código: [ Select ]
function tutImg(){
global $id;
  1. function tutImg(){
  2. global $id;


y, a continuación, el id $ realmente debe contener un valor, si tiene configurado en algún lugar de la aplicación antes de llamar a esa función. Recuerda cuando su escritura funciona todas las variables son locales a esa función y nada fuera de esa función no se puede acceder a menos que tengan un alcance global.
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • Poly
  • Guru
  • Guru
  • Avatar de Usuario
  • Registrado: Jul 31, 2004
  • Mensajes: 1054
  • Loc: Same place you left me.
  • Status: Offline

Nota Diciembre 6th, 2011, 9:00 pm

Gracias, que lo resuelto!
Every job is a self-portrait of the person who did it: Autograph your work with excellence.
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Online

Nota Diciembre 6th, 2011, 10:42 pm

Se alegra finalmente todas las obras:)
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Diciembre 6th, 2011, 10:42 pm

Publicar Información

  • Total de mensajes en este tema: 15 mensajes
  • Usuarios navegando por este Foro: webspace y 124 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC