Visualizzazione dei risultati da 1 a 7 su 7

Discussione: query database php

  1. #1

    query database php

    Ciao a tutti, vi espongo il mio problema..

    In pratica sto utilizzando il cms Joomla! e all'interno del pannello che si ritrova ogni utente del sito web ci sono due link:
    invio richiesta, elenco richieste.
    Partendo dal presupposto che tramite un componente del cms joomla (chronoforms) sono riuscito a salvare i dati inviati via form presenti nella pagina invia richiesta, il problema sorge nell'altra pagina.
    In elenco richieste in pratica devo estrapolare i dati inseriti da un determinato utente dal database (quindi visualizzare tutte le richieste inviate da esso).
    Ci sono riuscito con questo codice (quelle cose che non capite è perchè sono API del cms joomla):
    codice:
    <?php 
    
    // qualora non fosse globalizzato, recupero il mainframe
    global $mainframe;
    
    // istanzio un oggetto di accesso al DB
    $db=&JFactory::getDBO();
    
    
    // questo lo chiami prima della query
    $user=&JFactory::getUser();
     
    $query ="SELECT * FROM #__chronoforms_data_requests WHERE cf_user_id='".$user->id."'";
    
    // recupero il resultset
    $db->setQuery($query);
    $results = $db->loadObjectList();
    ?>
    
    
    <?php foreach($results as $r) { ?>
    <table>
    <tr>
    <td>Motivo richiesta: <?php echo $r->Motivo; ?></td>
    </tr>
    <tr>
    <td>Tipo soggetto: <?php echo $r->soggetto; ?></td>
    </tr>
    <tr>
    <td>Cognome/Rag.sociale: <?php echo $r->cognome; ?></td>
    </tr>
    <tr>
    <td>Nome: <?php echo $r->nome; ?></td>
    </tr>
    <tr>
    <td>Nato a: <?php echo $r->paese_nascita; ?></td>
    </tr>
    <tr>
    <td>Provincia di: <?php echo $r->provincia; ?></td>
    </tr>
    <tr>
    <td>Il: <?php echo $r->data_nascita; ?></td>
    </tr>
    <tr>
    <td>Codice fiscale: <?php echo $r->cod_fiscale; ?></td>
    </tr>
    <tr>
    <td>Partita IVA: <?php echo $r->iva; ?></td>
    </tr>
    <tr>
    <td>CCIAA: <?php echo $r->cciaa; ?></td>
    </tr>
    <tr>
    <td>Comune: <?php echo $r->comune; ?></td>
    </tr>
    <tr>
    <td>Indirizzo noto: <?php echo $r->indirizzo_noto; ?></td>
    </tr>
    <tr>
    <td>Altri recapiti: <?php echo $r->recapiti; ?></td>
    </tr>
    <tr>
    <td>Recapiti tel: <?php echo $r->telefono; ?></td>
    </tr>
    <tr>
    <td>Eventuale coniuge: <?php echo $r->coniuge; ?></td>
    </tr>
    <tr>
    <td>Eventuale garante: <?php echo $r->garante; ?></td>
    </tr>
    <tr>
    <td>Professione/ditta: <?php echo $r->professione; ?></td>
    </tr>
    <tr>
    <td>Banca: <?php echo $r->banca; ?></td>
    </tr>
    <tr>
    <td>Note: <?php echo $r->note; ?></td>
    </tr>
    <tr>
    <td>EDIT</td>
    </tr>
    </table>
    
    <?php } ?>
    In questo modo il risultato che ottengo sono la stampa di tutti i record inseriti da un determinato utente.
    Che quindi si ritrova la pagina con tutti i dati che ha messo rispettivamente di ogni richiesta.

    Ora, la cosa che voglio fare è creare una sorta di tabella in html o comunque fare che in qualche modo quando clicco su "elenco richieste" appaiano non subito tutti i record ma bensi un link per ogni record, in modo tale che l'utente clicca solo sul record che vuole visualizzare. E all'interno di essi (quando l'utente clicca sul link del record interessato) cè appunto il record che vuole vedere...

    So che non è difficile però non riesco ad arrivare alla soluzione..come posso fare?

  2. #2
    UP!

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Crea una nuova view, chiamala ad esempio "dettaglirichiesta"

    Il link lo crei in questo modo
    Codice PHP:
    href='index.php?option=com_nomecomponente&view=dettaglirichiesta&id=<?php echo $id_richiesta ?>'
    A questo punto verrà chiamata la entry point della view dettaglirichiesta (view.html.php), da lì invii una richiesta al model nel quale avrai messo una funzione che prende solo i dati della richiesta con l'id passato e infine dai i dati ottenuti alla view.

  4. #4
    Scusa ma non ti seguo, potresti spiegarti meglio e in modo piu dettagliato?

    Io ho provato a fare cosi
    codice:
    <?php 
    // qualora non fosse globalizzato, recupero il mainframe
    global $mainframe;
    
    // istanzio un oggetto di accesso al DB
    $db=&JFactory::getDBO();
    
    
    // questo lo chiami prima della query
    $user=&JFactory::getUser();
     
    $query ="SELECT * FROM #__chronoforms_data_requests WHERE cf_user_id='".$user->id."'";
    
    // recupero il resultset
    $db->setQuery($query);
    $results = $db->loadObjectList();
    ?>
    
    <?php foreach($results as $r) {
    echo "View";
    }
    ?>
    E in effetti mi da un numero di link view pari a quelle esatte estrapolate dalla query...
    però quando clicco sul link per vedere i dati non funziona..la pagina è bianca..

    evidentemente non mi è chiaro qualche concetto, puoi spiegarmi?

  5. #5
    Scusa mi correggo..avevo sbagliato il path del link..
    quando clicco su uno dei view che mi appaiono compare giustamente il form di riferimento...però è vuoto, nel senso, non è riempito con i dati..

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    I dati da mostrare li devi prendere dal database.

    Nel file view.html.php della view dettagli devi chiamare una funzione del model che prende i dati della richiesta
    Codice PHP:
    $richiesta $model->getRichiesta($idrichiesta);
    $this->assignRef('richiesta',$richiesta); 
    Ovviamente nel model relativo alla view che dovrai creare nella cartella models dovrai metterci il metodo getRichiesta($id), il quale deve collegarsi al db, prendere la entry che ti interessa e restituirla.
    Codice PHP:
    function getRichiesta($id)
    {
        
    $db =& JFactory::getDBO();
        
    $query "SELECT * FROM #__tabella WHERE id=".$id;
        
    $db->setQuery($query);
        return 
    $db->loadAssoc();

    A questo punto nella view prendi i dati con
    $this->richiesta['nomecampo']

  7. #7
    Ho risolto, in pratica non creavo un altro form per la visualizzazione dei dati..
    richiamavo il form che usavo per l'inserimento e per questo non riempiva il form con i dati del record.
    Creando un altro form apposito per il riempimento con i dati del database il problema è risolto..

    Grazie comunque del supporto!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.