PHP - problema con request al pasar una variable

 
Vista:

problema con request al pasar una variable

Publicado por Gabriel (33 intervenciones) el 15/11/2013 21:41:14
Saludos, tengo un problema al pasar una variable desde un enlace...cuando request la toma no aparece nada al mostrarla en pantalla, solicito ayuda por favor.

Aqui mi codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$busca2="";
$busca2=$_POST['busca2'];
mysql_connect("localhost","root");// si haces conexion desde internnet usa 3 parametros si es a nivel local solo 2
mysql_select_db("datos");//nombre de la base de datos
if($busca2!=""){
$busqueda=mysql_query("SELECT * FROM datos1 WHERE pais LIKE '%".$busca2."%'");//cambiar nombre de la tabla de busqueda
 
 
 
while($f=mysql_fetch_array($busqueda)){
 
    ?>
 
<a href="verDetalle2.php?usuario=
 <?php echo $f['usuario']; 

  ?>target="_blank" />

<?php 

echo $f['usuario'];

} }?>
archivo verDetalle2.p

archivo verDetalle2.php

1
2
3
4
5
6
7
8
9
10
11
12
<?php
mysql_connect("localhost","root","");
mysql_select_db("datos");
 
$id = strval( $_REQUEST['usuario'] );
 $sql = "SELECT * FROM datos1 WHERE usuario='{$id}'";
  $cursor = mysql_query( $sql );
   $fila = mysql_fetch_array( $cursor );
 
 
 echo $fila['usuario'];
 ?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

problema con request al pasar una variable

Publicado por xve (6935 intervenciones) el 16/11/2013 10:05:42
Hola Gabriel, en verDatelle2.php, no veo muy bien donde coger el valor de la variable $_GET["usuario"], pero el enlace creo que es erroneo:

Esto creo que esta mal, ya que le faltan unas comillas de cierre:
1
2
3
4
<a href="verDetalle2.php?usuario=
 <?php echo $f['usuario']; 

  ?>target="_blank" />
Tendría que ser algo como:
1
<a href="verDetalle2.php?usuario=<?php echo $f['usuario'];?>" target="_blank" />

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema con request al pasar una variable

Publicado por Mari Carmen (145 intervenciones) el 16/11/2013 20:43:33
Solo por agregar información a lo que dice xve:
También puedes usar la etiqueta <?= $f['usuario'] ?> .
Esa etiqueta ( <?= ) es como hacer un <?php echo

Aun así veo varios errores.
1 Usas una librería obsoleta como mysql que será retirada en las futuras versiones de PHP. Usa mysqli
2 No escapas los caracteres que luego le das a la BBDD, esto implica que si alguien te quiere hacer una Inyeccion de códio (Robarte contraseñas, o borrarte la base de datos) puede hacerlo sin problemas.
3 La etiqueta "a" de html debe cerrarse, es decir <a href="aquí la dirección a la que le redirige">Aquí lo que el usuario lee</a>
4 Aun que haces bien al detectar que la variable de entrada, a mi gusto no es la forma de hacerlo.(pero esto no es un error, cada programador tiene sus manias.)

Te voy a poner como reestructuraría tu código yo aun que solo el primero. Teniendo en cuenta también la librería. Personalmente me gusta más usando clases y objetos, pero te los pongo los dos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$busca2=((isset($_POST['busca2']) && !empty($_POST['busca2']))?$_POST['busca2']:false);
 
if($busca2){
    $BD = mysqli_connect('localhost', 'root', 'my_password', 'datos');
    if (!$BD) {
        die( 'Connect Error ('. mysqli_connect_errno() .') '. mysqli_connect_error() );
    }
 
    $query="SELECT usuario FROM datos1 WHERE pais LIKE '%?%'";
    if ($stmt = mysqli_prepare($DB, $query)) {
        mysqli_stmt_bind_param($stmt, "s", $busca2);
        mysqli_stmt_execute($stmt);
 
        mysqli_stmt_bind_result($stmt, $usuario);
        while (mysqli_stmt_fetch($stmt)){
            echo "<a href=\"verDetalle2.php?usuario=$usuario\" target=\"_blank\" >$usuario</a>\n";
        }
        mysqli_stmt_close($stmt);
    }
    mysqli_close($BD);
}

Con la forma POO quedaria asi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if($busca2){
    $BD = new mysqli('localhost', 'root', 'my_password', 'datos');
    if ($BD->connect_error) {
        die( 'Connect Error (' . $BD->connect_errno . ') ' . $BD->connect_error );
    }
 
    $query="SELECT usuario FROM datos1 WHERE pais LIKE '%?%'";
    if ($stmt = $DB->prepare($query)) {
 
        $stmt->bind_param("s", $busca2);
        $stmt->execute();
        $stmt->bind_result($usuario);
 
        while ($stmt->fetch()) {
            echo "<a href=\"verDetalle2.php?usuario=$usuario\" target=\"_blank\" >$usuario</a>\n";
        }
        $stmt->close();
    }
    $BD->close();
}

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema con request al pasar una variable

Publicado por Mari Carmen (145 intervenciones) el 16/11/2013 21:45:20
En el condicional del query me he equivocado en la variable y he puesto $DB cuando tendría que poner $BD.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema con request al pasar una variable

Publicado por Gabriel (33 intervenciones) el 19/11/2013 20:23:15
Gracias xve por su ayuda, me sirvio a la primera.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar