[RISOLTO] Prelevare variabile

6 contenuti / 0 new
Ultimo contenuto
[RISOLTO] Prelevare variabile

Ciao a tutti,
domanda per alcuni magari banale.
Ho creato nel tipo di contenuto Progetto con cck un campo visual con la quale carico delle immagini appunto, senza nessun limite quindi ha il pulsante aggiungi campo per inserire più immagini.

Ho la necessità di prelevare dal db tramite sql le url di queste immagini relative all'id del nodo.
Se fosse un sistema semplice avrei fatto:

SELECT field_visual FROM tabella
WHERE node.type = 'progetto', node.nid = $nid

Qualcuno sa aiutarmi?
ho pensato di vedere cn views visto che ti mostra la sql che fa ma mi ha restituito questa e non penso sia corretta:

SELECT node.nid AS nid,
   node.type AS node_type,
   node.vid AS node_vid
FROM node node
WHERE (node.type in ('progetto')) AND (node.nid = 14)

ho trovato anche questa query che mi ha restituito:

SELECT vid AS _vid, delta as _delta, nid AS _nid, field_visual_fid AS fid, field_visual_list AS list, field_visual_data AS data FROM content_field_visual WHERE vid IN (11,12,13,14) ORDER BY _nid ASC, _delta ASC

11,12,13,14 probabilmente sono gli id dei nodi in questione?
Non so come utilizzarle queste 2 query quelcuno può darmi una mano?
Se l'ultima query inserita è corretta non so come unirla alla prima...

Ciao a grazie!
Ioris

edit:
cn questo codice qualcosa mi restituisce:
SELECT vid AS _vid, delta as _delta, nid AS _nid, field_visual_fid AS fid, field_visual_list AS list, field_visual_data AS data FROM content_field_visual WHERE vid IN (11,12,13,14) ORDER BY _nid ASC, _delta ASC

ma nessuno di quei valori mi da l'url.

Allora, è un pò più complesso di quello che pensi... Ma non molto.
Prima gli URI dei immagini sono nella tabella files, ogniuno ha un fid.
Secondo, se il tuo campo CCK permette più di un immagine, o lo stai usando per più di un tipo di contenuto, allora la tabella sarà: content_field_nome-del-campo dove nome-del-campo è visual nel tuo caso. Se non è una colonna della tabella content_type_tipo-di-contenuto dove tipo-di-contenuto è Progetto nel tuo caso.
Per entrambi troverai un fid o field_nome-del-campo_fid e anche il nid/vid - fortuna che ci possono essere solo 26 di questi ?ids...
A questo punto devi fare un JOIN, ma lascio un pò di divertimento a te...

John

Più imparo, più dubito.

Ciao e grazie per l'aiuto...
chiedo un'ultima cortesia.
Mi sono documentato sul join ed è ok niente di complicato, ma quindi le tabelle da unire sono content_field_visual, content_type_progetto e files?

e poi è giusto così?

SELECT filepath AS path, vid AS _vid, delta as _delta, nid AS _nid, field_visual_fid AS fid, field_visual_list AS list, field_visual_data AS data FROM content_field_visual, files WHERE vid IN (11,12,13,14) ORDER BY _nid ASC, _delta ASC

ma se volessi prendere le immagini relative ad un determinato nid? ho provato a sostituire WHERE vid IN (11,12,13,14) con WHERE nid = 14 ma non va, o meglio mi mostra tante cose non solo le immagini...

EDIT
dovrei avercela fatta con :

SELECT filepath AS path, vid AS _vid, delta as _delta, nid AS _nid, field_visual_fid AS fid, field_visual_list AS list, field_visual_data AS data FROM files LEFT JOIN content_field_visual ON files.fid = content_field_visual.field_visual_fid WHERE nid=14 ORDER BY _nid ASC, _delta ASC

Bravo yoris00, sembra buono anche a me - ma non sono un esperto di SQL...

Più imparo, più dubito.

SELECT
    filepath AS path,
    vid AS _vid,
    delta as _delta,
    nid AS _nid,
    field_visual_fid AS fid,
    field_visual_list AS list,
    field_visual_data AS data
FROM
    files LEFT JOIN
    content_field_visual
        ON files.fid = content_field_visual.field_visual_fid
WHERE
    nid=14
ORDER BY
    _nid ASC,
    _delta ASC

Ricordati di assegnare sempre un nome anche alle tabelle (ad esempio files AS f) e di antecederlo alle variabili della sua tabella (ad esempio f.filepath), perchè nel caso in cui tu abbia variabili uguali in tabelle diverse (di campi nid c'è pieno nel DB), mysql ti restituisce errore indicando la dicitura come ambigua, in pratica non sa quale nid prendere.

--
Il saggio non è colui che sa tutto, ma colui che sa dove trovare le risposte

C'è qualche controindicazione a usare filefield_get_node_files?