Newsgroup: it.comp.lang.javascript
Titolo: [jqgrid] gestione immagini

Ciao a tutti,
stavo dando un' occhio a questa libreria: mi piacerebbe integrarla con un 
componente per joomla!.
Ho un db Mysql che viene già usato da un' applicazione java desktop; all' 
interno c'è una tabella con un campo LONGBLOB che contiene immagini.
Nel wiki ho visto che si può mettere input:image ed un riferimento al file 
in editoptions: però non è proprio quello che vorrei.
Magari esiste un modo per caricare l' immagine direttamente da db.......
Paolo 


imho devi farti un wrapper in java (o php o quel che vuoi), che a fronte 
di un parametro passato interroghi il db e ritorni l'immagine.
A quel punto l'url dell'immagine che dai a js sarà il wrapper (es: 
pippo.do?id=50)
-- 
Z.


OK.
se ho capito bene: edittype:'image', editoptions: 
{src:'caricaimmagine.php?id=50'}  (id=50 è il numero del record)
Credo che il file salvato sia in formato gif o jpg
Quindi una cosa del genere:
     jQuery(document).ready(function(){
         jQuery("#list").jqGrid({
             url:'<?php echo 
JURI::root(true).'/components/com_pastdays/models/Anagrafica/Prova/*dataProva.php*?tabella=tblservizi&campi='. 
serialize(array('IDServizi','Descrizione','Immagine'));?>',
             datatype: "xml",
             colNames:['ID','Descrizione','Immagine'],
             colModel:[
                 {name:'IDServizi',index:'IDServizi'},
                 {name:'Descrizione',index:'Descrizione', 
align:"right"editable:true},
 
{name:'Immagine',index:'Immagine',editable:true,edittype:'image',
                     editoptions: 
{src:'/components/com_pastdays/models/Anagrafica/Prova/*caricaimmagine.php*?id=50'}}
                 ],
             saveData: "Data has been changed! Save changes?",
             rowNum:10,
             rowList:[5,10,20,30,100],
             pager: '#pager',
             sortname: 'Descrizione',
             viewrecords: true,
             autowidth: true,
             sortorder: "asc",
             caption:"Modifica Servizi",
             editurl:'<?php echo 
JURI::root(true).'/components/com_pastdays/someurl.php';?>'
         });
 
jQuery("#list").jqGrid('navGrid','#pager',{edit:true,add:true,del:true,search:false},{},{},{},{}); 
              });
In caricaimmagine.php faccio la query sul db che estrae il campo 
Immagine. trasferisco in una variabile e......
Bisogna tener presente che in Dataprova .php già carica il campo Immagine:
....
                 while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
                     echo "<row id='". $row['IDServizio']."'>";
                     echo "<cell>". $row['IDServizio']."</cell>";
                     echo "<cell><![CDATA[". 
$row['Descrizione']."]]></cell>";
                     echo "<cell>". $row[$campi[Immagine]]."</cell>";
                     echo "</row>";
                 }
                 echo "</rows>";
.....
e qui c'è l'incongruenza che non arrivo a risolvere:
se tolgo la riga del campo immagine mi visualizza tutti i record nella 
griglia (senza il campo immagine naturalmente) altrimenti resta la 
tabella completamente vuota.
Paolo


IL wrapper funziona? cioè da browser se usi l'indirizzo ti serve l'immagine?
-- 
Z.

 l'immagine?
Si,
ho fatto una cosa cosě:
<?php
// Impedisce l'accesso diretto al file
defined('_JEXEC') or die('Restricted access');
?>
prima dell' immagine -------
<img src="<?php echo 
JURI::root(true).'/components/com_pastdays/views/prenAdminServizi/tmpl/*pagina.php*';?>">
-----dopo l' immaggine
ed il file *pagina.php* č:
<?php
$connect  = mysql_connect('localhost', 'root', 'root');
$db = mysql_select_db('oratorio',$connect);
// query per recuperare il file
$query = "SELECT * FROM tblservizi WHERE IDServizi = '6'";
$risultato = mysql_query($query) or die('Query non valida:'.mysql_error());
$row = mysql_fetch_array($risultato,MYSQL_ASSOC);
// invio il contenuto del campo
echo $row['Immagine'];
?>
sembra tutto abbastanza semplice fin qui.
Secondo me, al momento edittype ed editoption si possono escludere 
perchč dovrebbero riguardare solo la modifica del campo e non la sua 
visualizzazione nella riga della griglia.
Il punto č che non so come carica il campo immagine in jqgrid....
Normalmente č un testo o un numero, ma nel caso dell' immagine?
Usando datatype: "xml",
questa č la parte del file che recupera i dati (č posta in "url:")
                 if ( 
stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml") ) {
                     header("Content-type: 
application/xhtml+xml;charset=utf-8");
                 } else {
                     header("Content-type: text/xml;charset=utf-8");
                 }
                 $et = ">";
                 echo "<?xml version='1.0' encoding='utf-8'?$et\n";
                 echo "<rows>";
                 echo "<page>".$page."</page>";
                 echo "<total>".$total_pages."</total>";
                 echo "<records>".$count."</records>";
                 // be sure to put text data in CDATA
                 while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
                     echo "<row id='". $row[$campi[0]]."'>";
                     $i=0;
                         foreach ($campi as $campo) {
                             $meta = mysql_fetch_field($result, $i);
                             if ($meta->type!="string") {
                             echo "<cell>". $row[$campo]."</cell>";
                             }else{
                             echo "<cell><![CDATA[". 
$row[$campo]."]]></cell>";
                             }
                             $i++;
                         }
                     echo "</row>";
                 }
                 echo "</rows>";
                 //  mysql_close($db)
il mime č di testo
se il campo č di tipo string fa:
                            echo "<cell><![CDATA[". 
$row[$campo]."]]></cell>";
altrimenti:
                             echo "<cell>". $row[$campo]."</cell>";
Che sia magari da mettere mano qui?
Paolog


io non credo sia corretto, o cmq va asperanza che il browser integri di 
suo (quindi con ie già sarei pessimista:D).
prova a guardare qua:
http://www.nuff-respec.com/technology/image-wrapper-php
mandare header col content type corretto sicuramente è una cosa positiva.
Prova a vedere se migliora
-- 
Z.


OK,
ma era solo per provare se veniva visualizzata l' immagine.
Il vero problema è come jqGrid gestisce l'immagine caricata da db e 
sopratutto se la gestisce.
Mi sono spulciato tutto il forum: c'è qualcuno che pone il mio stesso 
problema ma viene rimandato alla Demo o ad altri post precedenti che 
purtroppo io non trovo; neanche la Demo mi aiuta.
Intanto per provare ho fatto questo...
http://www.paologri.netsons.org/index.php?option=com_pastdays&view=prenadminservizi&layout=defaultservizi&Itemid=55
Paolog