Regresar a la página www.ComoCrearTuWeb.com
Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 al 15 de 24

Tema: Problema con formulario y Mysql

  1. #1
    Recien Llegado! Merodeador
    Fecha de Ingreso
    12 may, 11
    Mensajes
    7
    Poder de Reputación
    0

    Unhappy Problema con formulario y Mysql

    Pues miren, he realizado al pie de la letra el curso y ya cuando probe el formulario y le doy en el botón para que se envie a la base de datos me sale un error:

    Parse error: syntax error, unexpected T_STRING in /www/clanteam.com/e/l/p/elpumahalomachinima/htdocs/insertardatosentabla.php on line 2

    El código del formulario es este (es el que hice con los cursos de jorgens):
    <!-- FORMULARIO PARA LA BASE DE DATOS -->
    <form method="post" action="insertardatosentabla.php">
    <input type="text" name="NOMBRE" value="Escribe tu nombre" size=30 maxlength=50><br />
    <input type="text" name="EMAIL" value="tuemail@correcto" size=30 maxlength=50><br />
    <input type="text" name="URL" value="http://www.tudirecciondepagina.web" size=30 maxlength=50><br />
    <input type="hidden" name="ESTADO" value="Activo" />
    <input type="SUBMIT" value="Botón de envio estandar" name="Enviar la información al servidor"><br />
    <?php
    // leer datos de usuario y contraseña de la base de datos
    include("config.php") ;
    // Conexión con el servidor
    mysql_connect($server, $db_user, $db_pass) or die ("error1".mysql_error());
    // Selección de Base de Datos
    mysql_select_db($database) or die ("error2".mysql_error());
    ?>
    </form>

    Y el que es para insertar los datos es este (igual lo hice con los cursos):
    <?php
    INSERT INTO `elpumahalomachinima_clanteam_basedatos`.`USUARIOS ` (`NOMBRE`, `EMAIL`, `URL`, `ESTADO`) VALUES ('$_POST[NOMBRE]', '$_POST[EMAIL]', '$_POST[URL]', '$_POST[ESTADO]');
    ?>

    ¿Qué hago?

  2. #2
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,079
    Poder de Reputación
    26
    Hola, lo que pasa es que, primero que nada, en el archivo insertardatosentabla.php es donde debe ir la conexión a la base de datos (al menos hasta más adelante, cuando sepas más de php), o sea, debe quedar así:

    insertardatosentabla.php
    Código PHP:
    <?php
      
    include("config.php");
      
    $conexion mysql_connect($server$db_user$db_pass) or die ("error1".mysql_error());
      
    mysql_select_db($database$conexion);
      
      
    /* ESTO ESTA MAL -----> INSERT INTO `elpumahalomachinima_clanteam_basedatos`.`USUARIOS ` (`NOMBRE`, `EMAIL`, `URL`, `ESTADO`) VALUES ('$_POST[NOMBRE]', '$_POST[EMAIL]', '$_POST[URL]', '$_POST[ESTADO]'); */

      // Lo siguiente está bien:
      
    $resultado mysql_query("INSERT INTO usuarios (nombre, email, url, estado) VALUES ('" .$_POST['NOMBRE']. "', '" .$_POST['EMAIL']. "', '" .$_POST['URL']. "', '" .$_POST['ESTADO']. "')");
      
    /* Si se selecciona la base de datos con mysql_select_db() no es necesario escribir nombre_base_datos.tabla (en tu caso elpumahalomachinima_clanteam_basedatos.usuarios, no es necesario, basta con usuarios) */
      
      
    if(mysql_affected_rows($resultado) >= 1// pregunta si hubieron filas afectadas y, si lo hay y son una o más, entonces hará lo siguiente:
        
    print "Usuario registrado satisfactoriamente"// print muestra el mensaje que esta entre comillas.
      
    else
        print 
    "ERROR al registrar usuario";
    PHP distingue entre mayúsculas y minúsculas por lo que escribir MYSQL es distinto a mysql, distinto a MySQL y distinto a cualquier variante de la palabra. Por lo tanto, si tu escribes $_POST['NOMBRE'] y el campo en el formulario se llamaba nombre (con minúsculas) PHP no lo encontrará (ocurrirá un error). Al insertar y extraer datos en MySQL, también debes tener cuidado con las minúsculas, aunque depende del tipo de comparación utilizada en MySQL (aunque para no complicarse, mejor escribe las cosas tal cual aparecen en base de datos).

    Por último, si la información de las tablas sí estaba en mayúsculas en la base de datos, entonces tendrás que cambiarla XD... lo siento, pero no sé cómo están escritas en tu base de datos :D.
    Última edición por skaparate; 18/05/2011 a las 03:26

  3. #3
    Recien Llegado! Merodeador
    Fecha de Ingreso
    12 may, 11
    Mensajes
    7
    Poder de Reputación
    0
    OK, muchas gracias ya no aparece el dichoso error.

  4. #4
    Recien Llegado! Habitante
    Fecha de Ingreso
    07 may, 10
    Mensajes
    28
    Poder de Reputación
    16
    hola:

    A mi tambien me resolvio el anterior pero ahora me sale uno nuevo

    Warning: mysql_affected_rows() expects parameter 1 to be resource, boolean given in /home/faseu/public_html/insertardatos.php on line 15
    ERROR al registrar usuario
    <html>
    <body>


    <?php
    include("config.php") ;

    mysql_connect($server, $db_user, $db_pass) or die ("error1".mysql_error());

    mysql_select_db($database) or die ("error2".mysql_error());

    $resultado = mysql_query("INSERT INTO usuarios (NOMBRE,APELLIDOS) VALUES ('" .$_POST['nombre']. "', '" .$_POST['apellidos']. "' )");

    if(mysql_affected_rows($resultado) >= 1)

    print "Usuario registrado satisfactoriamente";
    else
    print "ERROR al registrar usuario";
    ?>
    </body>
    </html>


    Gracias si me podeis ayudar me estoy vollviendo tarumba con esto de insertar informacion a la base datos

  5. #5
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,079
    Poder de Reputación
    26
    Hola, el error dice que el parámetro pasado a la función mysql_affected_rows() debe ser un recurso, por lo que el error debe estar en la línea donde se ejecuta la consulta, en este caso es: $resultado = mysql_query("INSERT INTO usuarios (NOMBRE, APELLIDOS) VALUES ('" .$_POST['nombre']. "', '" .$_POST['apellidos']. "')");.

    Para solucionarlo debes asegurarte que la sentencia esta bien, o sea, asegurarte que NOMBRE y APELLIDOS sean columnas válidas dentro de MySQL, asegurarte que $_POST['nombre'] y $_POST['apellidos'] sean exactamente iguales a los name de los input en el formulario de ingreso.

    Si estas seguro de que estan bien, entonces asegúrate de que la conexión con la base de datos se concretó. Para asegurarte, cambia la línea mysql_connect... por:

    $con = mysql_connect($server, $db_user, $db_pass);

    if($con)
    print "<p style="color: blue;">Conexion establecida</p>";
    else
    print "<p style="color: red;">Error al intentar conectarse a la base de datos.</p>";

    mysql_select_db($database, $con) or die ("error2".mysql_error());

    Espero que te sirva.

    Saludos.

  6. #6
    Recien Llegado! Merodeador
    Fecha de Ingreso
    09 jun, 11
    Mensajes
    9
    Poder de Reputación
    0

    Gracias skaparate pero tengo otra duda

    Hola skaparate! Muchisimas gracias por tu ayuda, a mi también me sirvió mucho ya que en el curso de Jorgens no dice como enlazar el archivo principal con el codigo.php y el insertardatosentabla.php. Hice exactamente lo que pusiste y ya lo subi a mi servidor pero a la hora de poner "enviar formulario" me envía a la clásica pagina de internet explorer que dice "El sitio no puede mostrar la página". Inserto el código de mis 2 archivos para saber que estoy haciendo mal. Graciaaaaas!!!! y saludos desde México

    ARCHIVO DEL FORMULARIO

    Código:
    <html>
    <head>
    <title>Mi quinta pagina con php</title>
    </head>
    <body>
    <h1>Mi quinto ejemplo PHP</h1>
    <p>Este es mi quinto ejemplo con partes de php</p>
    <form method="post" action="insertardatosentabla.php">
    	<input type="text" name="NOMBRE" value="Escribe tu nombre" size=30 maxlength=50 /></br>
    	<input type="text" name="EMAIL" value="tuemail@correcto.com" size=30 maxlength=50 /></br>
    	<input type="text" name="URL" value="http://www.tudirecciondepagina.web" size=30 maxlength=50 /></br>
    	<input type="hidden" name="ESTADO" value="Activo" />
      <input type="submit" value="Botón de envío estándar" name="Enviar la información al servidor" /></br>
    <?php
    include("config.php");
    mysql_connect($server, $db_user, $db_pass) or die ("error1".mysql_error());
    mysql_select_db($database) or die ("error2".mysql_error());
    ?> 
    </form>
    </body>
    </html>

    ARCHIVO insertardatosentabla.php
    Código:
    <?php 
    // leer datos de usuario y contraseña de la base de datos
    include("codigo.php");
    // Conexión con el servidor
    mysql_connect($database) or die ("error 1".mysql_error());
    // Selección de Base de Datos
    mysql_select_db($database) or die ("error 2".mysql_error());
    INSERT INTO 'base_de_pruebas'.'USUARIOS' ('NOMBRE','EMAIL','URL','ESTADO') VALUES ('$_POST[NOMBRE]','$_POST[EMAIL]','$_POST[URL]','$_POST[ESTADO]'); 
    ?>
    Solo quiero aclarar que todos los textos que introduje en la tabla en phpMyAdmin están en mayúsculas incluyendo su nombre tal y como dice en el curso de php. Ojalá me puedan ayudar!

  7. #7
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,079
    Poder de Reputación
    26
    @im_lettisha: estas algo confundida. El código que insertaste al final del archivo que contiene el formulario es el que debe ir al comienzo del archivo insertardatosentabla.php. Me gustaría que analizaras la lógica de lo que has escrito. Los pasos para extraer o insertar datos en una base de datos (cualquiera sea) es:

    1.- Conectarse con el servidor de base de datos. En el caso de MySQL, lo primero que se debe hacer es mysql_connect('dominio', 'nombre de usuario', 'contraseña base datos');, donde dominio es el dominio (lógico XD), nombre de usuario es el nombre que se utiliza para conectarse a la base de datos (no es el nombre de usuario FTP o el que se utiliza para entrar al panel de control del servidor) y la contrseña es la que se utiliza para conectarse a la base de datos.
    2.- Opcionalmente se puede seleccionar la base de datos con mysql_select_db('nombre base datos', [identificador_conexion]);, donde el identificador es opcional. La selección de la base de datos afecta cómo se ejecutan las consultas (si quieres más ayuda respecto al tema avisa).
    3.- Ahora sí se puede mandar la consulta a la base de datos con mysql_query('consulta SQL'); (SQL - Structured Query Language - es un lenguaje común para las bases de datos, aunque cada base de datos añade características a cada una).
    4.- Procesar los datos extraídos o el resultado de la inserción.

    Ahora, si bien tu haces eso en el archivo insertar....php revisa la conexión a la base de datos y la consulta (de hecho, no existe tal consulta :D). La consulta debe ser una cadena de texto (string).

    Saludos.

  8. #8
    Recien Llegado! Habitante
    Fecha de Ingreso
    22 mar, 11
    Ubicación
    Cd. de México
    Mensajes
    19
    Poder de Reputación
    15
    Yo tambien tenia el mismo problema que Giovannizealot y tambien me funcionó la solución, pero ahora tengo otro problema. El formulario envia los datos a la base y la base lo detecta pero los campos estan vacios, el unico que se rellena es el de ID... hay alguna razon parabque suceda esto?

  9. #9
    Recien Llegado! Merodeador
    Fecha de Ingreso
    09 jun, 11
    Mensajes
    9
    Poder de Reputación
    0
    Hola skaparate! Disculpa por la demora... Muchísimas gracias por tu respuesta. Así como lo explicas suena mucho más fácil y entendible jejeje lo haré y si tengo alguna otra duda ten por seguro que te estaré molestando ;) jejejeje otra cosa, donde puedo encontrar más información sobre el tema del punto 2? Una vez más muchas gracias y que tengas un lindo dia! Un saludo desde México!

  10. #10
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,079
    Poder de Reputación
    26
    @im_lettisha: el mejor lugar donde encontrar información es, y será siempre, el manual de PHP (o el de MySQL). Si quieres ayuda sobre las funciones referentes al uso de MySQL, entonces esta sección del manual te puede ayudar. Nota: el manual en español puede estar desactualizado, por lo que se recomienda revisar también el manual en inglés.

    @Hiklia Vinadar: intenta mostrar las variables justo antes de enviarlas a la base de datos, o sea, antes de mysql_query() deberías escribir print $variable; con todas las variables. Una alternativa es escribir var_dump($_POST); o print_r($_POST);. Asegúrate de que las variables tienen valores y, si los tienen, entonces publica tu código para ver que ocurre :D.

    Saludos.

  11. #11
    Recien Llegado! Habitante
    Fecha de Ingreso
    22 mar, 11
    Ubicación
    Cd. de México
    Mensajes
    19
    Poder de Reputación
    15

    gracias por la ayuda

    Una alternativa es escribir var_dump($_POST); o print_r($_POST);. Asegúrate de que las variables tienen valores
    ... tengo que escribir esto junto con el print $variable o solo escribo una de las dos opciones?

  12. #12
    Recien Llegado! Habitante
    Fecha de Ingreso
    22 mar, 11
    Ubicación
    Cd. de México
    Mensajes
    19
    Poder de Reputación
    15

    Otra duda

    hola que tal, revisando las respuestas anteriores me habia dado cuenta de que no habia puesto esta parte del codigo:
    if(mysql_affected_rows($resultado) >= 1) // pregunta si hubieron filas afectadas y, si lo hay y son una o más, entonces hará lo siguiente:
    print "Usuario registrado satisfactoriamente"; // print muestra el mensaje que esta entre comillas.
    else
    print "ERROR al registrar usuario";
    ... y ahora que lo puse me pone este error:
    Warning: mysql_affected_rows() expects parameter 1 to be resource, boolean given in /home/mispagin/public_html/registro/insertardatosentabla.php on line 23
    ERROR al registrar usuario
    ... la linea que me marca como la que tiene el error es la msma donde inicia el codigo que me faltó. Anexo el codigo aqui abajo:

    ESTE ES EL FORMULARIO
    Código HTML:
    <form action="insertardatosentabla.php" method="post">
        <label>Nombre de la empresa:<input name="nombrempresa" type="text" size="71" maxlength="80" style="background-color:#B3C2E8"/>
        </label>
        <label>Giro:<input name="giro" type="text" size="30" maxlength="30"style="background-color:#B3C2E8"/>
        </label>
        <label>Nombre del Representante:<input name="nombre" type="text" size="67" maxlength="80" style="background-color:#B3C2E8" />
        </label>
        <label>Teléfono:<input name="telefono" type="text" size="25" maxlength="20" style="background-color:#B3C2E8" />
        </label>
        <label>Email:<input name="email" type="text" size="91" maxlength="50" style="background-color:#B3C2E8" />
        </label>
        <label>Opciones de Registro:<input name="tipo" type="text" style="background-color:#B3C2E8" value="Asociado Gratuito, Plus o Activo" size="40" maxlength="40" />
         </label>
        <input type="reset" value="Borrar" />
        <input type="submit" value="Enviar" />
        </form>
    ESTE ES EL CÓDIGO DE CONEXIÓN

    Código PHP:
    <?php

    include("config.php") ;


    $conexion mysql_connect($server$db_user$db_pass) or die ("error1".mysql_error());


    mysql_select_db($database$conexion) or die ("error2".mysql_error());


    $resultado mysql_query("INSERT INTO REGISTROS (EMPRESA, GIRO, REPRESENTANTE, TELEFONO, EMAIL, TIPO) 
    VALUES ('"
    .$_POST[EMPRESA]."', '".$_POST[GIRO]."', '".$_POST[REPRESENTANTE]."', '".$_POST[TELEFONO]."', '".$_POST[EMAIL]."', '".$_POST[TIPO]."')");

    if(
    mysql_affected_rows($resultado) >= 1
        print 
    "Usuario registrado satisfactoriamente";
      else
        print 
    "ERROR al registrar usuario"

    ?>

  13. #13
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    02 may, 11
    Ubicación
    Santiago, Chile
    Mensajes
    2,079
    Poder de Reputación
    26
    @Hiklia:

    Warning: mysql_affected_rows() expects parameter 1 to be resource, boolean given in /home/mispagin/public_html/registro/insertardatosentabla.php on line 23
    ERROR al registrar usuario
    Cuando aparezca un error diciendo que "tal función espera que el parámetro 1 sea un recurso" quiere decir que hubo un error en cuanto al tipo de variable pasado a la función. En este caso, la función mysql_query retorna un recurso y el error dice que se le pasó un tipo boolean (true o false) en lugar de un recurso, por lo que debe haber ocurrido un error al ejecutar mysql_query();. Los valores del array POST deben ser encerrados entre comillas simples: $_POST['EMPRESA'].

    Ojalá te sirva, saludos.

    P.D.: print_r(arreglo); por si sola mostrará los valores, o sea, escribiendo print_r($_POST); mostrará todos los valores sin necesidad de nada más. var_dump() es similar, solo que, además, mostrará el tipo de cada valor (no es necesario echo/print).

  14. #14
    Recien Llegado! Habitante
    Fecha de Ingreso
    22 mar, 11
    Ubicación
    Cd. de México
    Mensajes
    19
    Poder de Reputación
    15
    hola... que crees?... ya hice lo que me dijiste pero sigue saliendome el mismo mensaje. Hay algo mas que me falte? :(

  15. #15
    Recien Llegado! Habitante
    Fecha de Ingreso
    22 mar, 11
    Ubicación
    Cd. de México
    Mensajes
    19
    Poder de Reputación
    15
    ahhh...ya revise mi base de datos... si hace el registro aun cuando sigue saliendo el mensaje.
    Esta algo raro.
    Gracias por tu ayuda XD

Página 1 de 2 12 ÚltimoÚltimo

Permisos de Publicación

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