Foros del Web » Programando para Internet » PHP »

los campos aparecen en blanco en la base de datos

Estas en el tema de los campos aparecen en blanco en la base de datos en el foro de PHP en Foros del Web. hola, a ver si a alguien se le ocurre una causa para mi problema: tengo un sistema de noticias básico en php (título, texto y ...
  #1 (permalink)  
Antiguo 04/11/2008, 05:36
 
Fecha de Ingreso: octubre-2008
Mensajes: 13
Antigüedad: 15 años, 5 meses
Puntos: 0
Pregunta los campos aparecen en blanco en la base de datos

hola,
a ver si a alguien se le ocurre una causa para mi problema:
tengo un sistema de noticias básico en php (título, texto y foto) a través de un panel de control. al subir las noticias desde el formulario va todo correcto y no me da ningún error, pero luego me muestra los campos vacíos y efectivamente voy a mySQLAdmin a ver la tabla y tiene los campos nuevos, pero vacíos.
los del hosting me dicen que el servidor funciona bien y ya no se qué hacer.
alguna idea?? gracias por adelantado.
  #2 (permalink)  
Antiguo 04/11/2008, 05:42
Avatar de karlic0s  
Fecha de Ingreso: abril-2007
Ubicación: Cartagena (Murcia)
Mensajes: 241
Antigüedad: 17 años
Puntos: 18
Respuesta: los campos aparecen en blanco en la base de datos

Si puiseras el código que introduce los datos en la base de datos podriamos ayudarte mejor :)
Has de tener algún error en el insert into tabla... o en las variables, es lo más común
  #3 (permalink)  
Antiguo 04/11/2008, 08:11
 
Fecha de Ingreso: octubre-2008
Mensajes: 13
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: los campos aparecen en blanco en la base de datos

Cierto. Este es el formulario que recoge los datos:
<form action="add_noticia2.php" method="post" enctype="multipart/form-data">
<table border="0" width="100%">
<tr>
<td width="15%" valign="top" class="verdana8"><font color="#333333">T&iacute;tulo</font></td>
<td><input name="titulo" type="text" class="cajatexto" id="titulo" size="50"></td>
</tr>
<tr>
<td valign="top" class="verdana8"><font color="#333333">Texto</font></td>
<td><textarea name="texto" cols="50" rows="10" class="cajatexto" id="texto"></textarea></td>
</tr>
<tr>
<td valign="top" class="verdana8"><font color="#333333">Foto</font></td>
<td><input name="foto" type="file" class="cajatexto" id="foto"></td>
</tr>
</table>
<input type="submit" value="A&ntilde;adir noticia">
</form>


y este código los recoje en add_noticia.php y los sube a la base de datos:
<?

if ($foto)
{
copy($foto,"noticias/$foto_name");
mysql_db_query($database,"INSERT INTO noticias (foto) VALUES ('$foto_name')") or die(mysql_error());
$arrayproductos=mysql_db_query($database,"SELECT * FROM noticias WHERE foto='$foto_name'") or die(mysql_error());
$prod=mysql_fetch_array($arrayproductos);
$idpro=$prod["id"];
$fotonueva=$idpro."_uno";
if ($foto_type=="image/gif")
{
$fotonueva=$idpro."_uno.gif";
rename("noticias/$foto_name","noticias/$fotonueva");
}
else
{
$fotonueva=$idpro."_uno.jpg";
rename("noticias/$foto_name","noticias/$fotonueva");
}
mysql_db_query($database,"UPDATE noticias SET foto='$fotonueva' WHERE id='$idpro'") or die(mysql_error());


mysql_db_query($database,"UPDATE noticias SET titulo='$titulo',texto='$texto',titulogal='$titulo gal',textogal='$textogal' WHERE id='$idpro'") or die(mysql_error());

}
else
{
mysql_db_query($database,"INSERT INTO noticias (titulo,texto,titulogal,textogal) VALUES ('$titulo','$texto','$titulogal','$textogal')") or die(mysql_error());
}
echo 'Noticia añadida correctamente';
?>
  #4 (permalink)  
Antiguo 04/11/2008, 09:22
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: los campos aparecen en blanco en la base de datos

Hola version,

Si tienes desactivado el uso de register_globals, vas a tener que usar $_POST['nombre_de_la_variable'] para rescatar las variables y también usar $_FILES.

Saludos.
  #5 (permalink)  
Antiguo 04/11/2008, 10:17
 
Fecha de Ingreso: octubre-2008
Mensajes: 13
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: los campos aparecen en blanco en la base de datos

hum, muchas gracias pero no me he enterado de nada.
podrías por favor decirme cómo quedaría el código con eso que me indicas para probarlo??
gracias de nuevo por la ayuda, necesito sacarlo adelante.
  #6 (permalink)  
Antiguo 04/11/2008, 10:34
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: los campos aparecen en blanco en la base de datos

En lugar de usar $titulo, debes de usar $_POST['titulo'], en lugar de usar $foto, debes de usar $_FILES['foto'], etc. Lee lo siguiente: Variables Predefinidas.

Saludos.
  #7 (permalink)  
Antiguo 05/11/2008, 02:23
 
Fecha de Ingreso: octubre-2008
Mensajes: 13
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: los campos aparecen en blanco en la base de datos

muchisimas gracias, GatorV.
estoy en ello pero no me funciona. no se si me dejo algo o estoy cambiando mal las variables. (mientras voy a comprarme una pistola para pegarme un tiro) podría por favor alguien echarle un vistazo??:

<?

if ($_FILES['foto'])
{
copy($_FILES['foto'],"noticias/$foto_name");
mysql_db_query($database,"INSERT INTO noticias (foto) VALUES ('$foto_name')") or die(mysql_error());
$arrayproductos=mysql_db_query($database,"SELECT * FROM noticias WHERE foto='$foto_name'") or die(mysql_error());
$prod=mysql_fetch_array($arrayproductos);
$idpro=$prod["id"];
$fotonueva=$idpro."_uno";
if ($foto_type=="image/gif")
{
$fotonueva=$idpro."_uno.gif";
rename("noticias/$foto_name","noticias/$fotonueva");
}
else
{
$fotonueva=$idpro."_uno.jpg";
rename("noticias/$foto_name","noticias/$fotonueva");
}
mysql_db_query($database,"UPDATE noticias SET foto='$fotonueva' WHERE id='$idpro'") or die(mysql_error());


mysql_db_query($database,"UPDATE noticias SET titulo='$_POST['titulo']',texto='$_POST['texto']',titulogal='$_POST['titulogal']',textogal='$_POST['textogal']' WHERE id='$idpro'") or die(mysql_error());

}
else
{
mysql_db_query($database,"INSERT INTO noticias (titulo,texto,titulogal,textogal) VALUES ('$_POST['titulo']','$_POST['texto']','$_POST['titulogal']','$_POST['textogal']')") or die(mysql_error());
}
echo 'Noticia añadida correctamente';
?>

Última edición por version; 05/11/2008 a las 04:45
  #8 (permalink)  
Antiguo 05/11/2008, 09:25
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: los campos aparecen en blanco en la base de datos

En el Manual viene especificado como subir archivos correctamente, no uses copy() usa move_uploaded_file.

Por otro lado trata de construir correctamente tus SQL, aunque estas usando $_POST este te va a marcar un error si lo insertas directamente, lo mejor es hacer algo asi:

$sql = "INSERT INTO tabla VALUES('" . mysql_escape_string($_POST['variable']) . "')";

o asi:

$valor = mysql_escape_string($_POST['variable']);
$sql = "INSERT INTO tabla VALUES('$valor')";

Saludos.
  #9 (permalink)  
Antiguo 05/11/2008, 09:56
 
Fecha de Ingreso: octubre-2008
Mensajes: 13
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: los campos aparecen en blanco en la base de datos

Muchas gracias Gator por tu colaboración.
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 11:22.