dominios y alojamiento web en hostalia

Despues de un tiempo no puedo redimensionar fotos PHP Y GD

Wiki: Los usuarios registrados de DesarrolloWeb.com pueden modificar los contenidos y realizar aportaciones en esta sección.
  • Dar una respuesta
Da una respuesta
Votos útiles (0) inútiles (0)
Discusión creada por pablo_alvarez-576019 el 18/11/2009

Categoría wiki: PHP

al cabo de un tiempo , todo sigue funcionando menos las imagenes que no se redimensionan.

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



[code]



<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&ntilde;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">&nbsp;</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&iacute;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&oacute;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">&nbsp;</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&aacute;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&aacute;ticamente a la medida necesaria.</p>

<p align="left" class="style9">Las imagenes <span class="style2">no podr&aacute;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&aacute;gen subida y de la conexi&oacute;n del cliente</p>

<p align="left" class="style9">Una vez guardado el producto, aparecer&aacute; abajo de &uacute;ltimo, en caso de haber borrado uno aparecer&aacute; en el lugar del producto borrado.</p>

<p align="left" class="style9">En el men&uacute; <span class="style2">Navegar</span>, podr&aacute; 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">&nbsp;</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 &oacute; .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>



[/code]



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



*** codigo redimensionar.php



[code]



<?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);

?>



[/code]



*** codigo generar_xml.php



[code]



<?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>



[/code]



*** 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



[code]



-- 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 ;



--

[/code]

Últimas respuestas enviadas
No hay respuestas disponibles!
Categoría relacionada
+ PHP
Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...