Foros del Web » Programando para Internet » PHP »

ayuda con sistema de users

Estas en el tema de ayuda con sistema de users en el foro de PHP en Foros del Web. pues veran el sistema de usuarios ke uso en mi web es bastante simple el formulario de registro solo consta de nick, correo, clave, confirmar ...
  #1 (permalink)  
Antiguo 05/04/2005, 16:56
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
ayuda con sistema de users

pues veran el sistema de usuarios ke uso en mi web es bastante simple el formulario de registro solo consta de nick, correo, clave, confirmar clave y descripcion, pero a la tabla yo le hice unas añadiduras lo cual me keda asi:

Código PHP:
CREATE TABLE `users` (
  `
idint(4NOT NULL auto_increment,
  `
nickvarchar(30NOT NULL default '',
  `
passvarchar(30NOT NULL default '',
  `
emailvarchar(50NOT NULL default '',
  `
fechaint(15NOT NULL default '0'// esta es la fecha de registro
  
`edadint(2NOT NULL default '0',
  `
sexoenum('0','1'NOT NULL default '0',
  `
levelint(2NOT NULL default '0',
  `
rollolongtext NOT NULL,
  `
enkestachar(2NOT NULL default ''// este campo es para una encuesta en la ke mas adelante pedire su ayuda
  
KEY `id` (`id`)
TYPE=MyISAM AUTO_INCREMENT=153 
el detalle esta en ke los usuarios no pueden editar sus perfiles por si mismos, pero tal script ya lo tengo solo ke kisiera ke cuando el usuario acceda a tal script editar.php le aparezca el formulario con todos los datos ke estan en la tabla menos el campo enkesta y level ya ke este solo lo hare yo como admin

Código PHP:
<?   
include("config.php");

if (
$editar) {  // si viene del form de abajo edita el perfil
      
$query "UPDATE users SET email='$email' ,rollo='$rollo' WHERE nick='$_SESSION[usuario]'"mysql_query($query);
      echo 
"<b>Perfil Editado<br></b>";
}
if (empty(
$editar)) {  // si la variable editar esta vacia, osea k no tiene nada muestra el form

$query mysql_query("SELECT * FROM `users`  WHERE nick='$_SESSION[usuario]' ");  // hacemos un query para seleccionar los datos del usuario, y para que pueda cambiarlo
while($row=mysql_fetch_array($query))  
{

echo 
'<br>  
Pulsa enviar para actualizar los datos<br>  
<form method="post" action="editar.php">
Nick: <input type="text" name="nick" value="'
.$row["nick"].'" size="30" readonly><br>
email: <input type="text" name="email" value="'
.$row["email"].'"size="50"><br>
password: <input type="text" name"pass" value="'
.$row["pass"].'" size="30"><br>
Rollo: <textarea name="rollo" cols="30" rows="10">'
.$row["rollo"].'</textarea><br>
<input type="submit" name="editar" value="Enviar">
</form>'
;  


}
}

?>
pero este script apenas modifica los datos ingresados cuando el usuario se registro, o sea, clave, correo y descripcion, lo ke yo kiero es ke agregue los otros ke yo puse o sea sexo: (estilo radio buton), edad (estilo lista desplegable) ah y tb me gustaria ke pongan su fecha de nacimiento, (al estilo de las altas en hotmail con listas desplegables), Pais (con lista desplegable) y ciudad (cuadro de texto), solo ke para estos no se ke tipos de campos utilizar por eso recurro a su ayuda.

Si necesitan algo mas me dicen, gracias de antemano
  #2 (permalink)  
Antiguo 05/04/2005, 22:55
 
Fecha de Ingreso: marzo-2005
Mensajes: 12
Antigüedad: 19 años
Puntos: 0
las lista desplegables se utilizan con la etiqueta <select></select>
ej)
<select name='nombre'>
<option value='opc1'>textolista1</option>
<option value='opc2'>textolista2</option>
<option value='opc3'>textolista3</option>
</select>

y este seria el script para poder seleccionar la opcion que esta almacenada en las DB que lo pones despues del select
<? echo "<script>".
"nombreformulario".name_del_select.value = $row[campo de la base];".
"</script>";
?>
  #3 (permalink)  
Antiguo 06/04/2005, 01:46
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... solo tienes que asignarles los valores extraidos de tu BD a tu objeto del formulario:
- Para un textbox debes indicarle el valor dentro de la misma etiqueta:
Código PHP:
<input type="text" name="..." ... value="<?=$row['campo']" ?>">
- Para un textarea imprimir el valor entre etiquetas:
Código PHP:
<textarea name="...." ....><?=$row['campo'?></textarea>
- Para una lista despegable debes imprimir la palabra "selected" en la etiqueta del option que debe estar seleccionado
Código PHP:
// por ejemplo un campo edad... generamos edades desde los 18 a los 90 años dinámicamente
// y recuperamos la edad del usuario con $row['edad']
<select name="edad">
<?
for($i=18$i<=90$i++){
     echo 
"<option value=\"".$i."\"";
     if(
$row['edad']==$i) echo " selected";
     echo 
">".$i."</option>";
}
?>
</select>
- Para el caso de ratios y chechboxes debemos imprimir la palabra "checked" si debe estar seleccionado:
Código PHP:
// suponemos que guardamos en la BD 1 si el checkbox/radio esta seleccionado 
<input type="checkbox" name="..." <? if($row['columna']==1) echo "checked"?>>
y... creo son los casos básicos.. sencillo.. Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #4 (permalink)  
Antiguo 06/04/2005, 09:26
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
y como podria hacer una lista desplegable con los paises?? ke tipo de dato debo asignarle al campo pais en mi base de datos?, por ahi me dijeron ke anidara todos los paises en un array, pero mis escasos conocimientos de PHP me lo impiden, ayuda plz :)
  #5 (permalink)  
Antiguo 06/04/2005, 16:24
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Todo depende de la estructura y las necesidades de tu sitio... si esa lista despegable de paises solo lo ocuparás para estos formularios (registrarse/modificar) no veo la necesidad de complicarse más de lo necesario... la opción que te menciona Nacho es ideal...

Lo que te sugieren de meter la lista en un array funciona así:
Código PHP:
<?php
$paises
= array("Argentina""Brasil""Colombia""Dominicana, Rep.""España""Fracia"); // etc :-)

for ($i=0$i<count($paises); $i++){
     echo 
"<option value=\"".$paises[$i]."\"";
     if (
$row['pais']==$paises[$i]) echo " selected";
     echo 
">".$paises[$i];

?>
... ó si dicha lista la tienes en una BD podrías desplegarla desde ahí... el funcionamiento es similar y hay un ejemplo para hacer eso en las FAQ... así que date una vuelta.

Dos links más:
http://www.php.net/manual/es/language.types.array.php
http://www.php.net/manual/es/function.array.php

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #6 (permalink)  
Antiguo 06/04/2005, 17:43
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
y ese codigo ke has puesto como lo adhiero al code de editar ke puse arriba estoy tratando de hacerlo pero me salen muchos errores :(
  #7 (permalink)  
Antiguo 06/04/2005, 17:49
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... no hice el trabajo por tí... simplemente es un ejemplo gráfico.. tienes que adaptarlo a tus necesidades.
Así de reojo.. no veo complicaciones.. simplemente ponerlo todo dentro del While y cambias $row['pais'] por $row['tu_campo']
... Cabe decir que para que la igualdad se cumpla... los datos que extraigas de la BD debe de coincidir exactamente con alguno del arreglo.
... No somos adivinos... si te da errrores deberias enunciarlos EXACTAMENTE como te aparecen...

Suerte! .. incisto en el código de Nacho
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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:26.