Ayuda! problema con codigo php

Events happening in the community are now at Drupal community events on www.drupal.org.
r_e_m's picture

Hola chicos!

Tengo que hacer una vista pero tengo que filtrarla por un argumento que es el numero de los proyectos a los que pertenece el usuario.
Os copio el código:

global $user;
$uid=$user->uid;

$result=db_query("select field_id_proyecto_value from content_type_proyecto where field_responsable_uid='$uid';");
$num_proyecto=db_result($result,0,0);

return $num_proyecto;

Este código me funciona en parte, porque me devuelve sólo uno de los proyectos a los que pertenece el usuario, no a todos.

¿Cómo puedo modificarlo para que me devuelva todos los valores?

Comments

yo le quitaría parámetros a db_result()

leandro713's picture

te hablo de memoria, pero juraría que unos de los ceros del db_result($result,0,0) que estás usando es el límite, por eso te da siempre un único resultado.

prueba con db_result($result) simplemente, a ver qué pasa :-)

Hola La función db_result

plopesc's picture

Hola

La función db_result sólo devuelve un resultado. Puedes consultar la documentación en http://api.drupal.org/api/search/6/db_result

Si quieres obtener más resultados debes recorrer la variable $result en un bucle.
Un saludo

--
Pablo López, Drupal developer
https://twitter.com/plopesc

db_query ?

leandro713's picture

Tiene razón plopesc en lo de db_result() que solo devuelve un resultado.
Pero si sólo quieres saber el número de elementos retornados, como db_query() te devuelve un objeto, o bien lo recorres con un bucle como dice plopesc o lo conviertes a array con get_object_vars() y luego haces un count() o sizeof(), no?

db affeted rows

jonhattan's picture

En drupal 6 se hace con db_affected_rows()

y en d7, depende del caso. db_select() y db_delete() devuelven el número de columnas afectadas. Para el caso de los selects, se consigue con ->rowCount().

He modificado el código por

r_e_m's picture

He modificado el código por este:

global $user;
$uid=$user->uid;
$nums_proyecto=array();

$result=db_query("select field_id_proyecto_value from content_type_proyecto where field_responsable_uid='$uid';");
while ($my_row = db_fetch_array($result))
{
$nums_proyecto[] = $my_row['field_id_proyecto_value'];
}

return $nums_proyecto;

como me habeis indicado ya itero en un bucle, pero el problema es que aun asi, la última sentencia de return sólo me devuelve el primer valor.
¿Sabéis si un argumento de views sólo permite recibir un valor de vuelta?

Es que si no, no se me ocurre otra forma de conseguir lo que quiero sin tener q programar un módulo

Creo que lo que quieres hacer

plopesc's picture

Creo que lo que quieres hacer es un filtro contextual que obtenga lso parámetros por código PHP, en ese caso debes hacer lo siguiente:
· Cambia la última línea de tu script por return implode('+', $nums_proyecto);
· En el fieldset Más de la configuración del filtro contextual, selecciona el checkbox: "Permitir múltiples valores"

Creo que con eso, te sería suficiente.
Un saludo

--
Pablo López, Drupal developer
https://twitter.com/plopesc

Plopesc ante todo mil

r_e_m's picture

Plopesc ante todo mil gracias!

Preguntas: ¿el código lo pongo en filtros o en argumentos que era donde lo tenía?.
No encuentro donde configurar el checkbox para poder seleccionar "permitir multiples valores"

Si estás trabajando en D6, en

plopesc's picture

Si estás trabajando en D6, en argumentos. Te hablaba de Filtros contextuales porque es el nombre que tienen los argumentos en D7.

La opción de múltiples valores está en el formulario de configuración del argumento, pero no sé exactamente donde en D6.

--
Pablo López, Drupal developer
https://twitter.com/plopesc

Trabajo con D6, si me pasas

r_e_m's picture

Trabajo con D6, si me pasas tu correo te mando una captura de pantalla

La opción de permitir valores

plopesc's picture

La opción de permitir valores múltiples sólo está disponible para valores numéricos, si tu campo de identificadores no lo es, no te aparecerá.

--
Pablo López, Drupal developer
https://twitter.com/plopesc

Sí son valores numéricos

r_e_m's picture

Sí son valores numéricos

Spain

Group organizers

Group categories

Región geográfica

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: