Programación php
Email: Password:


¡Regístrate gratis! | ¿Has perdido tu password?

Home
Blog

En él que podrás informarte de todas las noticias relacionadas con el posicionamiento de páginas web.

Clica aquí para Entrar



Foro de programación en PHP

Responder el mensaje

Despues de un tiempo no puedo redimensionar fotos PHP Y GD

Autor: hcpag
Publicado: 18-11-2009 04:29 AM
Hola a ver si alguien me puede ayudar?

Cree un gestor de contenidos, básico para que el usuario pueda actualizar una sección de su web.
La web esta creada en flash y el formulario en php.
Primero el formulario guarda los datos en una base de datos Mysql,las imagenes se redimensionan automaticamente mediante php y gd, se genera un xml y la flash recoje los datos del xml y muestra los productos de oferta. todo funciona bien , pero al cabo de un tiempo , todo sigue funcionando menos las imagenes que no se redimensionan.
Cuando me sucede esto la unica solucion es eliminar toda la base de datos y volverla a crear logicamente volver a poner todas las ofertas.

Los scripts funcionan bien ya que si no de primeras ya me fallarian, si exporto la db, y cuando falla la importo, no me vale, tengo que eliminarla, volver a crear la tabla, la estructura y meter todos los datos desde cero.

Al final de productos.php, tengo una flash que es con la que navego por los registros de la DB y donde elimino y actualizo las ofertas (pero no las imagenes solo, solo el texto).

Vuelvo a insistir que si creo hoy la DB funciona todo correctamente y al cabo de un tiempo deja de funcionar la redimension de las imagens , pero los registros en la DB los guarda bien.

*** codigo del formulario llamado productos.php



<html>
<head>
<title>Productos</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
<style type="text/css">
<!--
#apDiv1 {
position:absolute;
left:20px;
top:26px;
width:245px;
height:300px;
z-index:1;
}
.style2 {color: #FFFF00}
.style4 {color: #FFFF00; font-weight: bold; }
.style5 {
color: #FFFFFF;
font-weight: bold;
}
.style6 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-weight: bold;
}
.style7 {font-family: Verdana, Arial, Helvetica, sans-serif}
.style8 {font-size: medium}
.style9 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 13px;
font-weight: bold;
}
.style10 {font-size: x-small}
.style11 {font-size: small}
.style12 {font-size: 12px}
.style13 {font-size: 14px}
.style14 {
color: #FFFF00;
font-weight: bold;
font-size: 13px;
}
.style15 {font-size: 13px}
.style19 {font-size: 13px; font-weight: bold; }
.style20 {
font-size: 20px
}
.style21 {
margin-left: 39px;
margin-right: 33px;
margin-top: 44px;
}
.style22 {
font-size: 13px;
font-family: Verdana, Arial, Helvetica, sans-serif;
}
.style23 {
cursor:pointer;
}
-->
</style>
</head>

<body bgcolor="#000000" text="#FFFFFF">
<table width="903" height="800" border="0" bordercolor="#FFFF00">
<tr bordercolor="#FFFF00" bgcolor="#666666">
<td height="20" colspan="2" valign="middle"><div align="center" class="style6 style20">
<p><u><font color="#FFFF00">Formulario para añadir nuevos productos</font></u></p>
</div></td>
</tr>
<tr bordercolor="#FFFF00" bgcolor="#666666">
<td bordercolor="#FFFF00" style="width: 464px; padding-right: 10px;">
<form action="" method="post" enctype="multipart/form-data" name="form" id="form">
<p align="right"> </p>
<p align="right" class="style12 style15">
<label> <span class="style4"><span class="style7">Adjuntar imágen</span></span><strong>
<input name="archivo" type=file class="style23" id="archivo" size="30">
</strong></label>
</p>
<p align="right" class="style19">
<label><span class="style2"><span class="style7">Categoría</span></span>
<input name="categoria" type="text" id="categoria" value="" size="45">
</label>
</p>
<p align="right" class="style19">
<label><span class="style2"><span class="style7">Descripción</span></span>
<textarea name="descripcion" cols="35" rows="2" wrap="physical" id="descripcion"></textarea>
</label>
</p>

<p align="right" class="style19">
<label><span class="style2"><span class="style7">Fabricante</span></span>
<input name="fabricante" type="text" id="fabricante" value="" size="45">
</label>
</p>

<p align="right" class="style19">
<label><span class="style2"><span class="style7">Calidad</span></span>
<input name="calidad" type="text" id="calidad" value="" size="45">
</label>
</p>

<p align="right" class="style19">
<label></label>
<label></label>
</p>

<p align="center" class="style19">
<label>
<span class="style2"><span class="style7">Observaciones<br>
</span></span>
<span class="style7">
<textarea name="observaciones" cols="45" rows="5" id="observaciones" onKeyDown="if(this.value.length > 100){this.value=this.value.substring(0,99); alert('Has superado el tamaño máximo permitido');}"></textarea>
</span>
</label>
</p>

<p align="center" class="style19 style23">
<label>
<span class="style2"><span class="style7">Marcar como nueva oferta</span></span>
<input name="oferta" type="checkbox" id="oferta" value="imagenes/splash2.jpg">

</label>
</p>


<p align="center" class="style19">
<label><span class="style2"><span class="style7">Precio</span></span>
<input name="precio" type="text" id="precio" value="" size="20">
</label>
</p>

<p align="center" class="style15 "><strong>
<input name="submit" type="submit" class="style23" value="Guardar">
<input name="Reset" type="reset" class="style23" value="Limpiar">
</strong></p>
<p align="center" class="style12 style15"> </p>
</form> </td>
<td width="447" height="10" valign="top">
<blockquote class="style21" style="width: 369px; height: 357px">
<p align="left"><span class="style7"><span class="style8"><span class="style10"><span class="style11"><span class="style12"><span class="style13"><span class="style14"><u>Instrucciones:</u></span></span></span></span></span></span></span></p>
<p align="left" class="style9"> Formatos válidos de imagenes <span class="style2">.jpg</span> y <span class="style2">.jpeg</span>.</p>
<p align="left" class="style9">Las imagenes se redimensionan automáticamente a la medida necesaria.</p>
<p align="left" class="style9">Las imagenes <span class="style2">no podrán superar los 2 Megas</span>.</p>
<p align="left" class="style9">El tiempo que tarda en guardar el nuevo producto depende del peso de la imágen subida y de la conexión del cliente</p>
<p align="left" class="style9">Una vez guardado el producto, aparecerá abajo de último, en caso de haber borrado uno aparecerá en el lugar del producto borrado.</p>
<p align="left" class="style9">En el menú <span class="style2">Navegar</span>, podrá buscar y borrar los productos.</p>
<p align="left" class="style9">Tenga en cuenta que el primer producto es el 0.</p>
</blockquote>
<p align="left" class="style15"> </p></td>
</tr>
<tr bordercolor="#FFFF00" bgcolor="#666666">
<td height="10" colspan="2" bordercolor="#FFFF00" bgcolor="#494949"><div align="center" class="style5">
<?php
$extensiones=array("jpg","jpeg");
$dbuser="david"; //usuario de la base de datos
$dbpass="hcebolla123"; // password para la base
$categoria=$_REQUEST["categoria">;
$descripcion=$_REQUEST["descripcion">;
$fabricante=$_REQUEST["fabricante">;
$calidad=$_REQUEST["calidad">;
$observaciones=$_REQUEST["observaciones">;
$precio=$_REQUEST["precio">;
$oferta=$_REQUEST["oferta">;
if (isset($_FILES['archivo']['name'])){ // si estoy subiendo el archivo o es la primera carga de la pagina
$path="imagenes/"; // path adonde la voy a guardar, en este caso mi_ubicacion_actual/imagenes
$path2="imagenes/";
$nombre=$_FILES['archivo']['name'];
$tamanio=$_FILES['archivo']['size'];
$tipo=$_FILES['archivo']['type'];
$var = explode(".","$nombre");
$num = count($extensiones);
$valor = $num-1;
$admitido=false;
for($i=0; $i<=$valor; $i++) {
if($extensiones[$i] == $var[1]) {
$admitido=true;//es una extension valida
break;
}
}
if ($admitido){
$link=mysql_connect("localhost",$dbuser,$dbpass);
mysql_select_db("ocasion");
$tamanio=round($tamanio/1024,0); //redondeo y paso a kb
$sql="Insert Into ofer (tipo,size,categoria,descripcion,fabricante,calidad,observaciones,precio,oferta,path2,path) values ('" .$tipo. "'," .$tamanio. ",'".$categoria. "','" .$descripcion. "','" .$fabricante. "','" .$calidad. "','" .$observaciones. "','" .$precio. "','" .$oferta. "','" .$path2. "','" .$path. "')";
mysql_query($sql);
$lastid=mysql_insert_id();
$path.=$lastid . "-" . $nombre;
$ql = "SELECT MAX(id) FROM ofer";
$resultado = mysql_query($ql);
$max_id=mysql_result($resultado,0);
$path2.= $max_id . "g-" . $nombre;
$sql="Update ofer set path='" . $path . "',path2='" . $path2 . "' Where id=$lastid";
mysql_query($sql);

if (is_uploaded_file($_FILES['archivo']['tmp_name']))
{
copy($_FILES['archivo']['tmp_name'], "$path");
copy($_FILES['archivo']['tmp_name'], "$path2");
require ("redimensionar_imagenes.php");
echo "<META HTTP-EQUIV='refresh' CONTENT='0; URL=$PHP_SELF'>";
require ("generar_xml.php");
?>
<font size="2" face="Verdana, Arial, Helvetica, sans-serif">El
archivo se ha subido correctamente al servidor.</font>
<?php
if (mysql_affected_rows($link)==0){?>
<font size="2" face="Verdana, Arial, Helvetica, sans-serif">Ocurrio un error guardando
en la base de datos. </font>
<?php
}
}
else
{ ?>
<font size="2" face="Verdana, Arial, Helvetica, sans-serif">Error
al subir el archivo.</font>

<?php
}


}else{?>
<font size="2" face="Verdana, Arial, Helvetica, sans-serif">Tipo
de archivo no admitido, debe ser .jpg ó .jpeg</font>
<?php
}
}
mysql_close($link);
?>
</div></td>
</tr>
<tr bordercolor="#FFFF00" bgcolor="#333333">
<td colspan="2" style="width: 900; height: 550"><div align="center">
<script type="text/javascript">
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0','width','870','height','500','src','forma','quality','high','pluginspage','http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash','movie','forma' ); //end AC code
</script>
<noscript><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="870" height="500">
<param name="movie" value="forma.swf">
<param name=quality value=high>
<embed src="forma.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="870" height="500"></embed>
</object></noscript>
<br>
</div></td>
</tr>
</table>
</body>
</html>



este a su vez llama a redimensionar.php y generar_xml.php

*** codigo redimensionar.php



<?php

$dbuser="david"; //usuario de la base de datos
$dbpass="hcebolla123"; // password para la base
$link=mysql_connect("localhost",$dbuser,$dbpass);
mysql_select_db("ocasion");

$sql = "SELECT MAX(path) FROM ofer";
$resultado = mysql_query($sql);
$max_id=mysql_result($resultado,0);
$origen= $max_id;

$sql2 = "SELECT MAX(path2) FROM ofer";
$resultado2 = mysql_query($sql2);
$max_id2=mysql_result($resultado2,0);
$origen2= $max_id2;


//$prefijo = substr(md5(uniqid(rand())),0,6);

//$destino="imagenes/".$prefijo."_".$origen;
$destino= $origen;
$destino2=$origen2;

$destino_temporal=tempnam("tmp/","tmp");
redimensionar_jpeg($origen, $destino_temporal, 150, 150, 100);

$destino_temporal2=tempnam("tmp/","tmp");
redimensionar_jpeg2($origen2, $destino_temporal2, 350, 250, 100);
// guardamos la imagen
$fp=fopen($destino,"w");
fputs($fp,fread(fopen($destino_temporal,"r"),filesize($destino_temporal)));
fclose($fp);

$fp2=fopen($destino2,"w");
fputs($fp2,fread(fopen($destino_temporal2,"r"),filesize($destino_temporal2)));
fclose($fp2);

function redimensionar_jpeg($img_original, $img_nueva, $img_nueva_anchura, $img_nueva_altura, $img_nueva_calidad)
{
// crear una imagen desde el original
$img = ImageCreateFromJPEG($img_original);
// crear una imagen nueva
$thumb = imagecreatetruecolor($img_nueva_anchura,$img_nueva_altura);
// redimensiona la imagen original copiandola en la imagen
ImageCopyResized($thumb,$img,0,0,0,0,$img_nueva_anchura,$img_nueva_altura,ImageSX($img),ImageSY($img));
// guardar la nueva imagen redimensionada donde indicia $img_nueva
ImageJPEG($thumb,$img_nueva,$img_nueva_calidad);
ImageDestroy($img);

/*
// Mostrar la nueva imagen
imagejpeg($thumb);
*/
}
unlink($destino_temporal);

function redimensionar_jpeg2($img_original2, $img_nueva2, $img_nueva_anchura2, $img_nueva_altura2, $img_nueva_calidad2)
{
// crear una imagen desde el original
$img2 = ImageCreateFromJPEG($img_original2);
// crear una imagen nueva
$thumb2 = imagecreatetruecolor($img_nueva_anchura2,$img_nueva_altura2);
// redimensiona la imagen original copiandola en la imagen
ImageCopyResized($thumb2,$img2,0,0,0,0,$img_nueva_anchura2,$img_nueva_altura2,ImageSX($img2),ImageSY($img2));
// guardar la nueva imagen redimensionada donde indicia $img_nueva
ImageJPEG($thumb2,$img_nueva2,$img_nueva_calidad2);
ImageDestroy($img2);

/*
// Mostrar la nueva imagen
imagejpeg($thumb);
*/
}
unlink($destino_temporal2);
mysql_close($link);
?>



*** codigo generar_xml.php



<?php

$dbuser="david"; //usuario de la base de datos
$dbpass="hcebolla123"; // password para la base
$link=mysql_connect("localhost",$dbuser,$dbpass);
mysql_select_db("ocasion");
$imagen = mysql_query("SELECT * FROM ofer ORDER BY id DESC") ;


$xml = fopen ("archivo_datos.xml", "w");
if (!$xml) {
echo "No se pudo abrir el archivo XML.";
exit;
}
fwrite ($xml, '<?xml version="1.0"' . '?' .'> <ofertas>');
while ($row = mysql_fetch_array($imagen)){
$contenidoxml = ' <imagenes nombre = "'. $row["path"> .'"';
$contenidoxml .=' categoria = "'. $row["categoria"> .'"';
$contenidoxml .=' descripcion = "'. $row["descripcion"> .'"';
$contenidoxml .=' fabricante = "'. $row["fabricante"> .'"';
$contenidoxml .=' calidad = "'. $row["calidad"> .'"';
$contenidoxml .=' observaciones = "'. $row["observaciones"> .'"';
$contenidoxml .=' oferta = "'. $row["oferta"> .'"';
$contenidoxml .=' path2 = "'. $row["path2"> .'"';
$contenidoxml .=' precio = "'. $row["precio"> .'"/>';
fwrite ($xml, $contenidoxml);
}
fwrite ($xml, " </ofertas> ");

if (fclose ($xml)){
//echo "Archivo escrito con exito";
} else {
exit ("Error escribiendo el XML");
}
mysql_close($link);
?>
</node>



*** codigo de la DB ocasion.(en path se guarda la ruta de la imagen de 150x150 y en path2 de guarda la ruta de la imagen de 350x250



-- Base de datos: `ocasion`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `ofer`
--

CREATE TABLE `ofer` (
`id` int(11) NOT NULL auto_increment,
`tipo` varchar(100) NOT NULL,
`size` int(11) NOT NULL ,
`path` varchar(400) default NULL,
`categoria` varchar(100) NOT NULL,
`descripcion` varchar(400) NOT NULL,
`fabricante` varchar(100) NOT NULL,
`calidad` varchar(100) NOT NULL,
`observaciones` varchar(500) NOT NULL,
`precio` varchar(100) NOT NULL,
`oferta` varchar(300) default NULL,
`path2` varchar(400) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 AUTO_INCREMENT=16 ;

--
Autor: carmarri
Publicado: 11-1-2010 09:38 AM
¿Has probado si fuese un tema de permisos de escritura?
Un saludo
-----------------------------------------------------------------
[a href="http://www.xatcom.net">http://www.xatcom.net[/a] Diseño y programación web
Autor: carmarri
Publicado: 11-1-2010 09:39 AM
¿Has probado si fuese un tema de permisos de escritura?
Un saludo
-----------------------------------------------------------------
[a href="http://www.xatcom.net">http://www.xatcom.net[/a] Diseño y programación web