Foros del Web » Programando para Internet » PHP »

como mostrar uno de los valores del resultado de la consulta como enlace a una URL

Estas en el tema de como mostrar uno de los valores del resultado de la consulta como enlace a una URL en el foro de PHP en Foros del Web. Hola, he utilizado el código que aparece en las FAQ's sobre como mostrar en pantalla el resultado de una búsqueda, pero necesito completarlo un poco ...
  #1 (permalink)  
Antiguo 06/09/2006, 08:47
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 18 años, 8 meses
Puntos: 0
como mostrar uno de los valores del resultado de la consulta como enlace a una URL

Hola, he utilizado el código que aparece en las FAQ's sobre como mostrar en pantalla el resultado de una búsqueda, pero necesito completarlo un poco y no consigo que me funcione. Concretamente, quiero que me saque uno de los valores de la tabla como enlace a una URL. Con la flecha al principio es lo que he añadido y no me funciona. Muchas gracias por su ayuda.

Código PHP:
<?php
//mostrar resultado select en tabla entera (titulo de columnas y datos) siendo,
echo "<table bgcolor=\"#DDDDDD\" align=center style=\"border:1px outset black\">";
for (
$i 0$i mysql_num_fields($result); $i++) {
        print 
"<th><font size=\"1\">".mysql_field_name($result$i)."</font></th>\n";
        }
        while (
$registro mysql_fetch_row($result)) {
         echo 
"<tr>";
          foreach(
$registro as $clave) {
           echo 
"<td bgcolor=\"#FEFAF3\"align=\"left\"><font size=\"1\">",$clave,"</font></td>";
  ->        if (
mysql_field_name($clave,9)=='NC_id') {
  ->          echo 
"<td bgcolor=\"#FEFAF3\"align=\"left\"><font size=\"1\"><a href=\"http://www.web.com/view.php?db=de&val=",$clave,"\" target=\"_blank\">",$clave,"</a></font></td>";
            }
         }
      }
 echo
"</tr></table>";
?>
  #2 (permalink)  
Antiguo 06/09/2006, 09:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En tu ejemplo . .usas como "caracter concatenador" para mezclar tus strings (cadenas) con tus variables como una "coma" .. pero el que necesitas es un "punto":

Código PHP:
 echo "<td bgcolor=\"#FEFAF3\"align=\"left\"><font size=\"1\"><a href=\"http://www.web.com/view.php?db=de&val=".$clave."\" target=\"_blank\">".$clave."</a></font></td>"
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 06/09/2006, 09:27
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 18 años, 8 meses
Puntos: 0
Hola, he modificado las comas por puntos como has dicho y sigue igual. He cambiado algo el código y de esta forma me muestra como enlace el primero de los campos de la fila, pero no es el que quiero que me muestre, sino el que se llama NC_id. Gracias!

Código PHP:
<?php
//mostrar resultado select en tabla entera (titulo de columnas y datos) siendo,
echo "<table bgcolor=\"#DDDDDD\" align=center style=\"border:1px outset black\">";
for (
$i 0$i mysql_num_fields($result); $i++) {
        print 
"<th><font size=\"1\">".mysql_field_name($result$i)."</font></th>\n";
        }
        while (
$registro mysql_fetch_row($result)) {
                echo 
"<tr>";
                foreach(
$registro as $clave=>$valor) {
                
//      echo "<td bgcolor=\"#FEFAF3\"align=\"left\"><font size=\"1\">",$clave,"</font></td>";
                 
if ($clave=='NC_id') {
                  echo 
"<td bgcolor=\"#FEFAF3\"align=\"left\"><font size=\"1\"><a href=\"www.web.com/view.php?db=de&val=".$valor."\" target=\"_blank\">".$valor."</a></font></td>";
                  }
                
// }
                 
else {
                  echo 
"<td bgcolor=\"#FEFAF3\"align=\"left\"><font size=\"1\">".$valor."</font></td>";
                  }
                }
         }
        echo
"</tr></table>";
?>
  #4 (permalink)  
Antiguo 06/09/2006, 10:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No entendí bien ..

En tu link que generas y variable que propagas:
val=".$valor

que dato quieres ahí? .. $valor o $clave .. o en que caso? Ahí aplicas un "if()" .. pon el tag de LINK igual que el otro caso (en el else):

Código PHP:
echo "<td bgcolor=\"#FEFAF3\"align=\"left\"><font size=\"1\"><a href=\"www.web.com/view.php?db=de&val=".$valor."\" target=\"_blank\">".$valor."</a></font></td>"
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 06/09/2006, 10:27
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 18 años, 8 meses
Puntos: 0
$clave=='NC_id' -> donde quiero especificar para qué campo de la fila me aparezca el enlace. El campo de mi tabla se llama NC_id, entonces, en el enlace a la web externa tiene que aparecer la web con el valor del campo NC_id de esa fila incluido. Creo que el problema está ahi, ya que he probado con otras tablas que no tienen el campo NC_id y me sigue mostrando por pantalla un enlace en el primer campo de cada fila de la consulta. La cuestión, es que sólo quiero el enlace en el campo NC_id, el resto de campos tendrían el código que viene en el else, es decir, sin enlace... Gracias por la ayuda!
  #6 (permalink)  
Antiguo 06/09/2006, 10:38
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 18 años, 8 meses
Puntos: 0
He probado con,

if (mysql_field_name($result,9)=='NC_id') {

como condición para que reconzca el campo, y en este caso me aparece el enlace para cada uno de los campos de cada fila. Alguna pista??
  #7 (permalink)  
Antiguo 06/09/2006, 10:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por aLiSHa_FW Ver Mensaje
$clave=='NC_id' -> donde quiero especificar para qué campo de la fila me aparezca el enlace. El campo de mi tabla se llama NC_id, entonces, en el enlace a la web externa tiene que aparecer la web con el valor del campo NC_id de esa fila incluido. Creo que el problema está ahi, ya que he probado con otras tablas que no tienen el campo NC_id y me sigue mostrando por pantalla un enlace en el primer campo de cada fila de la consulta. La cuestión, es que sólo quiero el enlace en el campo NC_id, el resto de campos tendrían el código que viene en el else, es decir, sin enlace... Gracias por la ayuda!
Pero .. tu código funciona correctamente en el aspecto de detectar el nombre de tus campos de la tabla indicada?

Primero revisa que valores toma $clave y $valor. Revisa que el nombre del campo entregado sea textual al que comparas.

Me "parece" que deberías usar:

if ($valor=='NC_id') {

por eso te comento que lo mejor es "evaluar" que valores te dá tu foreach() y así te darás cuenta rápido del problema:
* Que el campo de la tabla implicada no es textualmente como indicas.
* Que no es $clave lo que debes comparar sino $valor ...

En fin .. eso son algunas de las respuestas que te dará un analisis simple como el que te comento.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 06/09/2006, 10:58
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 18 años, 8 meses
Puntos: 0
Muchas gracias por la ayuda. He evaluado las variables del foreach como me has aconsejado y lo que obtengo es lo siguiente:

$registro = Array

$clave = un número, el índice en el array

$valro = el valor almacenado en el campo de la base de datos

Entonces, creo que debería poner:

if ($clave=='9') {

9 es el número en el índice del array que corresponde al campo NC_id. Efectivamente, lo he probado y justo me sale el enlace en ése campo únicamente.Pero, me gustaría especificarlo más, ya que este código también lo utilizo para otras tablas y en ellas el indice 9 se corresponde a otro campo. Alguna idea de como podría hacerlo? Muchas gracias.
  #9 (permalink)  
Antiguo 06/09/2006, 11:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No uses en ese lugar:

mysql_fetch_row()

Usa mysql_fetch_assoc() que te entrega un array asociativo ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 06/09/2006, 12:22
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Sonrisa Prueba asi...

Código PHP:
   $Cn = new mysqli('tu_host','tu_usuario,'tu_clave','tu_bd');
   $SQL="Select * From tu_tabla";
   $Cons=$Cn->query($SQL);
   if (!$Cons){
     echo '
errorrrrrrr'; exit;
   }
   $Resultados=$Cons->num_rows;
   if (($Resultados)==0){
     echo '
No hay registros'; exit;
   }
   echo "Regristros de la Tabla<br>";
   for ($vFila=1; $vFila<=$Resultados; $vFila++){
      $Registro=$Cons->fetch_assoc();
      echo "<a href=".$Registro['
tu_campo_de_pagina'].">".$Registro['tu_campo_de_titulo]."</a><br>";
   } 
explicacion:--->>> solo cambia los datos segun tu necesidad y listo,
en:
tu_campo_de_pagina; imagino que la direccion de la pagina web la estas guardando en tu bd, por eso lo puse asi.
tu_campo_de_titulo; es el titulo del enlace, tambien supuse que lo querias sacar de la bd.
ahora podrias hacer un funcion seria mejor y mas fiable, en fin es tu decision, espero te sirva, saludos babay
  #11 (permalink)  
Antiguo 06/09/2006, 12:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Bellenger Ver Mensaje
Código PHP:
   $Cn = new mysqli('tu_host','tu_usuario,'tu_clave','tu_bd');
   $SQL="Select * From tu_tabla";
   $Cons=$Cn->query($SQL);
   if (!$Cons){
     echo '
errorrrrrrr'; exit;
   }
   $Resultados=$Cons->num_rows;
   if (($Resultados)==0){
     echo '
No hay registros'; exit;
   }
   echo "Regristros de la Tabla<br>";
   for ($vFila=1; $vFila<=$Resultados; $vFila++){
      $Registro=$Cons->fetch_assoc();
      echo "<a href=".$Registro['
tu_campo_de_pagina'].">".$Registro['tu_campo_de_titulo]."</a><br>";
   } 
explicacion:--->>> solo cambia los datos segun tu necesidad y listo,
en:
tu_campo_de_pagina; imagino que la direccion de la pagina web la estas guardando en tu bd, por eso lo puse asi.
tu_campo_de_titulo; es el titulo del enlace, tambien supuse que lo querias sacar de la bd.
ahora podrias hacer un funcion seria mejor y mas fiable, en fin es tu decision, espero te sirva, saludos babay
OJO! .. no todo el mundo puede disfrutar de "mysqli" (extensiones) .. Es bueno que se vaya viendo código que lo use .. pero siempre con la "acotación" .. por qué lo común es usar las extensiones de Msyql con el cliente "viejo" de Msyql: msyql_xxx() funciones

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 07/09/2006, 01:15
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 18 años, 8 meses
Puntos: 0
Hola! muchas gracias por su ayuda. No tengo instalada la extensión mysqli así que finalmente cambié la función por mysql_fetch_assoc y puse la condición en el if de ($clave=='NC_id'). De esta forma me funciona perfectamente y únicamente en la tabla que me interesa. Gracias!!!
  #13 (permalink)  
Antiguo 07/09/2006, 10:14
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
De acuerdo Tienes mucha razon...

Hola, Tienes mucha razon Cluster, me habia olvidado de que la mayoria aun usa, php4, pero como dices ya es hora de ver algo del 5 jaja nos vemos
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 13:05.