Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: ~V en 3 Diciembre 2009, 20:42 pm



Título: Php & mysql: se conecta a La BD, pero no Inserta datos [solucionado]
Publicado por: ~V en 3 Diciembre 2009, 20:42 pm
Citar
Bueno la solucion va en fijarse bien en como esta escrita la tabla , ya que yo tenia 1 tabla mal. al borrarla (sacarla del codigo), me funciono bien. Luego me percate mi BD no tenia auto_increment. (esto como otra duda que aproveche de preuntar en el hilo.


Buenas!, los molesto , pero me salta una duda, eh tratado de conectar con Dreamviewer a traves de php, a mi base de datos.

(tengo conectado DW, a la base de datos, uso Appserv.)

Al momento de: insertar los datos en el formulario y enviarlos,  en el codigo php, me dice que debo completar los datos (el  ELSE que le di yo).

Osea se coencta a la base de datos ( porque probe cambiando la clave y me dio el or die, error .... ) , pero no hace el primer condicional.

GRACIAS :D

_________________
_________________

Mi formulario esta asi:

Citar

<div align="center">Nombre Producto
      <input name="NOMBRE_PRODUCTO" type="text" id="NOMBRE_PRODUCTO" size="20" maxlength="15" />
    </div>
  </label>
  <p align="center">
    <label>Cantidad</label>
    <input name="CANTIDAD_PRODUCTO" type="text" id="CANTIDAD_PRODUCTO" size="20" maxlength="3" />
  </p>
  <p align="center">Fecha de Elaboracion
    <label>
    <input name="FECHA_ELABORACION" type="text" id="FECHA_ELABORACION" size="20" maxlength="20" />
    </label>
</p>
  <table width="391" border="0" align="center">
    <tr>
      <td><input name="cleanform" type="reset" id="cleanform" value="limpiar" /></td>
      <td>
        <div align="left">
          <input name="send" type="submit" id="send" value="Enviar" />
          </div></td></tr>
  </table>




FOTO DEL FORM (http://img260.imageshack.us/img260/8562/fomr.jpg)

MY codigo php

Citar

<?
$conex = @mysql_connect ("localhost","root","miclave1")

               or die ("No se pudo realizar la conexión  ");

mysql_select_db ("nph");

$NOMBRE_PRODUCTO=$HTTP_POST_VARS['NOMBRE_PRODUCTO'];
$CANTIDAD_PRODUCTO =$HTTP_POST_VARS['CANTIDAD_PRODUCTO'];
$FECHA_ELABORACION= $HTTP_POST_VARS['FECHA_ELABORACION'];


//comprobamos que los valores no sean vacios  o incorrectos en tipo

if (!(empty ($name)) && !(empty($product)) && !(empty($nameprov))  ){

    $IngresaDatos = "INSERT INTO b2_productos VALUES ('$NOMBRE_PRODUCTO', '$CANTIDAD_PRODUCTO', '$FECHA_ELABORACION');";
    $Resultado = mysql_query ($IngresaDatos, $conex);
    if ($Resultado)
       echo "<br><b>Datos guardados</b> $NOMBRE_PRODUCTO, $CANTIDAD_PRODUCTO, $FECHA_ELABORACION";
}
else {
    echo "<b>Debe Completar todos los campos</b>";
    }

//liberamos recursos y cerramos la conexión
                  mysql_close($conex)  ;
              ?>





foto: php
(http://img143.imageshack.us/img143/9315/phpc.jpg)
http://img143.imageshack.us/img143/9315/phpc.jpg




FOTO FORMULARIO  el skin

(http://img260.imageshack.us/img260/8177/ff2m.jpg)


Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos
Publicado por: raul338 en 3 Diciembre 2009, 20:53 pm

Código
  1. <?
  2. $conex = @mysql_connect ("localhost","root","miclave1")
  3.  
  4.               or die ("No se pudo realizar la conexión  ");
  5.  
  6. mysql_select_db ("nph");
  7.  
  8. $NOMBRE_PRODUCTO=$HTTP_POST_VARS['NOMBRE_PRODUCTO'];
  9. $CANTIDAD_PRODUCTO =$HTTP_POST_VARS['CANTIDAD_PRODUCTO'];
  10. $FECHA_ELABORACION= $HTTP_POST_VARS['FECHA_ELABORACION'];
  11.  
  12.  
  13. //comprobamos que los valores no sean vacios  o incorrectos en tipo
  14.  
  15. if (!(empty ($name)) && !(empty($product)) && !(empty($nameprov))  ){
  16.  
  17.    $IngresaDatos = "INSERT INTO b2_productos VALUES ('$NOMBRE_PRODUCTO', '$CANTIDAD_PRODUCTO', '$FECHA_ELABORACION');";
  18.    $Resultado = mysql_query ($IngresaDatos, $conex);
  19.    if ($Resultado)
  20.       echo "<br><b>Datos guardados</b> $NOMBRE_PRODUCTO, $CANTIDAD_PRODUCTO, $FECHA_ELABORACION";
  21. }
  22. else {
  23.    echo "<b>Debe Completar todos los campos</b>";
  24.    }
  25.  
  26. //liberamos recursos y cerramos la conexión
  27.                  mysql_close($conex)  ;
  28.  ?>
  29.  

mi gran pregunta es: ¿Por qué comparas $name $product y $nameprov cuando estas asignando valores a estas  variables $NOMBRE_PRODUCTO, $CANTIDAD_PRODUCTO, $FECHA_ELABORACION ???

Deberias comparar estas ultimas .... supongo yo... o sea..que el condicional quedaria asi

if (!(empty ($NOMBRE_PRODUCTO)) && !(empty($CANTIDAD_PRODUCTO)) && !(empty($FECHA_ELABORACION ))  ){


Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos
Publicado por: ~V en 3 Diciembre 2009, 21:13 pm
Estimado: raul338

Claro tienes razon, en un transcurso al estar intentando algunas posibles soluciones, sem e paso por alto, ya que antes lo tenia con esas variables.

El hecho, es que ahora al cambiar ahora por


if (!(empty ($NOMBRE_PRODUCTO)) && !(empty($CANTIDAD_PRODUCTO)) && !(empty($FECHA_ELABORACION ))  ){

y ejecutar;  me sale una pagina en blanco.

siendo que me deberia salir el citado:

Código:
     if ($Resultado)
       echo "<br><b>Datos guardados</b> $NOMBRE_PRODUCTO, $CANTIDAD_PRODUCTO, $FECHA_ELABORACION";


Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos
Publicado por: raul338 en 3 Diciembre 2009, 23:09 pm
Puedes obtener informacion del error con la funcion mysql_error (http://php.net/manual/en/function.mysql-error.php (http://php.net/manual/en/function.mysql-error.php))

quedandote

Código
  1.    if ($Resultado)
  2.       echo "<br><b>Datos guardados</b> $NOMBRE_PRODUCTO, $CANTIDAD_PRODUCTO, $FECHA_ELABORACION";
  3.    else
  4.        echo "Error ".mysql_errno($conex) . ": " . mysql_error($conex);
  5.  


Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos
Publicado por: Castg! en 3 Diciembre 2009, 23:24 pm
como te va? me parece que tu error esta en esta sentencia:
Código
  1. <?
  2. $conex = @mysql_connect ("localhost","root","miclave1")
  3.  
  4.               or die ("No se pudo realizar la conexión  ");
  5.  
  6. mysql_select_db ("nph");
  7.  
  8. $NOMBRE_PRODUCTO=$HTTP_POST_VARS['NOMBRE_PRODUCTO'];
  9. $CANTIDAD_PRODUCTO =$HTTP_POST_VARS['CANTIDAD_PRODUCTO'];
  10. $FECHA_ELABORACION= $HTTP_POST_VARS['FECHA_ELABORACION'];
  11.  
  12.  
  13. //comprobamos que los valores no sean vacios  o incorrectos en tipo
  14.  
  15. if (!(empty ($name)) && !(empty($product)) && !(empty($nameprov))  ){
  16.  
  17.    $IngresaDatos = "INSERT INTO b2_productos VALUES ('$NOMBRE_PRODUCTO', '$CANTIDAD_PRODUCTO', '$FECHA_ELABORACION');";
  18.    $Resultado = mysql_query ($IngresaDatos, $conex);
  19.    if ($Resultado)
  20.       echo "<br><b>Datos guardados</b> $NOMBRE_PRODUCTO, $CANTIDAD_PRODUCTO, $FECHA_ELABORACION";
  21. }
  22. else {
  23.    echo "<b>Debe Completar todos los campos</b>";
  24.    }
  25.  
  26. //liberamos recursos y cerramos la conexión
  27.                  mysql_close($conex)  ;
  28.  ?>

trata de poner:

mysql_select_db ("nph", $conex);

porq sino no le indicas de donde saca esa base de datos, es como que digas copiame la imagen perro.jpg, pero de donde la sacas? de tu pagina, la de un fotolog? se entiende?


Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos
Publicado por: [u]nsigned en 4 Diciembre 2009, 00:44 am
trata de poner:

mysql_select_db ("nph", $conex);

porq sino no le indicas de donde saca esa base de datos, es como que digas copiame la imagen perro.jpg, pero de donde la sacas? de tu pagina, la de un fotolog? se entiende?

No es necesario si solo usa una conexión, si mysql_select_db no recibe el parametro de un link abierto a una BB.DD toma el ultimo que se alla abierto, y en este caso sera el unico..

Creo que el error es este:

Código
  1. $IngresaDatos = "INSERT INTO b2_productos VALUES ('$NOMBRE_PRODUCTO', '$CANTIDAD_PRODUCTO', '$FECHA_ELABORACION');"

En esa sentencia SQL no estás indicando en que campo de la tabla va cada variable. No has indicado la estructura de tu tabla b2_productos, pero deberia ser algo asi:

Código
  1. $IngresaDatos = "INSERT INTO b2_productos (NOMBRE_PRODUCTO, CANTIDAD_PRODUCTO, FECHA_ELABORACION) VALUES ('$NOMBRE_PRODUCTO', '$CANTIDAD_PRODUCTO', '$FECHA_ELABORACION');"

Suponiendo que así se llamen los campos en tu tabla..me explico?  ;D

Saludos


Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos
Publicado por: Skeletron en 4 Diciembre 2009, 16:14 pm
(1), creo que no es necesario poner esos datos al comienzo cuando los colocas a todos los de la tabla y en el orden predeterminado (no estoy seguro de lo que digo)



Porque no copias y pegar nuevamente como ha quedado por ahora el codigo, y donde sigue el error..


Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos
Publicado por: raul338 en 4 Diciembre 2009, 23:19 pm
(1), creo que no es necesario poner esos datos al comienzo cuando los colocas a todos los de la tabla y en el orden predeterminado (no estoy seguro de lo que digo)

No creas, No es necesario poner todas las columnas cuando las vas a completar Todas. Pero aca el problema es que no sabemos si el completa todas las columnas o no (se entiende no?) ;)

No contesto mas el tipo, habria que esperarlo


Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos
Publicado por: Skeletron en 4 Diciembre 2009, 23:34 pm
Debe haberlo solucionado.. y dejó el tema por olvidado..


Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos
Publicado por: ~V en 5 Diciembre 2009, 16:52 pm
Disculpen por no haber contestado.

Leyendo sus consejos , eh probado con lo que dice :  castg", y no me produce niun cambio, todavía me sale en blanco la pagina, lo mismo  con lo que me pone (1),

Pero  leyendo, sus comentarios, Les digo (disculpen mi ignorancia),

Tengo una tabla llamada b2__productos (ya me percate que tenia dos Guiones bajos, pero corregi e igual me da el error). Esta Tabla tiene varias columnas.

En este ejemplo solo  queria llenar algunas de ellas... y por ende no estan en orden.

LO QUE TENGO:
(TABLA):     b2__productos
(Columnas) CANTIDAD_PRODUCTO
(Columnas) CARACTERISTICAS
(Columnas) CODIGO_PRODUCTO
(Columnas) FECHA_ELABORACION
(Columnas) MARCA_PRODUCTO
(Columnas) NOMBRE_PRODUCTO
(Columnas) PRECIO_PRODUCTO

entre otras...

Entonces si me dicen! (lo confirman) que debe ser en orden pues , no tengo prpoblema en hacer otra mejor pensada, ya que estoy aprendiendo.



Bien Aqui un video con lo que me pasa:
* tengo appserv, al subirlo lo hago al servidor de prueba.
* No se aprecia tan claro...:/ , pero  la idea vale. dejo foto abajo.
ymfHBB45UHM

IMG: CODIGO:
(http://img704.imageshack.us/img704/517/81756309.jpg)
http://img704.imageshack.us/img704/517/81756309.jpg

GRACIAS por VER EL TEMA :)


Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos
Publicado por: raul338 en 5 Diciembre 2009, 16:58 pm
Le hiciste caso a todos menos a mi  :-X  :¬¬ :-[ (jajaja es broma)


haz como te dije usa mysql_error

Código
  1. if ($Resultado)
  2.       echo "<br><b>Datos guardados</b> $NOMBRE_PRODUCTO, $CANTIDAD_PRODUCTO, $FECHA_ELABORACION";
  3.    else
  4.        echo "Error ".mysql_errno($conex) . ": " . mysql_error($conex);

y muestras el error que te dio  ;)


Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos
Publicado por: ~V en 5 Diciembre 2009, 20:27 pm
jeje  :silbar:

ok, me dio esto :

Citar
Error 1054: Unknown column 'FECHA_ELABORACION' in 'field list'


Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos
Publicado por: raul338 en 5 Diciembre 2009, 20:33 pm
A simple vista el error es de que te equivocaste de nombre de columna

Código
  1. INSERT INTO b2_productos (NOMBRE_PRODUCTO, CANTIDAD_PRODUCTO, FECHA_ELABORACION) VALUES ('$NOMBRE_PRODUCTO', '$CANTIDAD_PRODUCTO', '$FECHA_ELABORACION');

Pero....viendo el video, la fecha la pones como "3 dic 2008", y no es asi, el formato que tienes que poner la fecha es AAAA-MM-DD (2008-12-3)
Busca en google y hay muchas funciones para convertir fechas  ;)


Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos
Publicado por: ~V en 5 Diciembre 2009, 22:03 pm
amm, bueno, sabes... Realize lo siguiente

Elimine la columna FECHA_ELABORACION   del codigo.

y Probe con las oras 2 restantes... y me ingreso. funciono!!


ya,

luego vuelvo a probar (si con las dos columnas nada mas), y me sale el siguiente error

Citar
Error 1062: Duplicate entry '0' for key 1


 No puedo volver a ingresar... : (
*revise en  localhost phpmyadmin, y si esta ingresada...
_______________________
_______________________

Ya pero entonces la columna FECHA__ELABORACION, me doy cuenta de lo siguiente:

yo la tenia con 1 guion Bajo, y eran 2, pues Lo corrijo!...

dejo el code como deberia ser... y  me arroja en blanco la pagina...

Igual tengo pensado Crear otra BD, mas simple en los nombres :s,
__________________________
__________________
___________________________

Codigo si funciona, pero sin la columna FECHA__ELABORACION, con el error
Citar
Error 1062: Duplicate entry '0' for key 1

Código:

<?
$conex = @mysql_connect ("localhost","root","miclave1")

               or die ("No se pudo realizar la conexión  ");

mysql_select_db ("nph",$conex);

$NOMBRE_PRODUCTO=$HTTP_POST_VARS['NOMBRE_PRODUCTO'];
$CANTIDAD_PRODUCTO =$HTTP_POST_VARS['CANTIDAD_PRODUCTO'];



//comprobamos que los valores no sean vacios  o incorrectos en tipo

if (!(empty ($NOMBRE_PRODUCTO)) && !(empty($CANTIDAD_PRODUCTO))    ){

$IngresaDatos = "INSERT INTO b2__productos (NOMBRE_PRODUCTO, CANTIDAD_PRODUCTO) VALUES ('$NOMBRE_PRODUCTO', '$CANTIDAD_PRODUCTO');";
 
     $Resultado = mysql_query ($IngresaDatos, $conex);
   

if ($Resultado)
       echo "<br><b>Datos guardados</b> $NOMBRE_PRODUCTO, $CANTIDAD_PRODUCTO";
    else
       echo "Error ".mysql_errno($conex) . ": " . mysql_error($conex);


    }
?>



PD: como les sale en colores el codigo, yo le pongo codigo
Código:
 [   /  code]  (con espacio pa q no qede mal..:/

Otra consulta: el FECHA__ELABORACION, la tengo en  varchar 20 ,  varchar sera el problema? :


Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos
Publicado por: [u]nsigned en 5 Diciembre 2009, 22:14 pm
Eso es porque a una columna PRIMARY_KEY (o UNIQUE) le estas metiendo dos veces el mismo valor en dos registos diferentes.

Si se trata de la columna ID deberias dehjarla como AUTO_INCREMENT y que  SQL se encargue de meterle el valor correspondiente.

Si se trata de un campo que necesariamente necesitas meter al  menos una vez un valor duplicado (ya existente en otro registro -fila-) no lo pongas como PRIMARY_KEY ni como UNIQUE

Saludos



Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos
Publicado por: Skeletron en 5 Diciembre 2009, 23:35 pm
Pero amigo... mira.. tu tienes que aprender algo:

http://translate.google.com.ar/?hl=es#
Si entras a esa web, el 90% de tus problemas se solucionan.. en programacion.. te lo juro..
Entras ahí y colocas:

Duplicate entry '0' for key 1

y veras que te traduce a:
Entrada duplicada '0 'para la tecla 1


Entrada Duplicada... es obvio que tienes en la base de datos, una "entrada" o "registro" con el mismo "ID" o algun dato que el que quieres ingresar.. y no se admiten repetidos..

En serio amigo.. agrega esa web a tus MARCADORES en firefox.. es gran ayuda ;)


Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos
Publicado por: [u]nsigned en 6 Diciembre 2009, 00:18 am
En este caso key es clave, no tecla Google Traductor owned  :xD


Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos
Publicado por: ~V en 6 Diciembre 2009, 01:49 am
DAle, si habia  puesto el error en google, y si tengo el traductor .

La  consulta es, hay forma de modificarlo en phpmyadmin? o en el script... como : (.

bueno igual debo crear una BD mejor planteada. esto me a servido de mucha experiencia.

gracias  a los que an respoondido : )



Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos
Publicado por: Skeletron en 6 Diciembre 2009, 02:15 am
fijate en el phpmyadmin
que en esa tabla, seguramente tienes un "INDICE" UNIQUE en alguna columna...
eliminalo..


Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos
Publicado por: raul338 en 6 Diciembre 2009, 02:32 am
mira si tenes una clave primaria (representada por una llave) en una columna que no es numerica, sacala ya y crea otra columna que sea "id" le pones integer, primary key (la llavecita) y le marcas "AUTO_INCREMENT"

Si ya tenes una columna integer que te sirva de contador, agregale lo que le falta (de lo que dije arriba)


Título: Re: Php & mysql: se conecta a La BD, pero no Inserta datos [solucionado]
Publicado por: ~V en 6 Diciembre 2009, 02:50 am
Wena :) Skeletron

 si hay me fije, estaban ,   al tratar de eliminarla o agregarle auto_increment no me dejaba D:

Vale: raul338
 Lo hice , y ahora puedo ingresar varios productos a la ves, gracias.!

Ahora tratare de hacer un mejor trabajo, mas ordeando D: , vale por responderme.

; D

: P vere como me va ;D

PUEDEN CERRAR: eh aprendido, cualquier otra duda, si no logro averiguar  ppreguntare de nuevo. gracias