Foros del Web » Programando para Internet » PHP »

Hay forma de asignar campos de un select a variables?

Estas en el tema de Hay forma de asignar campos de un select a variables? en el foro de PHP en Foros del Web. Hay forma de asignar campos de un select a variables? Sería algo asi: $query = "SELECT $var1=id, $var2=nombre, $var3=apellido, $var4=mrin, $var5=mrinpadres FROM datos WHERE apellido ...
  #1 (permalink)  
Antiguo 25/08/2006, 13:43
Avatar de solecoza  
Fecha de Ingreso: julio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
Hay forma de asignar campos de un select a variables?

Hay forma de asignar campos de un select a variables?

Sería algo asi:

$query = "SELECT $var1=id, $var2=nombre, $var3=apellido, $var4=mrin, $var5=mrinpadres FROM datos WHERE apellido LIKE '%{$_POST['apellido']}%'";

  #2 (permalink)  
Antiguo 25/08/2006, 13:49
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 14 años
Puntos: 19
solecoza ... lo que vos queres hacer no es posible ...

lo que si podes hacer es tomar el recordset y con la funcion mysql_fetch_array($RS) podes asignar a las variables ...

un ejemplo:
Código PHP:
<?
$sql 
"select uno, dos, tres, cuatro from numeros";
$RS mysql_query($sql);
while(
$fila mysql_fetch_array($RS)){
        
$uno $fila['uno'];
        
$dos $fila['dos']
        
$tres $fila['tres']
        
$cuatro $fila['cuatro']
}
?>

En el link que te dejo vas a encontrar una explicacion muy clara, asi que me limito a explicar con palbras para no confundir...

saludos
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #3 (permalink)  
Antiguo 25/08/2006, 18:19
Avatar de solecoza  
Fecha de Ingreso: julio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
Uy gracias, tu respuesta fue clara y me sirvió mucho.
Te hago otra consulta:

Yo hago una busqueda de apellidos, por lo cual me va a traer varios, nunca un solo registro.
Hay manera de recorrer todo el resultado sin usar foreach?

O en todo caso te pasaría el código, porque no se qué parámetros ponerle al foreach en el caso que estoy usando yo, y me salen TODOS los campos, cuando yo solo quiero mostrar nombre y apellido.
Los demás datos los envío por el hipervínculo, por eso el select es *.

Te dejo todo acá y te agradezco de antemano!!!


<?
//datos DB
$bd_servidor = "localhost";
$bd_usuario = "X";
$bd_contrasenya = "X";
$bd_bdname = "X";
$bd_tabla = "datos";

$link = mysql_connect($bd_servidor,$bd_usuario,$bd_contras enya);

mysql_select_db($bd_bdname,$link);
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Apellido: <input type="text" name="apellido" size="25">
<input type="submit" name="buscar" value="buscar">
</form>

<?

if(isset($_POST['buscar']))
{

$query = "SELECT * FROM datos WHERE apellido LIKE '%{$_POST['apellido']}%'";
$result = mysql_query($query);
$found = false;

while($row = mysql_fetch_array($result)){
$id = $row['id'];
$nombre = $row['nombre'];
$apellido = $row['apellido'];
$matrimonio = $row['mrin'];
$padres = $row['mrinpadres'];

$found = true;

echo "<p>";

foreach($row as $nombre => $apellido) {

if(is_int($nombre)) {

continue;
}
echo "<a href=\"detail.php?id=$id&matrimonio=$matrimonio&pa dres=$padres\">".$nombre." ".$apellido."</a></br>";
}
echo "</p>";
}

if(!$found) {

echo "No se encontró el apellido introducido";

}
}
?>
  #4 (permalink)  
Antiguo 25/08/2006, 19:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y para que usas el "foreach()" si ya con el while() tienes tu $nombre?


Código PHP:

// etc tu codigo ...

// selecciono sòlo los campos que voy a necesitar (no todos!)
// y el criterio (WHERE .. )
$query "SELECT id,nombre,apellido FROM datos WHERE apellido LIKE '%{$_POST['apellido']}%'";

// Se ejecuta la consulta SQL (aplico mysql_error() por si hay errores en mi SQL .. sino, no los verè)
$result mysql_query($query) or die (mysql_error());

// se comprueba si tu consulta SQL ejecutada devuelve resultados.
if (mysql_num_rows($result) > 0){
   
// se recorre el resultado hasta que no existan más resultados que recorrer (he de ahì que se use un "while()".
  // las funciones _fethc_ de PHP lo que hacen es cada vez que se le llama.. te entregan un resultado (del record-set) y mueven el puntero hacia adelante una posición .. por eso tambien se usa como ves bajo un while()
  
while($row mysql_fetch_array($result)){
     echo 
"<a href=\"detail.php?id=".$id."\">".$nombre." ".$apellido."</a></br>";
  }
} else {
   echo 
"No hay resultados para su busqueda";
}
?> 

Los "detalles" no se suelen hacer como tu lo vas hacer .. es decir, pasando todos los campos obtenidos. Lo que se hace en tu script es obtener lo mìnimo que el listado presenta y su "ID" .. ese es que que -sólo- pasas a "deatalle.php" y este a su vez harà una consulta SQL por ese ID para obtener el total o los registros que ese "detalle" tenga que hacer.

detail.php
Código PHP:
<?
// conectas a tu BBDD .. seleccionas la BBDD a trabajar .. etc
$sql="SELECT * FROM datos WHERE id='".$_GET['id']."'";
$resultado=mysql_query($sql) or die (mysql_error());
// por "ID" al ser (supongo) unico .. buscamos una ocurrencia (resultado) .. 
if (mysql_num_rows($resultado) == 1){
   
// aquì uso mysql_fetch_row() por què sòlo quiero una "fila"
   
$row=mysql_fetch_row($resultado);
   echo 
$row['nombre'];
   
// etc .. presentas todos los campos que necesites ..
} else {
  echo 
"No se encuentra el registro solicitado";
}
?>
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 25/08/2006, 21:17
Avatar de solecoza  
Fecha de Ingreso: julio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
Muchas gracias por aclararme las dudas.
En cuanto a seleccionar todos los campos, era porque a detail.php no me da en realidad solo los detalles del sujeto buscado, sino que ejecuta otras consultas que supuestamente me traerán sus respectivos padres - conyugue - hijos.
Ya logré ver al conyugue e hijos cuando le enviaba id, mrin, y mrinpadres, pero usando tu nuevo codigo que me parece mucho mas correcto, ya me perdí de como hacerlo :D

Seguro voy a consultar para las consultas de padres-conyugues e hijos en breve ;)

GRACIAS CLUSTER!
  #6 (permalink)  
Antiguo 26/08/2006, 09:02
Avatar de solecoza  
Fecha de Ingreso: julio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
Dos consultas mas:

1) Al apretar BUSCAR en el formulario, anda todo ok. ¿Como hago para que si apreto enter tambien ande? Al apretar ENTER, me lista TODOS LOS registros, lo cual es trágico ya que son 110.000.

2) La busqueda distingue acentos, y "extractos" de apellidos (busca con un pedacito del texto), pero hay que ingresar el apellido con la primer letra en mayúscula, sino no lo encuentra. ¿Qué hacer?

Gracias de nuevo
  #7 (permalink)  
Antiguo 26/08/2006, 15:37
Avatar de solecoza  
Fecha de Ingreso: julio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
Botón BUSCAR y ENTER. Apellidos con mayúscula. (DOBLE DUDA)

Dos dudas:

1) Tengo un formulario de búsquedas: Al apretar BUSCAR en el formulario, el código PHP se ejecuta correctamente y también mi consulta, trayendo los campos que se pidan. Al apretar ENTER, me lista TODOS LOS registros, lo cual es trágico ya que son 100.000. ¿Como hago para que si apreto ENTER tambien ande como si apretara el boton de BUSCAR?

2) La busqueda distingue acentos, y "extractos" de apellidos (busca con un pedacito del mismo), pero hay que ingresar el apellido con la primer letra en mayúscula, sino no lo encuentra. ¿Qué hacer?

Gracias!
  #8 (permalink)  
Antiguo 26/08/2006, 19:34
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 11 años, 11 meses
Puntos: 5
Buenas, si mostrás el código tal vez alguien pueda darte una mano.

Suerte
Califa
  #9 (permalink)  
Antiguo 26/08/2006, 19:46
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.653
Antigüedad: 12 años, 5 meses
Puntos: 88
te respondo el segundo.
suponiendo que tengo esto "algunapellido" y por lo que entiendo lo necesitas asi "Algunapellido".
bueno para eso tomamos la variable que lo contiene
Código PHP:
$a="algunapellido";
$a=ucwords(strtolower($a)); 
eso hará que $a="Algunapellido".
ahora que si la primera tiene que se mayuscula y el resto puede ser minusculas o mayusculas solamente utiliza el ucwords esa función hace que la primera letra se vuelva mayuscula.

y en cuanto a tu primera pregunta pienso = q califa010.

salu2.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #10 (permalink)  
Antiguo 26/08/2006, 20:42
Avatar de solecoza  
Fecha de Ingreso: julio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
GRACIAS!!!
Ya puse lo que me diste para la primer mayúscula y anda de lujo!!!!

Les paso el código del form + el IF isset que lo único que verifica es que haya sido enviado el campo.


<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<span class="Estilo1">Apellido:</span>
<input name="apellido" type="text" class="Estilo1" size="25">
<input name="buscar" type="submit" class="Estilo1" value="buscar">
</form>

<?

if(isset($_POST['buscar']))
{
$a=$_POST ["apellido"];
$a=ucwords(strtolower($a));
$query = "SELECT id,nombre,apellido,mrin,mrinpadres FROM datos WHERE apellido LIKE '%$a%'";
//sigue mostrando datos, etc......
  #11 (permalink)  
Antiguo 27/08/2006, 06:38
Avatar de solecoza  
Fecha de Ingreso: julio-2006
Mensajes: 126
Antigüedad: 11 años, 5 meses
Puntos: 0
Ya logré que al apretar ENTER no liste todos los registros.
El problema sigue estando en otro lado: El botón BUSCAR pierde el foco al escribir el apellido, y al dar enter, no pasa nada. Trae una pagina en blanco con el form para buscar de nuevo.
Es problema del FOCUS!
Como le indico que luego de pasar el focus al text, y escribir, siempre esté el boton en focus?

  #12 (permalink)  
Antiguo 28/08/2006, 08:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por solecoza Ver Mensaje
Ya logré que al apretar ENTER no liste todos los registros.
El problema sigue estando en otro lado: El botón BUSCAR pierde el foco al escribir el apellido, y al dar enter, no pasa nada. Trae una pagina en blanco con el form para buscar de nuevo.
Es problema del FOCUS!
Como le indico que luego de pasar el focus al text, y escribir, siempre esté el boton en focus?

Los temas del "foco" y demás los debes resolver con javascript.

Lo que si que puedes hacer con PHP es "validar" que el dato a buscar no sea una cadena vacía o no exista.

Código PHP:
if (empty($_POST['apellido'])){
// Todo tu código actual del proceso de la consulta SQL para ofrecer sus resultados.
} else {
   echo 
"Por favor ... ingrese dato a buscar";

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 11:32.