Foros del Web » Programando para Internet » PHP »

html form + php

Estas en el tema de html form + php en el foro de PHP en Foros del Web. Hola gente me llamo Adrian, Me estoy iniciando en el mundo PHP, tengo una buena base de HTML y un poco de lenguaje C. Estoy ...
  #1 (permalink)  
Antiguo 22/08/2011, 15:02
glx
 
Fecha de Ingreso: agosto-2011
Mensajes: 3
Antigüedad: 13 años, 3 meses
Puntos: 0
html form + php

Hola gente me llamo Adrian,

Me estoy iniciando en el mundo PHP, tengo una buena base de HTML y un poco de lenguaje C.

Estoy armando un sistema para uso personal en mi trabajo y estoy medio trabado con algunas cosas que no entiendo, tengo instalado el vertrigo, arme la table, la conexion a la base es satisfactoria pero cuando creo el formulario para cargar informacion me tira error y no lo puedo solucionar:

<?php
include "conexion.php";
if (!isset($accion)){
echo"
<html>
<head><title>Guardar datos en la base</title></head>
<body>
<h3>Guardar datos en la base</h3>
<form name="form1" method="post"
action="guardar.php?accion=guardar">
<p>id:<br>
<input type="text" name="id">
</p>
<p>Nombre:<br>
<input type="text" name="nombre">
</p>
<p>Apellido:<br>
<input type="text" name="apellido">
</p>
<p>DNI:<br>
<input type="text" name="dni">
</p>
<p>
<input type="submit" name="Submit" value="Guardar Datos">
</p>
</form>
</body>
</html>";
}elseif($accion=="guardar"){
include"conexion.php";
$result=mysql_query("INSERT INTO usuarios (id,nombre, apellido, dni)
VALUES ('',$nombre,$apellido,$dni) ",$conexion);
echo" <html>
<head></head>
<body>
<h3>Los datos han sido guardados</h3>
</body>
</html>";
}
include "cerrar_conexion.php";
?>

Este es el error :

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\Program Files\VertrigoServ\www\1\guardar.php on line 10


Saludos y gracias.

De paso si alguien me explica esta accion que no la entiendo

action="guardar.php?accion=guardar">
  #2 (permalink)  
Antiguo 22/08/2011, 15:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: html form + php

Es importante que aprendas a utilizar las comillas correctamente, no hay necesidad de meter HTML en cadenas de PHP sin motivos.

Te invito a leer el siguiente tema, te ayudará a usar mejor las comillas:
http://www.forosdelweb.com/f18/como-...s-bien-588701/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 22/08/2011, 15:11
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: html form + php

Yo te recomiendo que aprendas a usar las comillas con lo que dice @pateketrueke y luego leas esto:

Saliendo de HTML

Puedes abrir y cerrar PHP las veces que quieras y combinar HTML y PHP sin necesidad de usar echo.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #4 (permalink)  
Antiguo 22/08/2011, 15:11
Avatar de jatg  
Fecha de Ingreso: abril-2011
Ubicación: caracas
Mensajes: 152
Antigüedad: 13 años, 7 meses
Puntos: 15
Respuesta: html form + php

hola david , efectivamente el error lo tienes en las comillas dobles exactamente en la etiqueta form, cambia las comillas dobles por simples y listo, cualquiercosa pregunta estamos para ayudar.

atte

ingeniero: jose alexis trujillo

caracas-venezuela

nota de hecho la correcta scritura del script php seria esta

__________________
www.josealexis.net

Última edición por jatg; 22/08/2011 a las 15:26 Razón: correccion
  #5 (permalink)  
Antiguo 22/08/2011, 15:27
Avatar de jatg  
Fecha de Ingreso: abril-2011
Ubicación: caracas
Mensajes: 152
Antigüedad: 13 años, 7 meses
Puntos: 15
Respuesta: html form + php

nota de hecho la correcta scritura del script php seria esta


php

Código PHP:
Ver original
  1. <?php
  2. include ("conexion.php");
  3. if (!isset($accion)){
  4.  
  5.  
  6. }elseif($accion=="guardar"){
  7. include"conexion.php";
  8. $result=mysql_query("INSERT INTO usuarios (id,nombre, apellido, dni)
  9. VALUES ('',$nombre,$apellido,$dni) ",$conexion);
  10. }
  11. include ("cerrar_conexion.php");
  12. ?>
__________________
www.josealexis.net
  #6 (permalink)  
Antiguo 22/08/2011, 15:33
Avatar de jatg  
Fecha de Ingreso: abril-2011
Ubicación: caracas
Mensajes: 152
Antigüedad: 13 años, 7 meses
Puntos: 15
Respuesta: html form + php

De hecho te indico que la mejor forma de hacerlo para que no te compliques mucho es crear dos archivos uno .html y otro .php

el .html lo puedes llamar formulario.html y le agregas este codigo
<html>
<head><title>Guardar datos en la base</title></head>
<body>
<h3>Guardar datos en la base</h3>
<form name="form1" method="post"
action="guardar.php?accion=guardar">
<p>id:<br>
<input type="text" name="id">
</p>
<p>Nombre:<br>
<input type="text" name="nombre">
</p>
<p>Apellido:<br>
<input type="text" name="apellido">
</p>
<p>DNI:<br>
<input type="text" name="dni">
</p>
<p>
<input type="submit" name="Submit" value="Guardar Datos">
</p>
</form>
</body>
</html>";


y al otro lo puedes llamar registrar.php

y seria algo asi:

<?php
include ("conexion.php");
if (!isset($accion)){


}elseif($accion=="guardar"){
include"conexion.php";
$result=mysql_query("INSERT INTO usuarios (id,nombre, apellido, dni)
VALUES ('',$nombre,$apellido,$dni) ",$conexion);
}
include ("cerrar_conexion.php");
?>

Pero recuerda que en la variable del formulario " la del boton" debes asignarle al action que llame al archivo registrar.php , como esta arriba para que te funcione suerte.


atte

ingeniero; jose alexis trujillo

caracas-venezuela
__________________
www.josealexis.net
  #7 (permalink)  
Antiguo 22/08/2011, 16:08
glx
 
Fecha de Ingreso: agosto-2011
Mensajes: 3
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: html form + php

Gracias por las respuestas, sin entender el porque de la solucion propuesta realice el cambio y todo sigue igual.

No logro entender esta sentencia, por lo tanto no puedo razonar el criterio aplicado.

action="guardar.php?accion=guardar"

Generalmente encuentro action=xxxx.php pero lo que sigue despues me marea ?accion=guardar
  #8 (permalink)  
Antiguo 22/08/2011, 16:38
Avatar de jatg  
Fecha de Ingreso: abril-2011
Ubicación: caracas
Mensajes: 152
Antigüedad: 13 años, 7 meses
Puntos: 15
Respuesta: html form + php

Cita:
Iniciado por glx Ver Mensaje
Gracias por las respuestas, sin entender el porque de la solucion propuesta realice el cambio y todo sigue igual.

No logro entender esta sentencia, por lo tanto no puedo razonar el criterio aplicado.

action="guardar.php?accion=guardar"

Generalmente encuentro action=xxxx.php pero lo que sigue despues me marea ?accion=guardar
ok te lo voy a explicar detalladamente y pasito a pasito presta atencion

crea una base de datos y llamala users

user.sql

CREATE TABLE `users` (
`ID` int(11) NOT NULL auto_increment,
`Username` varchar(255) NOT NULL,
`Password` varchar(255) NOT NULL,
`Temp_pass` varchar(55) default NULL,
`Temp_pass_active` tinyint(1) NOT NULL default '0',
`Email` varchar(255) NOT NULL,
`Active` int(11) NOT NULL default '0',
`Level_access` int(11) NOT NULL default '2',
`Random_key` varchar(32) default NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Username` (`Username`),
UNIQUE KEY `Email` (`Email`)
) ENGINE=MyISAM;


ok ahora crea un formulario .html y llamalo registrar.html


al primero lo llamaremos registrar.html

registrar.html

Código PHP:
Ver original
  1. <?php
  2. require_once('db.php');
  3. include('functions.php');
  4.  
  5.     if(isset($_POST['register']))
  6.     {
  7.         if($_POST['username']!='' && $_POST['password']!='' && $_POST['password']==$_POST['password_confirmed'] && $_POST['email']!='' && valid_email($_POST['email'])==TRUE && checkUnique('Username', $_POST['username'])==TRUE && checkUnique('Email', $_POST['email'])==TRUE)
  8.         {
  9.        
  10.             $query = mysql_query("INSERT INTO users (`Username` , `Password`, `Email`, `Random_key`) VALUES ('".mysql_real_escape_string($_POST['username'])."', '".mysql_real_escape_string(md5($_POST['password']))."', '".mysql_real_escape_string($_POST['email'])."', '".random_string('alnum', 32)."')") or die(mysql_error());
  11.            
  12.             $getUser = mysql_query("SELECT ID, Username, Email, Random_key FROM users WHERE Username = '".mysql_real_escape_string($_POST['username'])."'") or die(mysql_error());
  13.    
  14.             if(mysql_num_rows($getUser)==1)
  15.             {//there's only one MATRIX :PP
  16.            
  17.                 $row = mysql_fetch_assoc($getUser);
  18.                 $headers =  'From: [email protected]' . "\r\n" .
  19.                             'Reply-To: [email protected]' . "\r\n" .
  20.                             'X-Mailer: PHP/' . phpversion();
  21.                 $subject = "Activation email from ourdomainhere.com";
  22.                 $message = "Dear ".$row['Username'].", this is your activation link to join our website. In order to confirm your membership please click on the following link: http://www.ourdomainhere.com/confirm.php?ID=".$row['ID']."&amp;key=".$row['Random_key']." Thank you for joining";
  23.                 if(mail($row['Email'], $subject, $message, $headers))
  24.                 {//we show the good guy only in one case and the bad one for the rest.
  25.                     $msg = 'Account created. Please login to the email you provided during registration and confirm your membership.';
  26.                 }
  27.                 else {
  28.                     $error = 'I created the account but failed sending the validation email out. Please inform my boss about this cancer of mine';
  29.                 }
  30.             }
  31.             else {
  32.                 $error = 'You just made possible the old guy (the impossible). Please inform my boss in order to give you the price for this.';
  33.             }
  34.                            
  35.         }
  36.         else {     
  37.             $error = 'There was an error in your data. Please make sure you filled in all the required data, you provided a valid email address and that the password fields match';   
  38.         }
  39.     }
  40. ?>
  41. <?php if(isset($error)){ echo $error;}?>
  42. <?php if(isset($msg)){ echo $msg;} else {//if we have a mesage we don't need this form again.?>
  43. <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
  44.     Username: <input type="text" id="username" name="username" size="32" value="<?php if(isset($_POST['username'])){echo $_POST['username'];}?>" /><br />
  45.     Password: <input type="password" id="password" name="password" size="32" value="" /><br />
  46.     Re-password: <input type="password" id="password_confirmed" name="password_confirmed" size="32" value="" /><br />
  47.     Email: <input type="text" id="email" name="email" size="32" value="<?php if(isset($_POST['email'])){echo $_POST['email'];}?>" /><br />
  48.     <input type="submit" name="register" value="register" /><br />
  49. </form>
  50. <? } ?>

ok ahora crearemos 4 archivos de tipo .php

aqui los 4 archivos


confirm.php

Código PHP:
Ver original
  1. <?php
  2. require_once('db.php');
  3. include('functions.php');
  4.  
  5.     if($_GET['ID']!='' && numeric($_GET['ID'])==TRUE && strlen($_GET['key'])==32 && alpha_numeric($_GET['key'])==TRUE)
  6.     {
  7.  
  8.         $query = mysql_query("SELECT ID, Random_key, Active FROM users WHERE ID = '".mysql_real_escape_string($_GET['ID'])."'");
  9.        
  10.         if(mysql_num_rows($query)==1)
  11.         {
  12.             $row = mysql_fetch_assoc($query);
  13.             if($row['Active']==1)
  14.             {
  15.                 $error = 'This member is already active !';
  16.             }
  17.             elseif($row['Random_key']!=$_GET['key'])
  18.             {
  19.                 $error = 'The confirmation key that was generated for this member does not match with the one entered !';
  20.             }
  21.             else
  22.             {
  23.                 $update = mysql_query("UPDATE users SET Active=1 WHERE ID='".mysql_real_escape_string($row['ID'])."'") or die(mysql_error());
  24.                 $msg = 'Congratulations !  You just confirmed your membership !';
  25.             }
  26.         }
  27.         else {
  28.        
  29.             $error = 'User not found !';
  30.        
  31.         }
  32.  
  33.     }
  34.     else {
  35.  
  36.         $error = 'Invalid data provided !';
  37.  
  38.     }
  39.  
  40.     if(isset($error))
  41.     {
  42.         echo $error;
  43.     }
  44.     else {
  45.         echo $msg;
  46.     }
  47. ?>

confir_passwoord.php

Código PHP:
Ver original
  1. <?php
  2. require_once('db.php');
  3. include('functions.php');
  4.  
  5.     $query = mysql_query("SELECT * FROM users WHERE ID = '".mysql_real_escape_string($_GET['ID'])."'");
  6.  
  7.     if(mysql_num_rows($query)==1)
  8.     {
  9.         $row = mysql_fetch_assoc($query);
  10.         if($row['Temp_pass']==$_GET['new'] && $row['Temp_pass_active']==1)
  11.         {
  12.             $update = mysql_query("UPDATE users SET Pass = '".md5(mysql_real_escape_string($_GET['new']))."', Temp_pass_active=0 WHERE ID = '".mysql_real_escape_string($_GET['ID'])."'");
  13.             $msg = 'Your new password has been confirmed. You may login using it.';
  14.         }
  15.         else
  16.         {
  17.             $error = 'The new password is already confirmed or is incorrect';
  18.         }
  19.     }
  20.     else {
  21.         $error = 'You are trying to confirm a new password for an unexisting member';
  22.     }
  23.  
  24.     if(isset($error))
  25.     {
  26.         echo $error;
  27.     }
  28.     else {
  29.         echo $msg;
  30.     }
  31. ?>


sigo en la proxima cita continuar
__________________
www.josealexis.net
  #9 (permalink)  
Antiguo 22/08/2011, 16:43
Avatar de jatg  
Fecha de Ingreso: abril-2011
Ubicación: caracas
Mensajes: 152
Antigüedad: 13 años, 7 meses
Puntos: 15
Respuesta: html form + php

continuamos
ahora el db.php


db.php

Código PHP:
Ver original
  1. <?php
  2.  
  3. $hostname = "tuhost";
  4. $database = "users";
  5. $username = "tu user";
  6. $password = "tupass";
  7.  
  8. $login = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
  9. mysql_select_db($database);
  10. ?>

ok ahora el functions.php


Código PHP:
Ver original
  1. <?php
  2.     function checkLogin($levels)
  3.     {
  4.         if(!$_SESSION['logged_in'])
  5.         {
  6.             $access = FALSE;
  7.         }
  8.         else {
  9.             $kt = split(' ', $levels);
  10.  
  11.             $query = mysql_query('SELECT Level_access FROM users WHERE ID = "'.mysql_real_escape_string($_SESSION['user_id']).'"');
  12.             $row = mysql_fetch_assoc($query);
  13.  
  14.             $access = FALSE;
  15.  
  16.             while(list($key,$val)=each($kt))
  17.             {
  18.                 if($val==$row['Level_access'])
  19.                 {//if the user level matches one of the allowed levels
  20.                     $access = TRUE;
  21.                 }
  22.             }
  23.         }
  24.         if($access==FALSE)
  25.         {
  26.             header("Location: login.php");
  27.         }
  28.         else {
  29.         //do nothing: continue
  30.         }
  31.  
  32.     }
  33.  
  34.     function valid_email($str)
  35.     {
  36.         return ( ! preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
  37.     }
  38.  
  39.     function checkUnique($field, $compared)
  40.     {
  41.         $query = mysql_query("SELECT `".mysql_real_escape_string($field)."` FROM `users` WHERE `".mysql_real_escape_string($field)."` = '".mysql_real_escape_string($compared)."'");
  42.         if(mysql_num_rows($query)==0)
  43.         {
  44.             return TRUE;
  45.         }
  46.         else {
  47.             return FALSE;
  48.         }
  49.     }
  50.  
  51.     function numeric($str)
  52.     {
  53.         return ( ! ereg("^[0-9\.]+$", $str)) ? FALSE : TRUE;
  54.     }
  55.  
  56.     function alpha_numeric($str)
  57.     {
  58.         return ( ! preg_match("/^([-a-z0-9])+$/i", $str)) ? FALSE : TRUE;
  59.     }
  60.  
  61.     function random_string($type = 'alnum', $len = 8)
  62.     {
  63.         switch($type)
  64.         {
  65.             case 'alnum'    :
  66.             case 'numeric'  :
  67.             case 'nozero'   :
  68.  
  69.                     switch ($type)
  70.                     {
  71.                         case 'alnum'    :   $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  72.                             break;
  73.                         case 'numeric'  :   $pool = '0123456789';
  74.                             break;
  75.                         case 'nozero'   :   $pool = '123456789';
  76.                             break;
  77.                     }
  78.  
  79.                     $str = '';
  80.                     for ($i=0; $i < $len; $i++)
  81.                     {
  82.                         $str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
  83.                     }
  84.                     return $str;
  85.               break;
  86.             case 'unique' : return md5(uniqid(mt_rand()));
  87.               break;
  88.         }
  89.     }
  90. ?>

y listo eso es todo


oruebalo y me avisas

atte

ingeniero: jose alexis trujillo

caracas-venezuela
__________________
www.josealexis.net
  #10 (permalink)  
Antiguo 22/08/2011, 16:45
 
Fecha de Ingreso: julio-2011
Mensajes: 220
Antigüedad: 13 años, 4 meses
Puntos: 72
Respuesta: html form + php

Cita:
No logro entender esta sentencia, por lo tanto no puedo razonar el criterio aplicado.

action="guardar.php?accion=guardar"
Esto solo sirve para pasar al archivo guardar.php una variable de la misma forma como se pasa mediante un enlace (<a href=guardar.php?accion=guardar>) y por lo tanto para verificar que este archivo registrar.php recibe esta variable se debe consultar el arreglo $_GET[ ] y para recuperar los datos ingresados en el formulario se debe consultar el arreglo $_POST[ ]; y eso es algo que no se hace en el código que tienes. Esto se aplica en las sentencias if( ).

if (!isset($_GET['accion']))

elseif($_GET['accion']=="guardar")

Y tambien al recuperar los datos del formulario.

values("$_POST[nombre]","$_POST[apellido]","$_POST[dni]")
  #11 (permalink)  
Antiguo 22/08/2011, 16:55
glx
 
Fecha de Ingreso: agosto-2011
Mensajes: 3
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: html form + php

jatg: Desde ya muchas gracias por el codigo, necesito algo mas sencillo, sin contraseñas y registracion por email.
Necesito entenderlo para luego poder modificarlo a gusto, de todas maneras te agradezco nuevamente.

Con que programa puedo tener el codigo distinguido asi?
  #12 (permalink)  
Antiguo 22/08/2011, 17:00
Avatar de jatg  
Fecha de Ingreso: abril-2011
Ubicación: caracas
Mensajes: 152
Antigüedad: 13 años, 7 meses
Puntos: 15
Respuesta: html form + php

Cita:
Iniciado por glx Ver Mensaje
jatg: Desde ya muchas gracias por el codigo, necesito algo mas sencillo, sin contraseñas y registracion por email.
Necesito entenderlo para luego poder modificarlo a gusto, de todas maneras te agradezco nuevamente.

Con que programa puedo tener el codigo distinguido asi?
sencillo para postear los codigos coloreados solo dale al menu que dice HIGHLIGHT y cuando habra el desplegable eliges en que codigo de programacion deseas portear y colocal tu escript entre las etiquetas



__________________
www.josealexis.net
  #13 (permalink)  
Antiguo 22/08/2011, 17:09
 
Fecha de Ingreso: julio-2011
Mensajes: 220
Antigüedad: 13 años, 4 meses
Puntos: 72
Respuesta: html form + php

Existen muchos programas para eso puedes buscar en Google: editores de código.
  #14 (permalink)  
Antiguo 22/08/2011, 17:23
Avatar de jatg  
Fecha de Ingreso: abril-2011
Ubicación: caracas
Mensajes: 152
Antigüedad: 13 años, 7 meses
Puntos: 15
Respuesta: html form + php

Cita:
Iniciado por jatg Ver Mensaje
sencillo para postear los codigos coloreados solo dale al menu que dice HIGHLIGHT y cuando habra el desplegable eliges en que codigo de programacion deseas portear y colocal tu escript entre las etiquetas



mira a ver si te ayuda este link

http://www.roscripts.com/listings/show_categories/21
__________________
www.josealexis.net

Etiquetas: html, sql, formulario, usuarios
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 12:53.