Foros del Web » Programando para Internet » PHP »

no jme escribe en la BD

Estas en el tema de no jme escribe en la BD en el foro de PHP en Foros del Web. Hola, no me escribe el script en la base de datos, y no se por que, ya que lo veo todo que esta bien, aquí ...
  #1 (permalink)  
Antiguo 22/07/2011, 14:37
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 15 años, 1 mes
Puntos: 6
no jme escribe en la BD

Hola, no me escribe el script en la base de datos, y no se por que, ya que lo veo todo que esta bien, aquí dejo el código haber si me podéis echar 1 mano:


Sistema que escribe en la BD
Código PHP:
<?
//conectamos a la base
$connect=mysql_connect("XXXXXX","XXXXXXX","XXXXXXX"); 
//Seleccionamos la base 
mysql_select_db("XXXXXXX",$connect);
//recibimos las variables enviadas por el formulario
$titulo=$_POST[titulo];
$autor=$_POST[autor];
$categoria=$_POST[categoria];
$articulo=$_POST[articulo];
//insertamos los registros almacenados en las variables
mysql_query("insert into noticias(titulo,autor,categoria,articulo,fecha)
values('$titulo','$autor','$categoria','$articulo',NOW()"
,$connect);
header("location: index.php");
?>

Form que manda al sistema lo que debe escribir
Código HTML:
Ver original
  1. <form action="procesanoticia.php" method="post">
  2. Titulo noticia:<br>
  3. <input type="text" name="titulo"><br>
  4. Autor:<br>
  5. <input type="text" name="autor"><br>
  6. Categoria:<br>
  7. <input type="text" name="categoria"><br>
  8. Escriba el articulo<br>
  9. <textarea name="articulo" cols="50" rows="10"></textarea><br>
  10. <input type="submit" value="Publicar"><br>
  11. </form>
  #2 (permalink)  
Antiguo 22/07/2011, 14:40
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: no jme escribe en la BD

haz en echo tu consulta y pegala en tu phpmyadmin y prueba a ver si te da algún error
__________________
aconcaguaestudio.com
  #3 (permalink)  
Antiguo 22/07/2011, 14:49
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: no jme escribe en la BD

perdona por mi ignorancia iviamontes pero como lo hago?
  #4 (permalink)  
Antiguo 22/07/2011, 14:55
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: no jme escribe en la BD

tranqui amigo que nadie nace sabiendo

echo $sql = "insert into noticias(titulo,autor,categoria,articulo,fecha)
values('$titulo','$autor','$categoria','$articulo' ,NOW() ";

mysql_query($sql, $connect);


phpmyadmin es para manejar tus bd,
generalmente está aca

http://localhost/phpmyadmin/
__________________
aconcaguaestudio.com
  #5 (permalink)  
Antiguo 22/07/2011, 14:59
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: no jme escribe en la BD

lo pongo asi entonces verdad?:

Código PHP:
Ver original
  1. <?
  2. $connect=mysql_connect("xxx","xxx","xx");
  3. mysql_select_db("db375118189",$connect);
  4. $titulo=$_POST[titulo];
  5. $autor=$_POST[autor];
  6. $categoria=$_POST[categoria];
  7. $articulo=$_POST[articulo];
  8. echo $sql = "insert into noticias(titulo,autor,categoria,articulo,fecha)
  9. values('$titulo','$autor','$categoria','$articulo' ,NOW() ";
  10.  
  11. mysql_query($sql, $connect);
  12. ?>

Última edición por GatorV; 22/07/2011 a las 15:19 Razón: Datos de conexión.
  #6 (permalink)  
Antiguo 22/07/2011, 15:14
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: no jme escribe en la BD

me ha dado: insert into noticias(titulo,autor,categoria,articulo,fecha) values('','','','' ,NOW()
  #7 (permalink)  
Antiguo 22/07/2011, 15:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: no jme escribe en la BD

Si te fijas no tienes valores que estan en el formulario, estas seguro que estas actuando sobre ese formulario?

Realiza un var_dump($_POST); para que veas que valores te llegan por POST.

Saludos.
  #8 (permalink)  
Antiguo 22/07/2011, 15:19
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: no jme escribe en la BD

me ha dado: array(0) { }
  #9 (permalink)  
Antiguo 22/07/2011, 15:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: no jme escribe en la BD

En ese caso no esta enviando tu browser las variables, tienes algun javascript que este actuando con tu formulario?
  #10 (permalink)  
Antiguo 22/07/2011, 15:27
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: no jme escribe en la BD

Cita:
Iniciado por GatorV Ver Mensaje
En ese caso no esta enviando tu browser las variables, tienes algun javascript que este actuando con tu formulario?
no, solo esta lo que he puesto en el primer mensaje...

lo he usado asi:

Código PHP:
Ver original
  1. <?
  2. $connect=mysql_connect("xxxxx","xxxxx","xxxx");
  3. mysql_select_db("xxxx",$connect);
  4. var_dump($_POST);
  5. ?>
  #11 (permalink)  
Antiguo 22/07/2011, 15:29
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: no jme escribe en la BD

Ajam...

Vale ahora me ha dado lo siguiente:

Cita:
array(4) { ["titulo"]=> string(6) "Prueba" ["autor"]=> string(3) "DSC" ["categoria"]=> string(6) "prueba" ["articulo"]=> string(9) "PRUEBAAAA" }
  #12 (permalink)  
Antiguo 22/07/2011, 15:30
Avatar de DinamiteDog  
Fecha de Ingreso: febrero-2005
Ubicación: Rosario, Argentina
Mensajes: 77
Antigüedad: 19 años, 2 meses
Puntos: 4
Respuesta: no jme escribe en la BD

Pone esto.. te va a andar, y sobre todo chequea siempre que hayas puesto bien los paréntesis y comillas:

Código PHP:
Ver original
  1. <?php
  2. $connect=mysql_connect("xxx","xxx","xx");
  3. mysql_select_db("db375118189",$connect);
  4. $titulo=$_POST[titulo];
  5. $autor=$_POST[autor];
  6. $categoria=$_POST[categoria];
  7. $articulo=$_POST[articulo];
  8. $sql = "INSERT INTO noticias VALUES('$titulo','$autor','$categoria','$articulo' ,NOW())";
  9.  
  10. mysql_query($sql, $connect) or die("Tuve un error en: " . mysql_error() . "<br />Con la consulta: " . $sql);
  11.  
  12. ?>
__________________
All generalizations are false, including this one ~ Mark Twain
  #13 (permalink)  
Antiguo 22/07/2011, 15:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: no jme escribe en la BD

También para evitar errores usa comillas simples entre tus valores:
Código PHP:
Ver original
  1. $titulo = $_POST['titulo'];

Saludos.
  #14 (permalink)  
Antiguo 22/07/2011, 15:47
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: no jme escribe en la BD

he puesto lo que me ha dicho el compañero de ahí arriba(DinamiteDog) y me da esto:

Cita:
Tuve un error en: Column count doesn't match value count at row 1
Con la consulta: INSERT INTO noticias VALUES('c','dscd','cvbcvb','sdsdsdsd' ,NOW())
lo que has dicho tu gatorv lo he puesto las 'X' y sigue igual sin hacer nada.
  #15 (permalink)  
Antiguo 22/07/2011, 15:51
Avatar de DinamiteDog  
Fecha de Ingreso: febrero-2005
Ubicación: Rosario, Argentina
Mensajes: 77
Antigüedad: 19 años, 2 meses
Puntos: 4
Respuesta: no jme escribe en la BD

Exporta la tabla y mostranos como son las columnas, eso sucede debido a que hay mas datos en el query que columnas en la DB.
__________________
All generalizations are false, including this one ~ Mark Twain
  #16 (permalink)  
Antiguo 22/07/2011, 15:54
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: no jme escribe en la BD

Cita:
CREATE TABLE `noticias` (
`id_noticia` int(4) NOT NULL auto_increment,
`autor` varchar(255) collate latin1_german2_ci default NULL,
`titulo` varchar(255) collate latin1_german2_ci default NULL,
`categoria` varchar(255) collate latin1_german2_ci default NULL,
`fecha` datetime NOT NULL,
`noticia` blob,
KEY `id_noticia` (`id_noticia`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci AUTO_INCREMENT=1 ;
  #17 (permalink)  
Antiguo 22/07/2011, 15:56
Avatar de DinamiteDog  
Fecha de Ingreso: febrero-2005
Ubicación: Rosario, Argentina
Mensajes: 77
Antigüedad: 19 años, 2 meses
Puntos: 4
Respuesta: no jme escribe en la BD

Entonces sería...

Código PHP:
Ver original
  1. <?php
  2. $connect=mysql_connect("xxx","xxx","xx");
  3. mysql_select_db("db375118189",$connect);
  4. $titulo=$_POST['titulo'];
  5. $autor=$_POST['autor'];
  6. $categoria=$_POST['categoria'];
  7. $articulo=$_POST['articulo'];
  8. $sql = "INSERT INTO noticias VALUES(NULL, '$autor', '$titulo', '$categoria', NOW(), '$articulo')";
  9.  
  10. mysql_query($sql, $connect) or die("Tuve un error en: " . mysql_error() . "<br />Con la consulta: " . $sql);
  11.  
  12. ?>
__________________
All generalizations are false, including this one ~ Mark Twain
  #18 (permalink)  
Antiguo 22/07/2011, 16:02
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: no jme escribe en la BD

Bien, ya sube todo, menos lo de articulo, podrias explicarme mas o menos que has echo? he visto lo de las $_POST['xxx']; y lo de null que es mas o menos lo que hace?
  #19 (permalink)  
Antiguo 22/07/2011, 16:13
Avatar de DinamiteDog  
Fecha de Ingreso: febrero-2005
Ubicación: Rosario, Argentina
Mensajes: 77
Antigüedad: 19 años, 2 meses
Puntos: 4
Respuesta: no jme escribe en la BD

Las comillas simples son solo para omitir errores, no se si hace la diferencia pero es una convención.

Hay un inconveniente en tu tabla, la columna NOTICIA no debería ser BLOB, debería ser TEXT.

Te explico la siguiente línea:
Código PHP:
Ver original
  1. $sql = "INSERT INTO noticias VALUES(NULL, '$autor', '$titulo', '$categoria', NOW(), '$articulo')";

Sintaxis para insertar una fila a la base de datos en la tabla tabla con los valores valores: INSERT INTO tabla VALUES(valores)

Los valores van ordenados como están en la tabla:
Código MySQL:
Ver original
  1. CREATE TABLE `noticias` (
  2. `id_noticia` int(4) NOT NULL auto_increment,
  3. `autor` varchar(255) collate latin1_german2_ci default NULL,
  4. `titulo` varchar(255) collate latin1_german2_ci default NULL,
  5. `categoria` varchar(255) collate latin1_german2_ci default NULL,
  6. `fecha` datetime NOT NULL,
  7. `noticia` blob,
  8. KEY `id_noticia` (`id_noticia`)
  9. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci AUTO_INCREMENT=1;

En el siguiente orden entonces: ID_NOTICIA, AUTOR, TITULO, CATEGORIA, FECHA, NOTICIA

Por qué pongo ID_NOTICIA como null? Debido a que null quiere decir que le pasamos un valor "vacío", al tener auto_increment sumará 1 al último valor utilizado.

Por lo que los valores quedarían:
Código MySQL:
Ver original
  1. (null, 'autor', 'titulo', 'categoria', NOW(), 'noticia')

Por lo que formamos estos valores en la sentencia correspondiente para ingresar una fila a la base de datos de la siguiente manera:
Código PHP:
Ver original
  1. INSERT INTO noticias VALUES(null, $autor, $titulo, $categoria, NOW(), $articulo);

Cabe destacar, NOW() es una función de MySQL que representa la hora actual (en el momento de ingresar la fila).

El resultado final sería:
Código PHP:
Ver original
  1. $sql = "INSERT INTO noticias VALUES(null, $autor, $titulo, $categoria, NOW(), $articulo);

Espero te haya servido, saludos!
__________________
All generalizations are false, including this one ~ Mark Twain
  #20 (permalink)  
Antiguo 22/07/2011, 16:18
Avatar de Most  
Fecha de Ingreso: marzo-2009
Mensajes: 642
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: no jme escribe en la BD

Si me ha servido mucho, muchas gracias compañero ;)

Etiquetas: bd, mysql, registro, sql, formulario, variables
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 04:15.