Foros del Web » Programando para Internet » PHP »

Array: como insertar comillas simples

Estas en el tema de Array: como insertar comillas simples en el foro de PHP en Foros del Web. Hola foreros/as! Seguramente es una tontería pero no consigo hacerlo. Lo que quiero es insertar comillas simples a cada valor. Esto es lo que tengo: ...
  #1 (permalink)  
Antiguo 23/03/2010, 07:06
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 13 años, 7 meses
Puntos: 3
Array: como insertar comillas simples

Hola foreros/as!

Seguramente es una tontería pero no consigo hacerlo. Lo que quiero es insertar comillas simples a cada valor. Esto es lo que tengo:

Tengo creado un checkbox con varios valores (en este caso, están todos marcados):

Código HTML:
 <input name="tipo[]" type="checkbox" value="mp3" checked="checked" />mp3 
    <input name="tipo[]" type="checkbox" value="wmv" checked="checked" />wmv 
    <input name="tipo[]" type="checkbox" value="avi" checked="checked" />avi 
    <input name="tipo[]" type="checkbox" value="mov" checked="checked" />mov 
En php:
Código PHP:
        $tipo_array=" AND tipo IN (";
        
$tipo_array .= implode(", "$_POST['tipo']);
        
$tipo_array .= ")"
El valor $tipo_array me devuelve:
AND tipo IN (mp3, wmv, avi, mov)

Esto es parte de una consulta a MySQL, y lo que necesito que me devuelva es:
AND tipo IN ('mp3', 'wmv', 'avi', 'mov')

con las comillas simples, para que la consulta la haga correcta. ¿Sabéis cómo puedo hacerlo? Gracias!
  #2 (permalink)  
Antiguo 23/03/2010, 07:12
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 10 años, 3 meses
Puntos: 334
Respuesta: Array: como insertar comillas simples

Código PHP:
Ver original
  1. $tipo_array=" AND tipo IN ('";
  2. $tipo_array .= implode("', '", $_POST['tipo']);
  3. $tipo_array .= "')";

asi no te sirve?
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 23/03/2010, 07:22
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 13 años, 7 meses
Puntos: 3
Respuesta: Array: como insertar comillas simples

Casi, Hidek1... así me inserta las comillas entre medias (lo normal con implode), pero la primera y la última, lógicamente no la inserta, me devuelve:
AND tipo IN (mp3', 'wmv', 'avi', 'mov)
  #4 (permalink)  
Antiguo 23/03/2010, 07:33
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 10 años, 3 meses
Puntos: 334
Respuesta: Array: como insertar comillas simples

pero fijate en lo que hice...

$tipo_array=" AND tipo IN ('"; // aqui tambien
$tipo_array .= implode("', '", $_POST['tipo']);
$tipo_array .= "')"; // aqui tambien

esas comillas que deje en rojo tambien tienes que incluirlas
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 23/03/2010, 07:41
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 13 años, 7 meses
Puntos: 3
Respuesta: Array: como insertar comillas simples

Claro, gracias Hidek1!!! Funciona correcto.
  #6 (permalink)  
Antiguo 23/03/2010, 07:44
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 9 años, 9 meses
Puntos: 26
¿Pero eso no és lógicamente incorrecto?

Código PHP:
$tipo_array=" AND tipo IN ('";
$tipo_array .= implode("', '"$_POST['tipo']);
[
U][B]$tipo_array .= "')";[/B][/U
Abre y cierra poniendo una comilla, no veo porque el implode o algo se las come.

Bueno pues si eso no funciona que tal una manera un poco mas directa pero menos bonita?

Código PHP:
$tipo explode($_POST['tipo']);

for(
$i=0$i<count($tipo);$i++){
    
$tipo[$i] = "'".$tipo[$i]."'";

No serviria algo asi?

Vale llegué tarde por lo que veo.

Última edición por GatorV; 23/03/2010 a las 09:41
  #7 (permalink)  
Antiguo 23/03/2010, 13:53
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 13 años, 7 meses
Puntos: 3
Pregunta Problema al pasar array por url

Gracias Vallu, por responder también.

Tengo ahora otro problema al hilo de este. En esta misma página tengo hecho un paginado para los resultados de la búsqueda, el enlace a cada página: 2,3,4... tiene en la url los valores de la búsqueda, y el problema viene al pasar el array de tipo. He buscado en el foro y he encontrado soluciones con implode y explode o con serialize y unserialize, pero no me funciona ninguno de los dos. Esto es lo que he hecho:

Código HTML:
 <input name="tipo[]" type="checkbox" value="mp3" checked="checked" />mp3 
    <input name="tipo[]" type="checkbox" value="wmv" checked="checked" />wmv 
    <input name="tipo[]" type="checkbox" value="avi" checked="checked" />avi 
    <input name="tipo[]" type="checkbox" value="mov" checked="checked" />mov 
Código PHP:
$tipo$_REQUEST['tipo'];
if (
$tipo!='') {$tipo =explode("+",$tipo);}

//(…)

    
if ($tipo !=''){
        
$tipo_array=" AND tipo IN ('";
        
$tipo_array .= implode("' , '"$_POST['tipo']); 
        
$tipo_array .= "')";
        
$where .= "$tipo_array";
        
//echo $tipo_array;
    
}

//(…)

$tipo=implode('+',$tipo);
$url=$PHP_SELF "?id_seccion=$id_seccion&id_idioma=$id_idioma&tipo=$tipo&pagina=";
echo 
"<strong>Páginas: </strong>".paginar($pagina$total$tampag$url)."<br />";

//(…) 
La primera búsqueda que hago a través del formulario funciona bien y los resultados son correctos, cuando le doy a ver por ejemplo la página 2, el valor en la url de $tipo es $tipo=Array y ya no funciona. He probado también con serialize y unserialize pero tampoco me funciona. Entiendo que el error está en como recoge los datos del array en la url, pero no entiendo qué es lo que pasa. ¿Alguna ayuda? Gracias!

Última edición por Anastasiaphp; 23/03/2010 a las 14:40
  #8 (permalink)  
Antiguo 25/03/2010, 07:40
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 13 años, 7 meses
Puntos: 3
Problema al pasar array por url

Hola de nuevo!

He avanzado un poco en este tema pero aún no he encontrado solución. Lo que he hecho hasta ahora es lo siguiente:

Código PHP:
// Utilizo dos funciones para el envío y recepción de $tipo

function array_envia($array) {

     
$tmp stripslashes($array);
     
$tmp serialize($array);
     
$tmp urlencode($tmp);

     return 
$tmp;
}
function 
array_recibe($url_array) {
     
$tmp stripslashes($url_array);
     
$tmp urldecode($tmp);
     
$tmp unserialize($tmp);

    return 
$tmp;
}

//(…)

// Recojo los datos del formulario y los trato para hacer la búsqueda en la BD
$tipo$_REQUEST['tipo'];

    if (
$tipo !=''){
        
$tipo_array=" AND tipo IN ('";
        
$tipo_array .= implode("' , '"$tipo);
        
$tipo_array .= "')";
        
$where .= "$tipo_array";
    }


// Aquí recibo el array y lo incorporo a la url:
$tipo_ser=array_envia($tipo);
$url=$PHP_SELF "?tipo=$tipo_ser&pagina="
Hasta aquí, todo bien, haciendo un var_dump me aparece:
array(4) { [0]=> string(3) "mp3" [1]=> string(3) "wmv" [2]=> string(3) "avi" [3]=> string(3) "mov" }

Y la url la construye bien:
documentos.php?tipo=a:4:{i:0;s:3:"mp3";i:1;s:3:"wm v";i:2;s:3:"avi";i:3;s:3:"mov";}&pagina=2

El problema viene cuando voy a la página 2, entonces al hacer un var_dump de $tipo me imprime:
string(70) "a:4:{i:0;s:3:\"mp3\";i:1;s:3:\"wmv\";i:2;s:3:\"av i\";i:3;s:3:\"mov\";}"

Y ya no me hace la búsqueda en la base de datos.

Por otro lado, si incorporo la línea
$tipo=array_recibe($tipo);

Entonces no me construye bien el valor tipo en la url, me sale así:
documentos.php?tipo=b:0;&pagina=2


¿Alguna idea?

Etiquetas: comillas, simples
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 16:57.