Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/03/2007, 03:47
1pere3
 
Fecha de Ingreso: noviembre-2006
Mensajes: 68
Antigüedad: 17 años, 5 meses
Puntos: 0
codigo para insertar/editar noticias en la BD

Hola a todos,

Siempre he estado usando un codigo para crearme mis gestores de contenidos. Me desde el primer dia que tiene un 'fallo' y lo he ido subsanando a mano... Pero cansado de darle vueltas me gustaria tener su opinion.

El siguiente código, me introduce en una base de datos de noticias: titulo, sinopsis, contenido, si es destacada, su fecha y una imagen.

Código PHP:
<?
if(isset($_POST['new']))
    {
        
$titulo $_POST['titulo'];
        
$sinopsis $_POST['sinopsis'];
        
$contenido $_POST['contenido'];
        
$destacada $_POST['destacada'];
        
$fecha $_POST['fecha'];

        
$qstart "INSERT INTO noticias(titulo, sinopsis, contenido, destacada, fecha";
        
$qend "values('".$titulo."','".$sinopsis."', '".$contenido."', '".$destacada."', '".$fecha."'";

        if (isset(
$_FILES['archivo']['name']) ) {
            
$nimagen $_FILES['archivo']['name'];
            
            
$newfile $_SERVER['DOCUMENT_ROOT'].$dirgaleria."".$nimagen;
            

            if (
move_uploaded_file($_FILES['archivo']['tmp_name'], $newfile) ) {
                
chmod($newfile0777);
            
                echo 
"Imagen añadida con exito!<br>";
            } else {
                echo 
"";
            }
            
$qstart .= ", file";
            
$qend .= ", '".$nimagen."'";
        }
        
        
$query $qstart.") ".$qend.")";

        
mysql_query($query);
        if (
mysql_errno()) { echo "MySQL error ".mysql_errno().": ".mysql_error()."<br>"; exit; }
    }
?>
<?
    
if(isset($_POST['edit']))
    {
        
$titulo $_POST['titulo'];
        
$sinopsis $_POST['sinopsis'];
        
$contenido $_POST['contenido'];
        
$destacada $_POST['destacada'];
        
$fecha $_POST['fecha'];
    
        
$query "update noticias set titulo='".$titulo."', sinopsis='".$sinopsis."', contenido='".$contenido."', destacada='".$destacada."', fecha='".$fecha."'";
    
        if (isset(
$_FILES['archivo']['name'])) {
            
$nimagen $_FILES['archivo']['name'];
            
$newfile $_SERVER['DOCUMENT_ROOT'].$dirgaleria."".$nimagen;
            if (
move_uploaded_file($_FILES['archivo']['tmp_name'], $newfile)) {
                
chmod($newfile0777);
                echo 
"Imagen añadida con exito!<br>";
            } else {
                echo 
"<br>";
            }
        
            
$query .= ", file='".$nimagen."'";
        }

        
mysql_query($query'where id='.$edit);
        if (
mysql_errno()) { echo "MySQL error ".mysql_errno().": ".mysql_error()."<br>"; exit; }
    }
?>
El codigo funciona tanto para insertar como para editar. Pero cuando quiero editar una noticia, para cambiar cualquier error en mi texto estoy obligado a volver a subir la imagen, ya que si dejo en blanco el input de la imagen, se me borra el contenido de ese campo en la BD.

Mi form para editar las noticias es:

Código:
<h1>Notícies: editar</h1>
        <form action="not.php" method="post" enctype="multipart/form-data">
		<p>
			Título:<br />
			<input type="text" name="titulo" class="texto" value="<?echo $fila["titulo"];?>" />
		</p>
		<p>
			Sinopsis:<br />
			<textarea name="sinopsis"><?echo $fila["sinopsis"];?></textarea>
		</p>
		<p>
			Descripción:<br />
			<textarea name="contenido"><?echo $fila["contenido"];?></textarea>
		</p>
		<p>
			Fecha (AAAA/MM/DD):<br />
			<input type="text" name="fecha" class="texto" value="<?echo $fila["fecha"];?>" />
		</p>
		<p>
		Imagen:<br />
			<input type="File" name="archivo" />
		</p>
	
		<p>
			En portada:<br />
			<select name="destacada" class="texto">
				<OPTION VALUE="SI" <?if($fila["destacada"]=="SI") echo "selected";?>>SI
				<OPTION VALUE="NO" <?if($fila["destacada"]=="NO") echo "selected";?>>NO
			</select>
		</p>
		<p align="right">
			<input type="Hidden" name="edit" value="<?echo $edit;?>" />
			<input type="image" src="<?echo $CFG->imagedir?>/submit.gif" />
		</p>
	</form>
Saben que codigo puedo agregar a la fila:

<input type="File" name="archivo" />

Para que si no introduzco nada al editar, me mantenga la foto que tenia??

Gracias!!