Foros del Web » Programando para Internet » PHP »

problemas con serialize

Estas en el tema de problemas con serialize en el foro de PHP en Foros del Web. que tal, tengo el siguiente problema necesito guardar multiples imagenes para un sistema de noticias, hasta ahorita ya puedo guardar las referencias de los nombres ...
  #1 (permalink)  
Antiguo 30/08/2010, 11:38
 
Fecha de Ingreso: diciembre-2007
Mensajes: 42
Antigüedad: 16 años, 4 meses
Puntos: 0
problemas con serialize

que tal, tengo el siguiente problema

necesito guardar multiples imagenes para un sistema de noticias, hasta ahorita ya puedo guardar las referencias de los nombres de los archivos en la base de datos con un array.


el problema comienza cuando tengo que utilizar la funcion serialize (en realidad no se si la estoy usando bien).

les pongo el codigo:

Código PHP:
$files = array();
    foreach (
$_FILES['my_field'] as $k => $l) {
        foreach (
$l as $i => $v) {
            if (!
array_key_exists($i$files))
                
$files[$i] = array();
            
$files[$i][$k] = $v;
        }
    }
    
// now we can loop through $files, and feed each element to the class
    
foreach ($files as $file) {
        
// we instanciate the class for each element of $file
        
$handle = new Upload($file);
        
// then we check if the file has been uploaded properly
        // in its *temporary* location in the server (often, it is /tmp)
        
if ($handle->uploaded) {
            
// now, we start the upload 'process'. That is, to copy the uploaded file
            // from its temporary location to the wanted location
            // It could be something like $handle->Process('/home/www/my_uploads/');
            
$handle->Process($dir_dest);
            
// we check if everything went OK
            
if ($handle->processed) {
                
// everything was fine !
                
echo '<fieldset>';
                echo 
'  <legend>file uploaded with success</legend>';
                echo 
'  <p>' round(filesize($handle->file_dst_pathname)/256)/'KB</p>';
                echo 
'  link to the file just uploaded: <a href="'.$dir_pics.'/' $handle->file_dst_name '">' $handle->file_dst_name '</a>';
                echo 
'</fieldset>';
            } else {
                
// one error occured
                
echo '<fieldset>';
                echo 
'  <legend>file not uploaded to the wanted location</legend>';
                echo 
'  Error: ' $handle->error '';
                echo 
'</fieldset>';
            }

        } else {
            
// if we're here, the upload file failed for some reasons
            // i.e. the server didn't receive the file
            
echo '<fieldset>';
            echo 
'  <legend>file not uploaded on the server</legend>';
            echo 
'  Error: ' $handle->error '';
            echo 
'</fieldset>';
        }
    } 
Código PHP:
 <?php $valor=serialize($files); ?>
                    <input type="hidden" size="20" name="txtImage" value="<?php echo $valor?>" />
Código PHP:
mysql_query("INSERT INTO noticias (fecha,titulo,contenido,imagen)
        
        VALUES ('$sFecha','{$_POST['titulo']}','{$_POST['contenido']}','$txtImage')"
,$link); 



al querer mostrar la imagen utilizo:


Código PHP:
<img src="controlpanel/imagen_prueba/" alt="imagen no disponible" width="97" align="middle" height="111"/> 

aqui el problema tambien es como mostrar la primer imagen que inserte en el arreglo que esta en la carpeta imagen_prueba.


Espero puedan ayudarme.

Saludos cordiales
  #2 (permalink)  
Antiguo 30/08/2010, 12:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problemas con serialize

en todo caso debes usar unserialize() para obtener de nuevo el array, y de ahí obtener el primer índice del mismo, etc...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 30/08/2010, 14:01
 
Fecha de Ingreso: diciembre-2007
Mensajes: 42
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: problemas con serialize

ME APARECE ALGO COMO : a:3:{i:0;a:5:{s:4: EN EL VALOR QUE SE GUARDA EN imagen, no se si lo esta guardando bien
  #4 (permalink)  
Antiguo 30/08/2010, 14:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problemas con serialize

a ver... ¿entonces si sabías que hace serialize() o por que razón lo usabas?

porque de ahí nace la gran duda... ¿si sabías lo que estabas haciendo?


deberías leer con atención el manual... de veras!!
http://php.net/serialize
http://php.net/unserialize
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 30/08/2010, 17:14
 
Fecha de Ingreso: diciembre-2007
Mensajes: 42
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: problemas con serialize

entiendo lo que hace, mas no sabia en que formato guardaba el array, lo que necesito al fin es cargar imagenes con el array (cosa que si hace) y guardar en la base de datos el nombre de las imagenes para despues poder mostrarlas, esto ya lo hacia con una sola imagen. espero haberme hecho explicar mejor.

SALUDOS CORDIALES
  #6 (permalink)  
Antiguo 30/08/2010, 18:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problemas con serialize

exacto!!

ahora, el dato serializado de la base de datos no es el array que esperas...

por eso te vuelvo a comentar: por favor lee el manual para que sepas como deserializar dicho valor y obtener de nuevo los datos del array....
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 30/08/2010, 19:14
 
Fecha de Ingreso: diciembre-2007
Mensajes: 42
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: problemas con serialize

correcto, lo que guardo en el array son los nombres de las imagenes (las cuales ya se suben al servidor) despues necesito guardar ese array tal cual esta, para esto si me sirve la funcion serialize, entonces para poder mostrar las imagenes necesito recuperar los nombres tal cual se guardaron en la base de datos, como puedo hacer esto es lo que no puedo hacer


SALUDOS CORDIALES
  #8 (permalink)  
Antiguo 30/08/2010, 19:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problemas con serialize

Cita:
Iniciado por mcswebsis Ver Mensaje
correcto, lo que guardo en el array son los nombres de las imagenes (las cuales ya se suben al servidor) despues necesito guardar ese array tal cual esta, para esto si me sirve la funcion serialize, entonces para poder mostrar las imagenes necesito recuperar los nombres tal cual se guardaron en la base de datos, como puedo hacer esto es lo que no puedo hacer


SALUDOS CORDIALES
te puedo apostar que ya te lo he mencionado varias veces...
Cita:
Iniciado por pateketrueke Ver Mensaje
deberías leer con atención el manual... de veras!!
http://php.net/serialize
http://php.net/unserialize
la función que debes usar es la opuesta a serialize(), osea unserialize()
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 30/08/2010, 19:36
 
Fecha de Ingreso: diciembre-2007
Mensajes: 42
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: problemas con serialize

voy de acuerdo la uso pero al querer mostrar las imagenes es cuando me atoro

Código PHP:
Ver original
  1. <?php         $img = unserialize($imagen); ?>
  2.                <div id="contenido" class="contenido">
  3.                  <div class="foto"><img src="controlpanel/imagen_prueba/<?php print "$img"; ?>" alt="imagen no disponible" align="middle" width="97" height="111"/>  </div>

el problema pues es como argumentar despues de "imagen_prueba/" para que pueda mostrar las imagenes o la primer imagen.


SALUDOS
  #10 (permalink)  
Antiguo 30/08/2010, 19:42
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problemas con serialize

amigo, de veras... ¿no tienes tiempo de leer el manual o que pasa?

debes saber que los array no puedes imprimirlos así, ya que suelen producir Array literalmente... y eso no es lo que necesitas...

Código PHP:
$foo = array('A''B''C');
echo 
$foo[1]; // B 
te invito a estudiar el manual al respecto:
http://php.net/array

en tu caso, después de recuperar el arreglo debes imprimir el índice que necesites, recuerda que el primer índice es siempre cero... también te puedes valer de otras funciones como array_shift(), array_pop(), etc.... pero repito, lee por favor el manual...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 30/08/2010, 19:48
 
Fecha de Ingreso: diciembre-2007
Mensajes: 42
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: problemas con serialize

Gracias saludos
  #12 (permalink)  
Antiguo 01/09/2010, 10:28
 
Fecha de Ingreso: diciembre-2007
Mensajes: 42
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: problemas con serialize

no se si desde aqui tengo el problema para despues serializar ?

Código PHP:
Ver original
  1. <?php $valor=serialize($files); ?>
  2.                     <input type="hidden" size="20" name="txtImage" value="<?php echo $valor; ?>" />
  #13 (permalink)  
Antiguo 01/09/2010, 10:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problemas con serialize

Cita:
Iniciado por mcswebsis Ver Mensaje
no se si desde aqui tengo el problema para despues serializar ?

Código PHP:
Ver original
  1. <?php $valor=serialize($files); ?>
  2.                     <input type="hidden" size="20" name="txtImage" value="<?php echo $valor; ?>" />
¿eso como vamos a saber nosotros?

en esencia el código de esa parte es correcto, si $files es un array entonces serialize() esta bien aplicado....

¿te esta surgiendo alǵun problema? ¿algo que nos quieras comentar?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 01/09/2010, 11:26
 
Fecha de Ingreso: diciembre-2007
Mensajes: 42
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: problemas con serialize

Código PHP:
Ver original
  1. $files = array();
  2.     foreach ($_FILES['my_field'] as $k => $l) {
  3.         foreach ($l as $i => $v) {
  4.             if (!array_key_exists($i, $files))
  5.                 $files[$i] = array();
  6.             $files[$i][$k] = $v;
  7.         }
  8.     }
  9.     // now we can loop through $files, and feed each element to the class
  10.     foreach ($files as $file) {
  11.         // we instanciate the class for each element of $file
  12.         $handle = new Upload($file);
  13.         // then we check if the file has been uploaded properly
  14.         // in its *temporary* location in the server (often, it is /tmp)
  15.         if ($handle->uploaded) {
  16.             // now, we start the upload 'process'. That is, to copy the uploaded file
  17.             // from its temporary location to the wanted location
  18.             // It could be something like $handle->Process('/home/www/my_uploads/');
  19.             $handle->Process($dir_dest);
  20.             // we check if everything went OK
  21.             if ($handle->processed) {
  22.                 // everything was fine !
  23.                 echo '<fieldset>';
  24.                 echo '  <legend>file uploaded with success</legend>';
  25.                 echo '  <p>' . round(filesize($handle->file_dst_pathname)/256)/4 . 'KB</p>';
  26.                 echo '  link to the file just uploaded: <a href="'.$dir_pics.'/' . $handle->file_dst_name . '">' . $handle->file_dst_name . '</a>';
  27.                 echo '</fieldset>';
  28.             } else {
  29.                 // one error occured
  30.                 echo '<fieldset>';
  31.                 echo '  <legend>file not uploaded to the wanted location</legend>';
  32.                 echo '  Error: ' . $handle->error . '';
  33.                 echo '</fieldset>';
  34.             }
  35.  
  36.         } else {
  37.             // if we're here, the upload file failed for some reasons
  38.             // i.e. the server didn't receive the file
  39.             echo '<fieldset>';
  40.             echo '  <legend>file not uploaded on the server</legend>';
  41.             echo '  Error: ' . $handle->error . '';
  42.             echo '</fieldset>';
  43.         }
  44.     }


esta es la parte donde subo las imagenes y es de donde tomo la variable $files para serializar, entonces lo que debo guardar en la bd es la variable $valor? es correcto?

GRACIAS
  #15 (permalink)  
Antiguo 01/09/2010, 11:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problemas con serialize

Cita:
Iniciado por mcswebsis Ver Mensaje
esta es la parte donde subo las imagenes y es de donde tomo la variable $files para serializar, entonces lo que debo guardar en la bd es la variable $valor? es correcto?

GRACIAS
esta es la parte donde debes poner de tu parte y usar el sentido común...

¿como vamos a saber nosotros que necesitas guardar en la BD?


y es sencillo, si lo piensas con calma.. ¿que valor necesitas en la BD?

¿el valor serializado o el array?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #16 (permalink)  
Antiguo 01/09/2010, 11:43
 
Fecha de Ingreso: diciembre-2007
Mensajes: 42
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: problemas con serialize

a ver, lo que necesito despues de subir las imagenes es los nombres de las imagenes para despues poder usar esos nombres para mostrarlas, es lo que necesito, entonces lo que lei la manera de guardar el contenido de un array es serializandolo, es por eso que utilize esa funcion, o estoy mal?
  #17 (permalink)  
Antiguo 01/09/2010, 11:54
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problemas con serialize

Cita:
Iniciado por mcswebsis Ver Mensaje
a ver, lo que necesito despues de subir las imagenes es los nombres de las imagenes para despues poder usar esos nombres para mostrarlas, es lo que necesito, entonces lo que lei la manera de guardar el contenido de un array es serializandolo, es por eso que utilize esa funcion, o estoy mal?
a ver... esto se pone interesante, inicialmente te preguntaba si sabías lo que hacías...

y me respondiste que si.... y bueno, estoy de acuerdo...

pero, ¿porque sigues dudando tanto?

¡¡solo hazlo!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #18 (permalink)  
Antiguo 01/09/2010, 12:03
 
Fecha de Ingreso: diciembre-2007
Mensajes: 42
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: problemas con serialize

ja, me caes bien y no es sarcasmo, a ver todo esta bien hasta aqui, ahora, para mostrar las imagenes tengo que hacer la referencia de esta manera?


recupero los datos de la bd

Código PHP:
Ver original
  1. mysql_select_db($database_conexion, $conexion);
  2.  
  3. $q=mysql_query("select * from noticias order by id DESC limit 1") or die (mysql_error());
  4. $titulo='titulo';
  5. $contenido ='contenido';
  6. $imagen='imagen';
  7.  
  8.  
  9.  
  10. while($a[]=mysql_fetch_array($q));

y muestro asi:

Código PHP:
Ver original
  1. $img = unserialize($imagen); ?>
  2.                <div id="contenido" class="contenido">
  3.                  <div class="foto"><img src="controlpanel/imagen_prueba/<?php echo $img[0]; ?>" alt="imagen no disponible" align="middle" width="97" height="111"/>  </div>


es lo que he hecho y nada
  #19 (permalink)  
Antiguo 01/09/2010, 12:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problemas con serialize

a ver, lo único que yo veo es esto:
Código PHP:
// MAL
$imagen='imagen';

// BIEN
$imagen $row['columna_donde_guardaste_el_valor_de_serialize']; 
todo esto esta mal... pues $imagen debe ser el valor obtenido de la BD... y tu has puesto un string manualmente...

y luego haces esto:
Código PHP:
// ESTO ESTA BIEN
$img=unserialize($imagen);
echo 
$img[0]; 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #20 (permalink)  
Antiguo 01/09/2010, 12:38
 
Fecha de Ingreso: diciembre-2007
Mensajes: 42
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: problemas con serialize

no funciono hize un var_dump a $img y resulta esto bool(false)
  #21 (permalink)  
Antiguo 01/09/2010, 12:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problemas con serialize

Cita:
Iniciado por mcswebsis Ver Mensaje
no funciono hize un var_dump a $img y resulta esto bool(false)
por eso... a ver, repito: ¿si sabes lo que estas haciendo?

este es un ejemplo, solo algo para que te bases...
Código PHP:
$sql "SELECT columna_donde_guardaste_el_valor_de_serialize FROM tabla";
$result mysql_query($sql) or die(mysql_error());

$row mysql_fetch_array($result);
$imagen $row['columna_donde_guardaste_el_valor_de_serialize'];

$img unserialize($imagen);
var_dump($img); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: serialize
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 08:55.