Foros del Web » Programando para Internet » PHP »

Ordenar mis Resultados

Estas en el tema de Ordenar mis Resultados en el foro de PHP en Foros del Web. hola, hace no mucho me genere un buscador interno el cual, despues algunos cuantos prblemas funciona como deve. el problema aqui o la duda es ...
  #1 (permalink)  
Antiguo 27/07/2006, 16:11
Avatar de Falopy  
Fecha de Ingreso: abril-2004
Ubicación: Zapopan Jalisco
Mensajes: 36
Antigüedad: 20 años
Puntos: 0
Ordenar mis Resultados

hola, hace no mucho me genere un buscador interno el cual, despues algunos cuantos prblemas funciona como deve.

el problema aqui o la duda es que quisiera poder generar un link en el encabezado de cada celda para que esta me ordene los resultados deacuredo al titulo de la celda por ejempo

|NOMBRE|
--------
markos
xavier
rodolfo

al momento que el usuario "clikee" donde dice Nombre este arrojara esos resultados pero ordenados alfaveticamente.
no se si me explique bien, pero la idea general es que se ordenen los resultados por un link
  #2 (permalink)  
Antiguo 27/07/2006, 17:17
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 2 meses
Puntos: 10
Bueno, eso depende mucho de como funcione tu buscador...
Suponiendo que sacas los datos de una tabla de una base de datos MYSQL y que la tabla tenes los campos llamados, por ejemplo, nombre, apellido y nick deberias hacer algo asi:
Código PHP:
<?

if(isset($_GET['ordenarpor']))
    
$ordenarpor $_GET['ordenarpor']; 
else
    
$ordenarpor "nombre"

$sql "SELECT * FROM tabla ORDER BY apellido ASC";
$sql mysql_query($sql);
?>
<html>
<head>
<title>Titulo</title>
</head>
<body>
<a href="<?=$_SERVER['PHP_SELF']?>?ordenarpor=nombre">Nombre</a> - 
<a href="<?=$_SERVER['PHP_SELF']?>?ordenarpor=apellido">Apellido</a> - 
<a href="<?=$_SERVER['PHP_SELF']?>?ordenarpor=nick">Nick</a>

ACA MUESTAS LOS RESULTADOS

</body>
</html>
__________________
oohh... quisiera ser godines!!!
  #3 (permalink)  
Antiguo 31/07/2006, 13:10
Avatar de Falopy  
Fecha de Ingreso: abril-2004
Ubicación: Zapopan Jalisco
Mensajes: 36
Antigüedad: 20 años
Puntos: 0
Pregunta

hola de nuevo =) el ejemplo que pones esta exelente y funciona haciendolo de otra manera que no sea lo que ya tenia hecho..para dar una mejor idea de cual es elproblema expondre mi codigo del buscardo un poco mas detallado :

Código PHP:
<?
/* SCRRIPT DE BUSQUEDA DE USUARIOS SENCILLA CON LA VARIANTE DE QUE
LA BASE DE DATOS HAY DATOS INSERTADOS CON MAYUSCULAS Y MINUSCULAS
RESUELTO EL PROBLEMA DE COMO ENCONTRARLOS CON LA FUNCION "UPPER"*/

//Hacemos la seleccion y busqueda de elementos en la tabla
include'conexiones.php'// Se supone que mi conexion ya esta editada


$sql="SELECT * FROM `members` where upper(nick) like upper('%$_POST[palabra]%')
        OR upper(name) LIKE upper('%$_POST[palabra]%')
        OR surnname LIKE'%$_POST[palabra]%'
        OR location LIKE '%$_POST[palabra]%'
        OR age LIKE '%$_POST[palabra]%'
        OR upper(sex) LIKE upper('%$_POST[palabra]%')
        OR char_level LIKE '%$_POST[palabra]%'
        OR upper(location) LIKE upper('%$_POST[palabra]%')
        OR upper(char_info)LIKE upper('%$_POST[palabra]%')"
;
      

$res=mysql_query($sql); 
// Si hay resultados crea una tabla y los muestra 
if ($rowmysql_num_rows($res)>0

echo 
'USERS FOUND :';


    echo
'<table width="100%" border="1" cellspacing="0" cellpadding="0" >';
      echo
'<tr>';
        echo
'<td><h2>Nick</td>'// aqui se supone iria un link para ordenar por nick
       
echo'<td><h2>Name</td>';
       echo 
'<td><h2>Surname</td>';
        echo
'<td><h2>Location</td>';
        echo
'<td><h2>Age</td>';
        echo
'<td><h2>Sex</td>';
        echo
'<td><h2>Char Name</td>';
        echo
'<td><h2>Level</td>';
        echo
'<td><h2>Char Info</td>';
        echo
'<td><h2>Edit</td>';
      echo
'</tr>';
      while (
$rowmysql_fetch_array($res)){

echo 
'<tr>';
echo 
'<td>'.$row[nick].'</td>';
echo 
'<td>'.$row[name].'</td>';
echo 
'<td>'.$row[surnname].'</td>';
echo 
'<td>'.$row[location].'</td>';
echo 
'<td>'.$row[age].'</td>';
echo 
'<td>'.$row[sex].'</td>';
echo 
'<td>'.$row[char_name].'</td>';
echo 
'<td>'.$row[char_level].'</td>';
echo 
'<td>'.$row[char_info].'</td>';
echo 
'<td> <input name="" type="checkbox" value="n" />';

echo
'</tr>';
}
    echo
'</table>';
    echo 
'<form id="form1" name="form1" method="post" action="buscar.php">';
echo 
'<table border="1">';
echo 
'<tr>';
echo 
'<td><input type="submit" name="Submit" value="Search" /></td>';
echo
'<td><input name="palabra" type="text" id="palabra" /></td>';
echo 
' </tr>';
echo 
'</table>';
echo 
'</form>';


else{
echo
'NO USER WAS FOUND IN THE DATA BASE';
echo 
'<form id="form1" name="form1" method="post" action="buscar.php">';
echo 
'<table border="1">';
echo 
'<tr>';
echo 
'<td><input type="submit" name="Submit" value="Search" /></td>';
echo
'<td><input name="palabra" type="text" id="palabra" /></td>';
echo 
' </tr>';
echo 
'</table>';
echo 
'</form>';
}
/*««« ESTE ESCRIPT FUE RALIZADO POR FALOPY*/

?>
  #4 (permalink)  
Antiguo 31/07/2006, 16:51
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 2 meses
Puntos: 10
Bueno... el ejemplo que te di es justo lo que necesitas.. solo tenes que adaptarlo.

Código PHP:
<?
/* SCRRIPT DE BUSQUEDA DE USUARIOS SENCILLA CON LA VARIANTE DE QUE
LA BASE DE DATOS HAY DATOS INSERTADOS CON MAYUSCULAS Y MINUSCULAS
RESUELTO EL PROBLEMA DE COMO ENCONTRARLOS CON LA FUNCION "UPPER"*/

//Hacemos la seleccion y busqueda de elementos en la tabla
include'conexiones.php'// Se supone que mi conexion ya esta editada


$sql="SELECT * FROM `members` where upper(nick) like upper('%$_POST[palabra]%')
        OR upper(name) LIKE upper('%$_POST[palabra]%')
        OR surnname LIKE'%$_POST[palabra]%'
        OR location LIKE '%$_POST[palabra]%'
        OR age LIKE '%$_POST[palabra]%'
        OR upper(sex) LIKE upper('%$_POST[palabra]%')
        OR char_level LIKE '%$_POST[palabra]%'
        OR upper(location) LIKE upper('%$_POST[palabra]%')
        OR upper(char_info)LIKE upper('%$_POST[palabra]%')"
;
        
if(isset(
$_GET['ordenarpor']))
    
$sql .= " ORDER BY '".$_GET['ordenarpor']."'"
else
     
$sql .= " ORDER BY 'name'"// campo por el que se ordena por defecto
      

$res=mysql_query($sql); 
// Si hay resultados crea una tabla y los muestra 
if ($rowmysql_num_rows($res)>0

echo 
'USERS FOUND :';


    echo
'<table width="100%" border="1" cellspacing="0" cellpadding="0" >';
      echo
'<tr>';
        echo
'<td><h2><a href="<?=$_SERVER['PHP_SELF']?>?ordenarpor=nick">Nick</a></td>'// aqui se supone iria un link para ordenar por nick
       
echo'<td><h2><<a href="<?=$_SERVER['PHP_SELF']?>?ordenarpor=name">Name</a></td>';
       echo 
'<td><h2>Surname</td>';
        echo
'<td><h2>Location</td>';
        echo
'<td><h2>Age</td>';
        echo
'<td><h2>Sex</td>';
        echo
'<td><h2>Char Name</td>';
        echo
'<td><h2>Level</td>';
        echo
'<td><h2>Char Info</td>';
        echo
'<td><h2>Edit</td>';
      echo
'</tr>';
      while (
$rowmysql_fetch_array($res)){

echo 
'<tr>';
echo 
'<td>'.$row[nick].'</td>';
echo 
'<td>'.$row[name].'</td>';
echo 
'<td>'.$row[surnname].'</td>';
echo 
'<td>'.$row[location].'</td>';
echo 
'<td>'.$row[age].'</td>';
echo 
'<td>'.$row[sex].'</td>';
echo 
'<td>'.$row[char_name].'</td>';
echo 
'<td>'.$row[char_level].'</td>';
echo 
'<td>'.$row[char_info].'</td>';
echo 
'<td> <input name="" type="checkbox" value="n" />';

echo
'</tr>';
}
    echo
'</table>';
    echo 
'<form id="form1" name="form1" method="post" action="buscar.php">';
echo 
'<table border="1">';
echo 
'<tr>';
echo 
'<td><input type="submit" name="Submit" value="Search" /></td>';
echo
'<td><input name="palabra" type="text" id="palabra" /></td>';
echo 
' </tr>';
echo 
'</table>';
echo 
'</form>';


else{
echo
'NO USER WAS FOUND IN THE DATA BASE';
echo 
'<form id="form1" name="form1" method="post" action="buscar.php">';
echo 
'<table border="1">';
echo 
'<tr>';
echo 
'<td><input type="submit" name="Submit" value="Search" /></td>';
echo
'<td><input name="palabra" type="text" id="palabra" /></td>';
echo 
' </tr>';
echo 
'</table>';
echo 
'</form>';
}
/*««« ESTE ESCRIPT FUE RALIZADO POR FALOPY*/

?>
__________________
oohh... quisiera ser godines!!!
  #5 (permalink)  
Antiguo 01/08/2006, 12:08
Avatar de Falopy  
Fecha de Ingreso: abril-2004
Ubicación: Zapopan Jalisco
Mensajes: 36
Antigüedad: 20 años
Puntos: 0
tira un error de parse ya revise comillas, puntoycomas...y no veo el por que lo marca Nota que al eliminar las comillas de la funcion $_SERVER['PHP_SELF'] funciona la busqueda mas no el link de hecho me mandal al navo diciendo que no tengo permiso para modificar la pagina ¬¬ que se devera?
  #6 (permalink)  
Antiguo 01/08/2006, 14:34
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 2 meses
Puntos: 10
perdon...

cambia esto
Código PHP:
echo'<td><h2><a href="<?=$_SERVER['PHP_SELF']?>?ordenarpor=nick">Nick</a></td>'; // aqui se supone iria un link para ordenar por nick
echo'<td><h2><<a href="<?=$_SERVER['PHP_SELF']?>?ordenarpor=name">Name</a></td>';
por esto
Código PHP:
echo'<td><h2><a href="'.$_SERVER['PHP_SELF'].'?ordenarpor=nick">Nick</a></td>'// aqui se supone iria un link para ordenar por nick
echo'<td><h2><<a href="'.$_SERVER['PHP_SELF'].'?ordenarpor=name">Name</a></td>'
__________________
oohh... quisiera ser godines!!!
  #7 (permalink)  
Antiguo 01/08/2006, 21:14
Avatar de Falopy  
Fecha de Ingreso: abril-2004
Ubicación: Zapopan Jalisco
Mensajes: 36
Antigüedad: 20 años
Puntos: 0
Cool mira que ya funciona bueno de cierto modo ya me hace la ordenacion pero ohh sorpresa y diras que, "Que lata" pero ahora resulta que haces la busqueda y me arroja los resultados tal cual supongamos que arrija 7 y si le doy que ordene esos 7 hace el query completo arrojando todos los resultados existentes.
mira que acavo de pensar en algo y si sentencio con algun if por ahi que el campo de busqueda deve tener informacion osea que se llene algo asi como

if( _$post[palabra]==" "){
//ejecute la query
}
o no se alguna idea?
  #8 (permalink)  
Antiguo 02/08/2006, 09:59
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 2 meses
Puntos: 10
no me habia fijado en el form de busqueda.
prueba con esto
Código PHP:
<?
/* SCRRIPT DE BUSQUEDA DE USUARIOS SENCILLA CON LA VARIANTE DE QUE
LA BASE DE DATOS HAY DATOS INSERTADOS CON MAYUSCULAS Y MINUSCULAS
RESUELTO EL PROBLEMA DE COMO ENCONTRARLOS CON LA FUNCION "UPPER"*/

//Hacemos la seleccion y busqueda de elementos en la tabla
include'conexiones.php'// Se supone que mi conexion ya esta editada

if(isset($_POST['palabra']))
    
$palabra $_POST['palabra'];
elseif(isset(
$_GET['palabra']))
    
$palabra $_GET['palabra'];
else
    
$palabra "";
    

$sql="SELECT * FROM `members` where upper(nick) like upper('%$palabra%')
        OR upper(name) LIKE upper('%$palabra%')
        OR surnname LIKE'%$palabra%'
        OR location LIKE '%$palabra%'
        OR age LIKE '%$palabra%'
        OR upper(sex) LIKE upper('%$palabra%')
        OR char_level LIKE '%$palabra%'
        OR upper(location) LIKE upper('%$palabra%')
        OR upper(char_info)LIKE upper('%$palabra%')"
;
        
if(isset(
$_GET['ordenarpor']))
    
$sql .= " ORDER BY '".$_GET['ordenarpor']."'"
else
     
$sql .= " ORDER BY 'name'"// campo por el que se ordena por defecto
      

$res=mysql_query($sql); 
// Si hay resultados crea una tabla y los muestra 
if ($rowmysql_num_rows($res)>0

echo 
'USERS FOUND :';


    echo
'<table width="100%" border="1" cellspacing="0" cellpadding="0" >';
      echo
'<tr>';
        echo
'<td><h2><a href="'.$_SERVER['PHP_SELF'].'?ordenarpor=nick?palabra='.$palabra.'">Nick</a></td>'// aqui se supone iria un link para ordenar por nick
       
echo'<td><h2><<a href="'.$_SERVER['PHP_SELF'].'?ordenarpor=name?palabra='.$palabra.'">Name</a></td>';
       echo 
'<td><h2>Surname</td>';
        echo
'<td><h2>Location</td>';
        echo
'<td><h2>Age</td>';
        echo
'<td><h2>Sex</td>';
        echo
'<td><h2>Char Name</td>';
        echo
'<td><h2>Level</td>';
        echo
'<td><h2>Char Info</td>';
        echo
'<td><h2>Edit</td>';
      echo
'</tr>';
      while (
$rowmysql_fetch_array($res)){

echo 
'<tr>';
echo 
'<td>'.$row[nick].'</td>';
echo 
'<td>'.$row[name].'</td>';
echo 
'<td>'.$row[surnname].'</td>';
echo 
'<td>'.$row[location].'</td>';
echo 
'<td>'.$row[age].'</td>';
echo 
'<td>'.$row[sex].'</td>';
echo 
'<td>'.$row[char_name].'</td>';
echo 
'<td>'.$row[char_level].'</td>';
echo 
'<td>'.$row[char_info].'</td>';
echo 
'<td> <input name="" type="checkbox" value="n" />';

echo
'</tr>';
}
    echo
'</table>';
    echo 
'<form id="form1" name="form1" method="post" action="buscar.php">';
echo 
'<table border="1">';
echo 
'<tr>';
echo 
'<td><input type="submit" name="Submit" value="Search" /></td>';
echo
'<td><input name="palabra" type="text" id="palabra" /></td>';
echo 
' </tr>';
echo 
'</table>';
echo 
'</form>';


else{
echo
'NO USER WAS FOUND IN THE DATA BASE';
echo 
'<form id="form1" name="form1" method="post" action="buscar.php">';
echo 
'<table border="1">';
echo 
'<tr>';
echo 
'<td><input type="submit" name="Submit" value="Search" /></td>';
echo
'<td><input name="palabra" type="text" id="palabra" /></td>';
echo 
' </tr>';
echo 
'</table>';
echo 
'</form>';
}
/*««« ESTE ESCRIPT FUE RALIZADO POR FALOPY*/

?>
los cambios que agregue son el if,elseif,else anterior a la consulta y que se agregue la palabra buscada en el enlace para ordenar.
__________________
oohh... quisiera ser godines!!!
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 01:42.