Foros del Web » Programando para Internet » PHP »

Variables? como las uso ? =RESUELTO=

Estas en el tema de Variables? como las uso ? =RESUELTO= en el foro de PHP en Foros del Web. Bueno como ya deben a haberse dado cuenta por mis post soy nuevo con PHP y ahora lo que quiero hacer es por ejemplo precionar ...
  #1 (permalink)  
Antiguo 14/07/2005, 04:36
 
Fecha de Ingreso: junio-2005
Mensajes: 111
Antigüedad: 12 años, 6 meses
Puntos: 0
Exclamación Variables? como las uso ? =RESUELTO=

Bueno como ya deben a haberse dado cuenta por mis post soy nuevo con PHP y ahora lo que quiero hacer es por ejemplo precionar un link y que me cambie mi QUERY, ahora tengo esto: ORDER BY Surname ASC"; y precionando el link que me cambie a esto: ORDER BY Firstname ASC";

Asumo que al precionar el link cambiara el contenido de la pagina automaticamente no?

gracias de ante mano.

Código PHP:
<?php
mysql_select_db
($database_conn_newland$conn_newland);
$query_rs_countries "SELECT ID, Surname FROM tbl_instructores ORDER BY Surname ASC";
$rs_countries mysql_query($query_rs_countries);
$row_rs_countries mysql_fetch_assoc($rs_countries);
?>

Última edición por _Lobo_; 15/07/2005 a las 01:10
  #2 (permalink)  
Antiguo 14/07/2005, 04:46
Avatar de illman  
Fecha de Ingreso: mayo-2001
Mensajes: 115
Antigüedad: 16 años, 7 meses
Puntos: 0
Método GET y POST

Deberías leer algún manual sobre pasar variables de script a script. Básicamente hay dos métodos GET (por url) y POST (por formulario). Estudia las diferencias y utiliza el que más te convenga.

Para hacer lo que pides:

Método URL - GET

imaginemos que tiene el enlace

<a href="DESTINO.php?orden=Name">Ordenar por nombre</a>

Al hacer click en este enlace lo que ocurre es que se carga la página DESTINO.php y ésta recibe una varible que se almacena en el array GET, para acceder a ella.

<?
$orden=$_GET['orden'];
// Comprobamos que la variable no esta vacia, y si lo esta le damos el valor predeterminado.
if (empty($orden)) { $orden="Surname"; } // se ordenará por apellido
//en la selección
$query_rs_countries = "SELECT ID, Surname FROM tbl_instructores ORDER BY $orden ASC";
?>

Con el método POST, la forma de pasar las varibles se hace a través de un formlario, en la página DESTINO.php la única diferencia sería la de cambiar $_GET por $_POST

Cosas a tener en cuenta, los espacios son interpretados como %20 al ser pasados por URL,... los carácteres especiales pueden traerte de cabeza en alguna ocasión, lee sobre addslashes y stripslashes, htmlspecial...

Toda esta información, y de hecho toda la información, esta en estos foros y en el manual de PHP, que te recomiendo tengas como página de consulta...
Un saludo
  #3 (permalink)  
Antiguo 14/07/2005, 04:50
Avatar de abe_k  
Fecha de Ingreso: diciembre-2004
Mensajes: 286
Antigüedad: 13 años
Puntos: 2
refresco

Hombre, aqui no ha quedado muy claro como has hecho el link. PAra que eso suceda, siempre tienes que refrescar la pagina, y al volver a entrar que, de alguna manera acceda a la otra consulta, mas o menos:

Código:
<?php

//si entra la primera vez $validar=0
if((empty($validar)||($validar ==0))
$consulta1

// al hacer link $ validar =1
else if((!empty($validar)||($validar ==1))
$consulta2

link1(indice.php?validar=0)
link2(indice.php?validar=1)

?>
Te lo he dejado indicado, si tienes dudas... me lo preguntas jejeje

espero servirte de ayuda
__________________
abe_k

Si quieres visitar Andorra, consulta la guia de este pequeño pais y conseguiras toda la información que necesites. La guia del visitante en Andorra
  #4 (permalink)  
Antiguo 14/07/2005, 04:52
Avatar de abe_k  
Fecha de Ingreso: diciembre-2004
Mensajes: 286
Antigüedad: 13 años
Puntos: 2
falle

<?php

//si entra la primera vez validar=0
if((empty($_GET[validar])||($_GET[validar] ==0))
$consulta1

// al hacer link $ validar =1
else if((!empty($_GET[validar])||($_GET[validar]))
$consulta2

link1(indice.php?validar=0)
link2(indice.php?validar=1)

?>

Perdon, me equivoque anteriormente, falto el metodo de envio al server GET

lo siento
__________________
abe_k

Si quieres visitar Andorra, consulta la guia de este pequeño pais y conseguiras toda la información que necesites. La guia del visitante en Andorra
  #5 (permalink)  
Antiguo 14/07/2005, 06:19
 
Fecha de Ingreso: junio-2005
Mensajes: 111
Antigüedad: 12 años, 6 meses
Puntos: 0
Pregunta

Illman: gracias por tu explicacion ya me va quedando mas claro como funciona esto :) aunque quiero usar una sola pagina y no dos
abe_k:
Cita:
Iniciado por abe_k
Hombre, aqui no ha quedado muy claro como has hecho el link.
Bueno lo que quiero es precionar un boton y que en la misma pagina sin ir a otra me hara esta demanda:

Boton Ordenar por apellido
Código PHP:
<?php 
mysql_select_db
($database_conn_newland$conn_newland); 
$query_rs_countries "SELECT ID, Surname FROM tbl_instructores ORDER BY Surname ASC"
$rs_countries mysql_query($query_rs_countries); 
$row_rs_countries mysql_fetch_assoc($rs_countries); 
?>
Preciono el otro boton: Ordenar por Nombre
Código PHP:
<?php 
mysql_select_db
($database_conn_newland$conn_newland); 
$query_rs_countries "SELECT ID, Surname FROM tbl_instructores ORDER BY Firstname ASC"
$rs_countries mysql_query($query_rs_countries); 
$row_rs_countries mysql_fetch_assoc($rs_countries); 
?>
la unica linea que cambia es esta:
$query_rs_countries = "SELECT ID, Surname FROM tbl_instructores ORDER BY Firstname ASC";

Ahora como logro hacer que al precionar estos botones (links) se actualice la pagina ordenando los datos por Apellido o Nombre?
  #6 (permalink)  
Antiguo 14/07/2005, 07:10
Avatar de illman  
Fecha de Ingreso: mayo-2001
Mensajes: 115
Antigüedad: 16 años, 7 meses
Puntos: 0
ejemplo

Enlaces:
<a href="<? $_SERVER['PHP_SELF']; ?>?orden=Surname">Ordenar por nombre</a> |
<a href="<? $_SERVER['PHP_SELF']; ?>?orden=Firstname ">Ordenar por apellido</a>
Código PHP:
// al pulsar en este link pasas la variable orden por URL
// $_SERVER['PHP_SELF'] es el nombre de la página php 
<?
// Reocger el valor de la variable orden
$orden=$_GET['orden'];
// Comprobamos que la variable no esta vacia, y si lo esta le damos el valor predeterminado, en este caso Surname.
if (empty($orden)) { $orden="Surname"; } // se ordenará por apellido

mysql_select_db($database_conn_newland$conn_newland);
$query_rs_countries "SELECT ID, Surname FROM tbl_instructores ORDER BY $orden ASC";
$rs_countries mysql_query($query_rs_countries);
$row_rs_countries mysql_fetch_assoc($rs_countries);
?>
si solo deseas utilizar una página deja $_SERVER['PHP... si quieres que cada query se ejecute en una página diferente cambia $_SERVER[PHP_... por el nombre del archivo PHP.

Espero haberme explicado mejor.
  #7 (permalink)  
Antiguo 14/07/2005, 07:51
 
Fecha de Ingreso: junio-2005
Mensajes: 111
Antigüedad: 12 años, 6 meses
Puntos: 0
illman: Eres un genio! ;) perdoname a mi por no haberme explicado, ahora mismo me pongo a jugar con tu script muchisimas gracias.
  #8 (permalink)  
Antiguo 14/07/2005, 08:23
 
Fecha de Ingreso: junio-2005
Mensajes: 111
Antigüedad: 12 años, 6 meses
Puntos: 0
ok no se si estoy haciendo algo mal pero no me funciona

Código PHP:
<?php require_once('../../Connections/conn_newland.php'); ?>
<? 
// al pulsar en este link pasas la variable orden por URL 
// $_SERVER['PHP_SELF'] es el nombre de la página php 
// Reocger el valor de la variable orden 
$orden=$_GET['orden']; 
// Comprobamos que la variable no esta vacia, y si lo esta le damos el valor predeterminado, en este caso Surname. 
if (empty($orden)) { $orden="Surname"; } // se ordenará por apellido 

mysql_select_db($database_conn_newland$conn_newland); 
$query_rs_countries "SELECT ID, Surname FROM tbl_instructores ORDER BY $orden ASC"
$rs_countries mysql_query($query_rs_countries); 
$row_rs_countries mysql_fetch_assoc($rs_countries); 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>

<body>
<a href="<? $_SERVER['PHP_SELF']; ?>?orden=Surname">Ordenar por nombre</a> |
<a href="<? $_SERVER['PHP_SELF']; ?>?orden=Firstname ">Ordenar por apellido</a>
  #9 (permalink)  
Antiguo 14/07/2005, 09:13
Avatar de illman  
Fecha de Ingreso: mayo-2001
Mensajes: 115
Antigüedad: 16 años, 7 meses
Puntos: 0
te da algún error un error?

no estas imprimiendo nada en pantalla, que resultado esperas obtener?
  #10 (permalink)  
Antiguo 14/07/2005, 09:22
 
Fecha de Ingreso: junio-2005
Mensajes: 111
Antigüedad: 12 años, 6 meses
Puntos: 0
bueno no me da ningun error, simplemete que al precionar los enlaces no cambia el orden de los datos, no se ordenan por apellido/nombre se quedan organisados por default por apellidos

codigo:
Código PHP:
<?php require_once('../../Connections/conn_newland.php'); ?>
<?php
mysql_select_db
($database_conn_newland$conn_newland);
$query_rs_countries "SELECT ID, Surname FROM tbl_instructores ORDER BY Surname ASC";
$rs_countries mysql_query($query_rs_countries);
$row_rs_countries mysql_fetch_assoc($rs_countries);
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>

<body>
<?php 

// Database Connection 
mysql_select_db('newland_tours'mysql_pconnect('localhost','root','root')) or die (mysql_error()); 

// If current page number, use it 
// if not, set one! 

if(!isset($_GET['page'])){ 
    
$page 1
} else { 
    
$page $_GET['page']; 


// Define the number of results per page 
$max_results 50

// Figure out the limit for the query based 
// on the current page number. 
$from = (($page $max_results) - $max_results); 

// Perform MySQL query on only the current page number's results 

$sql mysql_query("SELECT * FROM tbl_instructores ORDER BY Surname ASC LIMIT $from, $max_results"); 

while(
$row_rs_countries mysql_fetch_array($sql)){ 

// Meter los datos que se desean paginar 
//echo $row_rs_countries["Surname"]. " <b>ID:</b> " . $row_rs_countries['ID'] ." | ". ' <a href="instructores_update.php?ID='.$row_rs_countries["ID"].'">Modify this countrys profile</a> '." | ".'<a href="delete_processor.php?ID='.$row_rs_countries['ID'].'">Delete</a>'."<br />"; 
echo " <b>Surname:</b> ".$row_rs_countries["Surname"]. " <b>Firstname:</b> " $row_rs_countries['Firstname'] ." | ".' <a href="instructores_update.php?ID='.$row_rs_countries["ID"].'">Modify current profile</a> '." | "' <a href="instructores_insert.php">Add new profile</a> '." | ".'<a href="delete_processor.php?ID='.$row_rs_countries['ID'].'">Delete current profile</a>'."<br />"



// Figure out the total number of results in DB: 
$total_results mysql_result(mysql_query("SELECT COUNT(*) as Num FROM tbl_instructores"),0); 

// Figure out the total number of pages. Always round up using ceil() 
$total_pages ceil($total_results $max_results); 

// Build Page Number Hyperlinks 
echo "<center>Select a Page<br />"

// Build Previous Link 
if($page 1){ 
    
$prev = ($page 1); 
    echo 
"<a href=\"".$_SERVER['PHP_SELF']."?page=$prev\"><<Previous</a> "


for(
$i 1$i <= $total_pages$i++){ 
    if((
$page) == $i){ 
        echo 
"$i "
        } else { 
            echo 
"<a href=\"".$_SERVER['PHP_SELF']."?page=$i\">$i</a> "
    } 


// Build Next Link 
if($page $total_pages){ 
    
$next = ($page 1); 
    echo 
"<a href=\"".$_SERVER['PHP_SELF']."?page=$next\">Next>></a>"

echo 
"</center>"
?> 

Alright, it looks like I have some explaining to do! Let's break the code 

</body>
</html>

Última edición por _Lobo_; 14/07/2005 a las 09:33
  #11 (permalink)  
Antiguo 14/07/2005, 11:56
Avatar de illman  
Fecha de Ingreso: mayo-2001
Mensajes: 115
Antigüedad: 16 años, 7 meses
Puntos: 0
esta línea

Hola de nuevo, en esta línea de tu código

Código PHP:
$sql mysql_query("SELECT * FROM tbl_instructores ORDER BY Surname ASC LIMIT $from, $max_results"); 
repites el query, aquí es donde debes sutituir "Surname" x "$orden"

Código PHP:
$sql mysql_query("SELECT * FROM tbl_instructores ORDER BY $orden ASC LIMIT $from, $max_results"); 
con ello te quedaría:

Código PHP:
<?php require_once('../../Connections/conn_newland.php'); ?>
<?php
mysql_select_db
($database_conn_newland$conn_newland);
$query_rs_countries "SELECT ID, Surname FROM tbl_instructores ORDER BY Surname ASC";
$rs_countries mysql_query($query_rs_countries);
$row_rs_countries mysql_fetch_assoc($rs_countries);
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>

<body>
<?php

// Database Connection
mysql_select_db('newland_tours'mysql_pconnect('localhost','root','root')) or die (mysql_error());

// If current page number, use it
// if not, set one!

if(!isset($_GET['page'])){
    
$page 1;
} else {
    
$page $_GET['page'];
}

$orden=$_GET['orden'];
// Comprobamos que la variable no esta vacia, y si lo esta le damos el valor predeterminado, en este caso Surname.
if (empty($orden)) { $orden="Surname"; } // se ordenará por apellido

// Define the number of results per page
$max_results 50;

// Figure out the limit for the query based
// on the current page number.
$from = (($page $max_results) - $max_results);

// Perform MySQL query on only the current page number's results

$sql mysql_query("SELECT * FROM tbl_instructores ORDER BY $orden ASC LIMIT $from, $max_results");

while(
$row_rs_countries mysql_fetch_array($sql)){

// Meter los datos que se desean paginar
//echo $row_rs_countries["Surname"]. " <b>ID:</b> " . $row_rs_countries['ID'] ." | ". ' <a href="instructores_update.php?ID='.$row_rs_countries["ID"].'">Modify this countrys profile</a> '." | ".'<a href="delete_processor.php?ID='.$row_rs_countries['ID'].'">Delete</a>'."<br />";
echo " <b>Surname:</b> ".$row_rs_countries["Surname"]. " <b>Firstname:</b> " $row_rs_countries['Firstname'] ." | ".' <a href="instructores_update.php?ID='.$row_rs_countries["ID"].'">Modify current profile</a> '." | "' <a href="instructores_insert.php">Add new profile</a> '." | ".'<a href="delete_processor.php?ID='.$row_rs_countries['ID'].'">Delete current profile</a>'."<br />";

}

// Figure out the total number of results in DB:
$total_results mysql_result(mysql_query("SELECT COUNT(*) as Num FROM tbl_instructores"),0);

// Figure out the total number of pages. Always round up using ceil()
$total_pages ceil($total_results $max_results);

// Build Page Number Hyperlinks
echo "<center>Select a Page<br />";

// Build Previous Link
if($page 1){
    
$prev = ($page 1);
    echo 
"<a href=\"".$_SERVER['PHP_SELF']."?page=$prev\"><<Previous</a> ";
}

for(
$i 1$i <= $total_pages$i++){
    if((
$page) == $i){
        echo 
"$i ";
        } else {
            echo 
"<a href=\"".$_SERVER['PHP_SELF']."?page=$i\">$i</a> ";
    }
}

// Build Next Link
if($page $total_pages){
    
$next = ($page 1);
    echo 
"<a href=\"".$_SERVER['PHP_SELF']."?page=$next\">Next>></a>";
}
echo 
"</center>";
?>

Alright, it looks like I have some explaining to do! Let's break the code

</body>
</html>
Creo que así debería funcionarte, colocando los enlaces donde tu quieras
Un saludo
  #12 (permalink)  
Antiguo 15/07/2005, 01:10
 
Fecha de Ingreso: junio-2005
Mensajes: 111
Antigüedad: 12 años, 6 meses
Puntos: 0
Ya funciona! Muchas gracias por tu ayuda :)
  #13 (permalink)  
Antiguo 15/07/2005, 02:41
Avatar de illman  
Fecha de Ingreso: mayo-2001
Mensajes: 115
Antigüedad: 16 años, 7 meses
Puntos: 0
jejejeje

De nada me alegro de haberte ayudado
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 21:32.