Foros del Web » Programando para Internet » PHP »

pasar texto como parametro

Estas en el tema de pasar texto como parametro en el foro de PHP en Foros del Web. Hola, tengo un problema esta consulta no da resultado $palabra=trim($_POST['palabra']); $res=(mysql_query("SELECT * FROM wiki WHERE titulo=$palabra")); Cuando palabra es un texto que seguro que recibe ...
  #1 (permalink)  
Antiguo 01/09/2006, 12:53
Avatar de kennyhp  
Fecha de Ingreso: julio-2006
Mensajes: 370
Antigüedad: 11 años, 5 meses
Puntos: 5
pasar texto como parametro

Hola, tengo un problema
esta consulta no da resultado

$palabra=trim($_POST['palabra']);
$res=(mysql_query("SELECT * FROM wiki WHERE titulo=$palabra"));

Cuando palabra es un texto que seguro que recibe bien y existe en la base de datos.

Si pongo
$res=(mysql_query("SELECT * FROM wiki WHERE id=2"));

si que da resultado

¿por que con el parametro texto no va?
  #2 (permalink)  
Antiguo 01/09/2006, 12:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Para que usas parentesis para llamar a tus funciones de mysql_xxx()?

Código PHP:
$res=mysql_query("SELECT * FROM wiki WHERE titulo='".$palabra."'"); 
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 01/09/2006, 13:15
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
Supongo que recoges mal la variable palabra ($_POST['palabra'])

Muéstranos el código
  #4 (permalink)  
Antiguo 01/09/2006, 13:22
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 11 años, 5 meses
Puntos: 0
Cita:
Iniciado por Cluster Ver Mensaje
Para que usas parentesis para llamar a tus funciones de mysql_xxx()?

Código PHP:
$res=mysql_query("SELECT * FROM wiki WHERE titulo='".$palabra."'"); 
Un saludo,
La solución es acorde con la q tiene Cluster. Las comillas simples faltaban al tratarse de un campo de texto.

Añado x si akaso q si el campo titulo lleva más palabras y se busca un título q la contenga quizás deberías variar la consulta de la siguiente forma:

Código PHP:
$res=mysql_query("SELECT * FROM wiki WHERE titulo LIKE '%".$palabra."%'"); 
Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #5 (permalink)  
Antiguo 01/09/2006, 13:27
Avatar de kennyhp  
Fecha de Ingreso: julio-2006
Mensajes: 370
Antigüedad: 11 años, 5 meses
Puntos: 5
Holas, los parentesis es porque antes lo habia puesto con in if(!)y se me habian quedado al quitar el if ;) lo he quitado pero hace lo mismo.
pongo el codigo entero para que lo veais:

index.php

desde dd envio el post:

<td><form action="articulos.php?accion=ver" method="post" name="buscar" id="buscar">
<input name="palabra" type="text" id="palabra">
<input type="submit" name="Submit" value="Buscar!">
</form></td>

y articulos.php

include 'conexion.php';

$accion_realizar = $_GET['accion'];

if ($accion_realizar=ver)
{
$palabra=trim($_POST['palabra']);
$res=mysql_query("SELECT * FROM wiki WHERE titulo=$palabra");
$row = mysql_fetch_array($res);

//if($row==NULL) echo "Ningún resultado";
//else
//{
$titulo=$row['titulo'];
$articulo=$row['articulo'];

echo "titulo:<strong> $titulo</strong>";
echo "<br>Articulo: $articulo";
//}


}

?>
  #6 (permalink)  
Antiguo 01/09/2006, 13:33
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 11 años, 5 meses
Puntos: 0
Cito sobre tu código:

Cita:
Iniciado por kennyhp Ver Mensaje
Código PHP:
$accion_realizar $_GET['accion'];

if (
$accion_realizar=ver//Esto no es una comparacion, es una igualacion. Además ver es texto con lo que debes entrecomillarlo en su lugar debería ser:
//if ($accion_realizar=="ver")
{
    
$palabra=trim($_POST['palabra']);
    
$res=mysql_query("SELECT * FROM wiki WHERE titulo=$palabra"); //Lo q Cluster y yo te comentamos de las comillas simples.
//$res=mysql_query("SELECT * FROM wiki WHERE titulo='$palabra'"); o $res=mysql_query("SELECT * FROM wiki WHERE titulo='".$palabra."'");
    
$row mysql_fetch_array($res);
    
    
//if($row==NULL) echo "Ningún resultado";
    //else
    //{
        
$titulo=$row['titulo'];
        
$articulo=$row['articulo'];
        
        echo 
"titulo:<strong> $titulo</strong>";
        echo 
"<br>Articulo: $articulo";
    
//}
    
        
}

?> 
Tal como tienes el bucle solo te devolveria el primer resultado. Creo q es mejor usar un

Código PHP:
while ($row mysql_fetch_array($res)) { 
en lugar de asignar y luego mostrar.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #7 (permalink)  
Antiguo 01/09/2006, 13:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Esto no es correcto:
Cita:
if ($accion_realizar=ver)
{
Ahí "asignas" .. no "comparas", además que si vas a comparar un "string" este ha de ir entre comillas:

Código PHP:
if ($accion_realizar=="ver")

Esto tampoco es correcto:
Cita:
$row = mysql_fetch_array($res);

//if($row==NULL) echo "Ningún resultado";
//else
Es mejor "contar los registros" que el resultado pueda dar:

Código PHP:
if (mysql_num_rows($res)>0){
   while (
$row mysql_fetch_array($res)){
       echo 
$row['titulo']; // etc con el resto de campos ...
   
}
} else {
  echo 
"No hay resultados";

Tampoco sé si tu consulta SQL ha de arrojar un resultado o ninguno (según se encuentre o no) .. Esto es para decidir si usar el bucle "while()" o no ..

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 02/09/2006, 06:26
Avatar de kennyhp  
Fecha de Ingreso: julio-2006
Mensajes: 370
Antigüedad: 11 años, 5 meses
Puntos: 5
Hola chicos, pues ya tengo el codigo funcionando... gracias nois.
Pues es cierto cluster, tu codigo es mejor k el mio, lo del = compracion o asignacion pensaba k no se usaba en php! ahora ya lo se!

Por cierto le LIKE en la consulta si no me akiboco quiere decir que contenga algo no? el % que hay despues del LIKE seria como el * en msdos?

Un saludo y gracias por todo!!
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 12:33.