Regresar a la página www.ComoCrearTuWeb.com
Resultados 1 al 4 de 4

Tema: Dudas con insertar datos de un formulario de registro a Mysql

  1. #1
    Recien Llegado! Merodeador Avatar de ghostantares
    Fecha de Ingreso
    02 oct, 11
    Mensajes
    6
    Poder de Reputación
    0

    Dudas con insertar datos de un formulario de registro a Mysql

    Hola a todos.
    Tengo poco tiempo aprendiendo con ustedes a crear páginas web sin tener ningún tipo de conocimientos previos y tengo algunas dudas con la sección de insertar datos en Mysql. Primero he creado un formulario de registro: correo, contraseña, usuario, nombre, apellido teléfono y estado. También he creado la base datos y la tabla de usuarios con los mismos datos añadiendo Id- smallint-auto-incremetable- y primaria key. Hasta aquí es fácil. Luego al crear conf.php surge mi primera duda. $server, $database, $db_user, $db_pass, $table( este último lo vi en un tutorial del foro). Pero en mi hosting no hay clave para la base de datos. Aquí va mi primera pregunta ¿Este es el orden en que deben estar? O en mi caso deber ser algo asi: $serve,$user,$user_pass,$database,$table y esta misma duda aplica a insertardatos.php en mysql_connect($server, $db_user, $db_pass) or die ("error1".mysql_error()); . Segunda duda es sobre como revisar de que no se creen dos usuarios iguales he visto que se usa estas 2 mysql_fetch_array() o $num_rows = mysql_num_rows($qry); if ($num_rows != 0) {
    Aunque he buscado el significado de las dos no he logrado aclarar las dudas ¿Cuál es la Forma más apropiada? ¿En qué caso aplicar cada una? ¿Cuál es la apropiada para lo que estoy haciendo? Y por ultimo esto es correcto: $insert = mysql_query("insert into $table values ( '".$_POST['CORREO']."', '".$_POST['CONTRASEÑA']."', '".$_POST['USUARIO']."', '".$_POST['NOMBRE']."', '".$_POST['APELLIDO']."', '".$_POST['TELEFONO']."')")or die("Could not insert data because ".mysql_error()). O esta es la forma en que debe ser: mysql_query("INSERT INTO users (CORREO,CONTRASEÑA,USUARIO,APELLIDO,TELEFONO,ESTAD O) values ('$CORREO','$CONTRASEÑA','$USUARIO','$APELLIDO','$ TELEFONO','$ESTADO') ");
    echo 'Usuario registrado con éxito'; si alguien pudiera ayudarme o indicarme un tutorial donde expliquen paso a paso y que significa cada cosa y para que se usan de manera clara y nada complicada como explican aquí cctw. Gracias por anticipado.

  2. #2
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    1,561
    Poder de Reputación
    14
    Hola:

    En el archivo conf.php no importa el orden de las variables (cualquier cosa que comience por un signo dinero $ es una variable), pues todas las variables definidas aquí estarán disponibles en todo el archivo donde se incluya (include( 'conf.php' );). Si la conexión con la base de datos no necesita una contraseña, entonces dejas en blanco $db_pass y listo :D. La función mysql_connect() necesita tres parámetros (en este orden):

    1.- El nombre del host o dominio donde esta alojado MySQL.
    2.- El nombre de usuario para conectarse a la base de datos.
    3.- La contraseña para conectarse a la base de datos.

    Sabiendo lo anterior, entonces siempre debes conectarte a la base de datos así: mysql_connect( 'dominio', 'nombre_usuario_base_datos', 'contraseña_base_datos' );. Ahora, mysql_connect devuelve una conexión, por lo que deberías conectarte así: $link = mysql_connect( 'dominio', 'nombre_usuario_base_datos', 'contraseña_base_datos' );, para guardar la conexión y poder manipularla (para poder cerrar la conexión, por ejemplo).

    Segunda pregunta: lo que publicaste es bastante vago, por ende no hace nada. Lo que debes hacer, después de haber obtenido un enlace (lo que dije en el párrafo anterior), es preguntar a la base de datos si existe algún usuario con el nombre que el usuario que intenta registrarse eligió:

    Código PHP:
    <?php
      
    include_once( 'config.php' );
      
    // Los siguientes serán los datos enviados desde el formulario (<form action="insertardatosentabla.php">...</form>); no los incluiré todos :P
      
    $nombre $_POST['nombre'];  // Si en tu formulario está en mayúsculas, entonces aquí también debería estarlo.
      
    $email $_POST['email'];
      
    $nickname $_POST['nickname'];

      
    $con mysql_connect$server$db_user$db_pass );
      
    mysql_select_db'nombre_base_datos'$con ) or die ( 'No se pudo seleccionar la base de datos: ' mysql_error$con ) );
      
    $result mysql_query"SELECT id FROM $tabla WHERE nickname = '$nickname'" ); 
      
    // La línea anterior pregunta a la base de datos:
      // extrae la columna 'id' de la $tabla donde la columna nickname sea igual al contenido de la variable $nickname.
      // Cuando se ejecutan consultas de tipo SELECT (existen también INSERT, DELETE y UPDATE entre otras), o sea, consultas que extraigan datos, mysql_query devuelve false
      // si es que no hubieron resultados, de lo contrario devuelve un recurso (un recurso es un tipo de dato en PHP.

      
    if( $result == false ) {  // Si no hay resultados quiere decir que no existe un usuario con con el mismo nickname.
        // Aquí es donde se procede a registrar al usuario, pues quiere decir que no existe un usuario con el mismo nickname.
        
    $insert mysql_query("INSERT INTO $table (CORREO,CONTRASEÑA,USUARIO,APELLIDO,TELEFONO,ESTADO)  values ( '".$_POST['CORREO']."', '".$_POST['CONTRASEÑA']."', '".$_POST['USUARIO']."', '".$_POST['NOMBRE']."', '".$_POST['APELLIDO']."', '".$_POST['TELEFONO']."')");
        
    // Cuando las consultas modifican datos, mysql_query devuelve un número entero representando las filas afectadas en la base de datos
        
    if( $insert // por ende, en esta línea, se pregunta si $insert es mayor a 0, lo que significa que al menos 1 fila se modificó
          
    echo "<p>Usuario creado</p>"// Lo que significa que el usuario se creó.
        
    else // Si no es mayor a 0, entonces ocurrió un error al crear el usuario.
          
    echo "<p>Ocurrió un error al crear el usuario: " mysql_error$con ) . ".</p>";
      }
      else { 
    // De lo contrario el usuario existe:
        // Se muestra un mensaje explicando lo ocurrido.
        
        
    echo "<p>El usuario ya existe, seleccione uno distinto</p>";
      }
      
    mysql_free_result$insert ); // mysql_free_result libera los resultados generados por consultas
      
    mysql_free_result$result );
      
    mysql_close$con ); // mysql_close cierra la conexión con la base de datos.
    ?>
    Ahora, la diferencia entre $insert = mysql_query("insert into $table values ( '".$_POST['CORREO']."', '".$_POST['CONTRASEÑA']."', '".$_POST['USUARIO']."', '".$_POST['NOMBRE']."', '".$_POST['APELLIDO']."', '".$_POST['TELEFONO']."')")or die("Could not insert data because ".mysql_error()) y esta mysql_query("INSERT INTO users (CORREO,CONTRASEÑA,USUARIO,APELLIDO,TELEFONO,ESTAD O) values ('$CORREO','$CONTRASEÑA','$USUARIO','$APELLIDO','$ TELEFONO','$ESTADO') ");, es que la primera obliga que se especifiquen los values tal cual esta definido en la base de datos sin que falte ninguno, en cambio en la segunda se especifican las columnas que van a ser insertadas junto a sus respectivos valores (en el mismo orden, de lo contrario mysql_query devolverá un error).

    Espero que te que de claro :D, sino vuelves a preguntar.

  3. #3
    Recien Llegado! Merodeador Avatar de ghostantares
    Fecha de Ingreso
    02 oct, 11
    Mensajes
    6
    Poder de Reputación
    0
    Con tu explicación si entiendo y muchas gracias por tomar tiempo para ello. La primera parte me quedo muy claro. En la segunda lo que sucedió es que en el curso Php y Mysql todavía no han añadido las opciones de obtener respuesta de la base de datos, han quedado con insertar datos. De manera que no tenía la menor idea de como hacer; Busque en los tutoriales en el foro pero no encontré, Hay 3 muy buenos tutoriales que le han sido muy útiles a muchas personas pero en la parte de obtener respuestas de mysql prácticamente te dicen que copies los datos y con eso siento como si caminara a ciegas. http://www.comocreartuweb.com/consul...ma-de-registro
    http://www.comocreartuweb.com/consul...ro-de-usuarios
    Investigue lo que colocaban con respecto a mysql_num_rows: Obtener el número de filas de un resultset. Este comando es únicamente válido para sentencias como SELECT o SHOW que retornan un resultset real.mysql_fetch_array: Extrae la fila de resultado como una matriz asociativa, una matriz numérica o ambas. Es una versión extendida de mysql_fetch_row(). Además de guardar los datos en el índice numérico de la matriz, guarda también los datos en los índices asociativos, usando el nombre de campo como clave. Si dos o más columnas del resultado tienen el mismo nombre de campo, la última columna toma la prioridad. Para acceder a la(s) otra(s) columna(s) con el mismo nombre, se debe especificar el índice numérico o definir un alias para la columna. En columnas con alias, usted no puede acceder al contenido con el nombre original de la columna. Y lo primero que dije es ¿Con que se come esto? Y luego de pasarme horas investigando lo único que pude entender es que el mysql_num_rows fue usado para solo obtener repuesta de EL id (valor numérico) de la tabla y con el otro tutorial mysql_fetch_array para el valor numérico junto a uno de asociación del nick. (No sé si estoy en lo correcto) pero el proceso que conllevan para obtener el resultado no entiendo nada. Pero tu explicación es más clara.
    Incluye-once: solo incluye una vez a config.php. Conectar con el servidor, luego con la base datos activándola y el $result = mysql_query para hacer peticiones a la base de datos ($result: Supongo pidiendo resultado) y ( "SELECT id FROM $tabla WHERE nickname = '$nickname'"); Creo que se está seleccionando el id que cree en la tabla para asociarlo al Nick en mi caso (USUARIO). Luego que verifique que el usuario está disponible, es que inserta los datos en la tabla y lo demás esta muy claro. Muchas gracias.

  4. #4
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    1,561
    Poder de Reputación
    14
    Me parece bien que investigues por tu cuenta, pues creo que es la mejor forma de encontrar una respuesta apropiada para cada uno.

    include_once( 'ruta_relativa' ) inserta todo lo que haya en el archivo, pero a diferencia de include, include_once detiene la ejecución del script si es que no encuentra el archivo. Por ejemplo, si le dices include_once( 'script/validar_email.php' ) y la carpeta o el archivo no existen, PHP no ejecutará lo que sigue después de esta línea y mostrará un mensaje de error.

    El mejor lugar donde encontrar información clara (a mi juicio) es en el manual de PHP. En este manual puedes aprender cómo instalarlo (pasando por la compilación del programa), funciones sobre bases de datos (no solo para MySQL, también para Oracle y MS SQL entre otras), etc., todo lo que se te ocurra.

    Saludos.

Temas Similares

  1. AYUDA insertar datos php mysql
    Por satic77 en el foro Php Bases de Datos y MySQL (Nuevo!)
    Respuestas: 3
    Último Mensaje: 31/10/2009, 19:39
  2. como insertar una base de datos MySql
    Por gatonico en el foro Foro General
    Respuestas: 0
    Último Mensaje: 10/03/2009, 16:30

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •