Hola que tal, estoy tratando de hacer un buscador tengo este archivo search.php, que la parte del php es algo asi:
<?
error_reporting(E_ALL ^ E_NOTICE);
session_name('pLogin');
session_set_cookie_params(2*7*24*60*60);
session_start();
include("function.php");
include("connect.php");
include("getdata.php");
$query = mysql_query("select * from prueba where usuario='$usuario'");
$getname = mysql_fetch_array($query);
$firstname = $getname["firstname"];
$lastname =$getname["lastname"];
$gender= $getname["sexo"];
$estadocivil=$getname["estadocivil"];
$pais=$getname["pais"];
?>
y la parte del html asi
<table width="470" height="254" border="1">
<form action="search_results.php" method="post">
<tr>
<td width="189">Nombre:</td>
<td width="265"><?php echo $firstname;?><input type="text" name="firstname" class="main_text_normal" style="width: 100%;"></td>
</tr>
<tr>
<td>Apellido:</td>
<td><?php echo $lastname;?><input type="text" name="lastname" class="main_text_normal" style="width: 100%;"></td>
</tr>
<tr>
<td>Pais:</td>
<td><select size=1 NAME='pais'>
<option <?php if ($user_ok[pais]=="Argentina") echo "selected"; ?>>Argentina</option>
<option <?php if ($user_ok[pais]=="Bolivia") echo "selected"; ?>>Bolivia</option>
<option <?php if ($user_ok[pais]=="Chile") echo "selected"; ?>>Chile</option>
<option <?php if ($user_ok[pais]=="Costa Rica") echo "selected"; ?>>Costa Rica</option>
<option <?php if ($user_ok[pais]=="Cuba") echo "selected"; ?>>Cuba</option>
<option <?php if ($user_ok[pais]=="Ecuador") echo "selected"; ?>>Ecuador</option>
<option <?php if ($user_ok[pais]=="El Salvador") echo "selected"; ?>>El Salvador</option>
<option <?php if ($user_ok[pais]=="Espana") echo "selected"; ?>>Espana</option>
<option <?php if ($user_ok[pais]=="Guatemala") echo "selected"; ?>>Guatemala</option>
<option <?php if ($user_ok[pais]=="Guinea Ecuatorial") echo "selected"; ?>>Guinea Ecuatorial</option>
<option <?php if ($user_ok[pais]=="Honduras") echo "selected"; ?>>Honduras</option>
<option <?php if ($user_ok[pais]=="México") echo "selected"; ?>>México</option>
<option <?php if ($user_ok[pais]=="Nicaragua") echo "selected"; ?>>Nicaragua</option>
<option <?php if ($user_ok[pais]=="Panamá") echo "selected"; ?>>Panamá</option>
<option <?php if ($user_ok[pais]=="Paraguay") echo "selected"; ?>>Paraguay</option>
<option <?php if ($user_ok[pais]=="Perú") echo "selected"; ?>>Perú</option>
<option <?php if ($user_ok[pais]=="Puerto Rico") echo "selected"; ?>>Puerto Rico</option>
<option <?php if ($user_ok[pais]=="República Dominicana") echo "selected"; ?>>República Dominicana</option>
<option <?php if ($user_ok[pais]=="Uruguay") echo "selected"; ?>>Uruguay</option>
<option <?php if ($user_ok[pais]=="Venezuela") echo "selected"; ?>>Venezuela</option>
</select> </td>
</tr>
<tr>
<td>Estado Civil: </td>
<td><select size=1 NAME='estadocivil'>
<option></option>
<option <?php if ($user_ok[estadocivil]=="Soltero/a") echo "selected"; ?>>Soltero/a</option>
<option <?php if ($user_ok[estadocivil]=="Divorciado/a") echo "selected"; ?>>Divorciado/a</option>
</select></td>
</tr>
<tr>
<td>Genero:</td>
<td><select size=1 NAME='sexo'>
<option></option>
<option <?php if ($user_ok[sexo]=="Masculino") echo "selected"; ?>>Masculino</option>
<option <?php if ($user_ok[sexo]=="Femenino") echo "selected"; ?>>Femenino</option>
</select></td>
</tr>
</form>
ahora bien, al hacer click en buscar, llama al archivo search_results.php que es el siguiente:
<?
error_reporting(E_ALL ^ E_NOTICE);
session_name('pLogin');
session_set_cookie_params(2*7*24*60*60);
session_start();
include('connect.php');
$usuario = $_SESSION['usuario'];
$firstname=$_POST['firstname'];
$lastname=$_POST['lastname'];
$estadocivil=$_POST['estadocivil'];
$gender=$_POST['sexo'];
$pais=$_POST['pais'];
$query= mysql_query("select * from prueba where firstname='".$firstname."' AND lastname='".$lastname."'AND sexo='".$gender."' AND estadocivil='".$estadocivil."' AND pais='".$pais."'");
?>
en el html de este archivo hago un <?php echo $firstname;?>, por ejemplo.
Mi pregunta es, en qué estoy fallando porque no me busca ningun usuario. Está bien como lo estoy haciendo?
De antemano gracias, solo busco algo de orientacion.
Emmm, dentro del archivo search.php, se supone que donde esta seteada la variable $usuario.
PD: This application has iSQL and XSS. :silbar:
Hay algunos temas sobre crear un buscador en el foro, usa el buscador del foro.
Si, me olvidé de declarar la variable, pero igual no funciona. Gracias por responder
Bueno, no me referia a la declaración de la variable, sino del SETEO, es decir, en donde le dás valor a esa variable. Supongo que desde allì parte la consulta!
Algo asi?
if(!isset($usuario)){
echo 'No se ha seleccionado ningun usuario.';
}else{
Por que razon no se llegan a mostrar los resultados de los usuarios de la bd, cuando hago el select * from existe algo mal?, porque los datos los paso por post.
Supongo que deberia ser
$usuario = $_SESSION['usuario'];
Deberias de usar la tecnica del miron... :P, mostrar el query en un echo, para ver que valores estas pasando y cuales no, además de ejecutarlo en el MySQL, a ver si trae resultados.
usa la sentencia while y trata de no usar variables, si no datos fijos y hay sabrás si podría ser que las variables no tenga algún contenido.
Bueno eso fue lo que hice, pero nada... Tal vez estoy haciendo algo mal en el show_results.php y por eso no se muestran los datos de otros usuarios.
y usaste la sentencia while?
En el search.php no concatenas en la formulacion de la consulta:
$query = mysql_query("select * from prueba where usuario='$usuario'");
debiese ser asi:
$query = mysql_query("select * from prueba where usuario='".$usuario."'");
SeC, hasta donde tengo entendido dá igual si conctatenas o no, igual se toma como variable, ya que se antepone de un $!
PD: O soy muy idiota o no sé, pero solo veo que ejecutas la sentencia SQL, en donde Fuck, muestras los valores que devolvio la consulta!
Usa la sentencia while y trata de ver mas documentación sobre las funciones que utilizas.
<?php
error_reporting(E_ALL ^ E_NOTICE);
session_name('pLogin');
session_set_cookie_params(2*7*24*60*60);
session_start();
include("function.php");
include("connect.php");
include("getdata.php");
$query = mysql_query("select * from prueba where usuario='$usuario'");
while($getname = mysql_fetch_array($query))
{
$firstname = $getname["firstname"];
$lastname =$getname["lastname"];
$gender= $getname["sexo"];
$estadocivil=$getname["estadocivil"];
$pais=$getname["pais"];
}
?>
mira gabi, no es de forro, pero siempre estas teniendo los mismo problemas en tus codigos, o te flata declarar variables, o errores muy basicos, asi, porq no mejor lees algun buen tutorial de php? porq este tipo de errores son de los primeros capitulos.
usa un buscador powered by google :xD, na pero hacer un buscador tiene miles de errores si lo haces caseramente, puede haber desde sql i a xss, ese codigo lo hiciste vos?
saludos
Bueno gracias, por haber contestado, Castg!, trataré de buscar algun tutorial, la otra vez, seguí tu consejo y lo pude resolver, al problema que tenia.
fede_cp, bueno buscaré alguno made in google, jaja, veremos...
Gracias.
den_22
Hola nuevamente, al final pude hacer un buscador, que puede buscar por palabras, o sea nombre de usuario. El tema es que no me sale el del select.
Dejo los codigos, a ver cual es la cuestion de que no busque con el select.
el search.php tiene este codigo:
<?php
include_once ("connect.php");
include_once ("srh.php");
?>
el del srh.php:
<?php
//Buscador nombre
if (isset($_POST['search_firstname'])){
$query = mysql_query("SELECT firstname FROM prueba WHERE firstname='".$_POST['firstname']."'");
if (empty($_POST['firstname'])){
$search_username_message = "<tr><td align=\"center\" bgcolor=\"#FFFFFF\" class=\"main\"><B>[ Debes ingresar un nombre de usuario ]</B></td></tr>";
}
else if (mysql_num_rows($query)==0){
$search_username_message = "<tr><td align=\"center\" bgcolor=\"#FFFFFF\" class=\"main\"><B>[ El usuario no existe ]</B></td></tr>";
}
else {
$search_username_message = "<script>document.location.href='".$_POST['firstname']."'</script>";
}
}
//Buscador del select
if (isset($_POST['search'])){
$search_message = "<script>document.location.href='search_results.php?sexo=".$_POST['gender']."&&pais=".$_POST['pais']."&&estadocivil=".$_POST['estadocivil']."'</script>";
}
?>
el form del search.php tiene un action asi members_search_index.php?search=firstname y en el html pongo algo asi <?php echo $user_ok['firstname'];?> para que aparezcan los datos.
Ahora, lo que no me sale es el buscador del select
aca está el codigo del search_results.php:
?php
include_once ("connect.php");
include_once("srh.php");
if(!isset($_POST['page'])){
$page = 1;
} else {
$page = $_POST['page'];
}
$max_results = 3;
$from = (($page * $max_results) - $max_results);
$query = mysql_query("SELECT * FROM prueba WHERE sexo='".$_POST['gender']."' AND pais='".$_POST['pais']."' AND estadocivil='".$_POST['estadocivil']."' LIMIT $from, $max_results");
if (mysql_num_rows($query)==0){
echo "<span class=\"pages\"><center><B>No hay resultados[ <a href=\"search.php\" class=\"pages\">Atras</a> ]</B></center></span>";
} else {
$col = 0;
echo '<tr>';
while ($user_ok = mysql_fetch_array($query)){
if ($user_ok['gender']=='4'){
echo 'Femenino';
} else {
echo 'Masculino';
}
$col++;
if ($col==3){
echo "</tr><tr>";
$col = 0;
}
}
}
$query = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM prueba WHERE sexo='".$_POST['gender']."' AND pais='".$_POST['pais']."' AND estadocivil='".$_POST['estadocivil']."'"),0);
$total_pages = ceil($query / $max_results);
if($page > 1){
$prev = ($page - 1);
echo "<a href=\"search_results.php?sexo=".$_POST['gender']."&&pais=".$_POST['pais']."&&estadocivil=".$_POST['estadocivil']."&&page=$prev\"><font color=\"black\"><B>Anterior</B></font></a> ";
}
for($i = 1; $i <= $total_pages; $i++){
if(($page) == $i){
echo "$i ";
} else {
echo "<a href=\"search_results.php?sexo=".$_POST['gender']."&&pais=".$_POST['pais']."&&estadocivil=".$_POST['estadocivil']."&&page=$i\"><font color=\"black\"><B>$i</B></font></a> ";
}
}
if($page < $total_pages){
$next = ($page + 1);
echo "<a href=\"search_results.php?sexo=".$_POST['gender']."&&pais=".$_POST['pais']."&&estadocivil=".$_POST['estadocivil']."&&page=$next\"><font color=\"black\"><B>Siguiente</B></font></a>";
}
echo "</center>";
?>
Gracias de antemano.
den_22
Hola, bueno posteo lo que tengo hasta ahora, no pido que hagan el codigo, solamente que me guien un poquito :-( , gracias.
<?php
error_reporting(E_ALL ^ E_NOTICE);
session_name('pLogin');
session_set_cookie_params(2*7*24*60*60);
session_start();
include_once ("connect.php");
$usuario=$_SESSION['usuario'];
if(!isset($usuario)){
echo 'No se ha seleccionado ningun usuario.';
}else{
$query=mysql_query("SELECT * FROM prueba WHERE usuario='$_SESSION[usuario]' ");
if(mysql_num_rows($query)>0){
$user_ok=mysql_fetch_array($query);
//todo comprobado, ahora solo falta mostrar los datos
echo 'Bienvenid@ <b>'.$user_ok['usuario'].'</b><br>';
}else{
echo 'La id de usuario seleccionada no existe';
}
}
function getsqlrow($query) {
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result);
mysql_free_result($result);
return $row;
}
function getsqlnumber($sqlQuery) {
$query=mysql_query($sqlQuery);
$result=mysql_num_rows($query);
mysql_free_result($query);
return $result;
}
if(!isset($_GET['page'])){
$page = 1;
} else {
$page = $_GET['page'];
}
$max_results = 10;
$from = (($page * $max_results) - $max_results);
$query = mysql_query("SELECT * FROM prueba WHERE sexo='".$_POST['gender']."' AND pais='".$_POST['pais']."' AND estadocivil='".$_POST['estadocivil']."' LIMIT $from, $max_results");
if (mysql_num_rows($query)==0){
} else {
while ($user_ok = mysql_fetch_array($query)){
$get_result_row = getsqlrow("SELECT * FROM prueba WHERE usuario='".$user_ok['usuario']."'");
$result_ocupacion = getsqlnumber("SELECT * FROM prueba WHERE ocupacion='".$user_ok['ocupacion']."'");
$result_hijos = getsqlnumber("SELECT * FROM prueba WHERE hijos='".$user_ok['hijos']."'");
}
}
$total_results = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM prueba WHERE sexo='".$_POST['gender']."' AND pais='".$_POST['pais']."' AND estadocivil='".$_POST['estadocivil']."'"),0);
$total_pages = ceil($result / $max_results);
if($page > 1){
$prev = ($page - 1);
echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$prev&&firstname=".$_POST['firstname']."&&sexo=".$_POST['gender']."&&pais=".$_POST['pais']."&&estadocivil=".$_POST['estadocivil']."\" class=\"title_text\">Previous</a>";
}
for($i = 1; $i <= $total_pages; $i++){
if(($page) == $i){
echo "$i ";
} else {
echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$i&&firstname=".$_POST['firstname']."&&sexo=".$_POST['gender']."&&pais=".$_POST['pais']."&&estadocivil=".$_POST['estadocivil']."\" class=\"title_text\">$i</a> ";
}
}
if($page < $total_pages){
$next = ($page + 1);
echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$next&&firstname=".$_POST['firstname']."&&sexo=".$_POST['gender']."&&pais=".$_POST['pais']."&&estadocivil=".$_POST['estadocivil']."\" class=\"title_text\">Next</a>";
}
echo "</center>";
?>
jejeje Seria más facil si plantearas la duda y/o la linea de codigo en la que tenes problemas.
PD: Intenta filtrar, manejar las variables, yá que creo que se puede realizar un iSQL y XSS...