Back to top

Autore Topic: Come recuperare l'id  (Letto 4466 volte)

Offline apettir

  • Nuovo arrivato
  • *
  • Post: 38
    • Mostra profilo
Come recuperare l'id
« il: 02 Set 2012, 18:54:03 »
Ho creato una lista di record in questo modo dentro un ciclo foreach:

Codice: [Seleziona]
<td><a href="<?php echo JRoute::_('index.php?option=com_miocomponente&view=miavista&id='.$row->id); ?>"> <?=$row->nome?> </a></td>

Adesso come faccio a recuperare l'id nella 'miavista' per recuperare solo la riga di questo nome nel database?

Scusate la domanda stupida ma proprio non riesco a capirlo.... :o



mau_develop

  • Visitatore
Re:Come recuperare l'id
« Risposta #1 il: 02 Set 2012, 19:33:32 »
l'id di che?
che stai facendo?
che guida stai guardando?

M.

Offline apettir

  • Nuovo arrivato
  • *
  • Post: 38
    • Mostra profilo
Re:Come recuperare l'id
« Risposta #2 il: 02 Set 2012, 20:03:19 »
Ho creato nella view di default una tabella di questo tipo:

Codice: [Seleziona]
<?
        $k = 0;
        foreach ($this->items as &$row)
        {
?>
                <tr>
                    <td><a href="<?php echo JRoute::_('index.php?option=com_miocomponente&view=miavista&id='.$row->id); ?>"> <?=$row->nome1?> </a></td>
                    <td><a href="<?php echo JRoute::_('index.php?option=com_miocomponente&view=miavista&id='.$row->id); ?>"> <?=$row->nome2?> </a></td>
                </tr>
<?
            $k = 1 - $k;
        }
?>

Vorrei fare in modo che clikkando sul link del nome1 si visualizzassero tutti i campi di quella riga 1 del database (quella con id=1), invece clikkando sul nome2 la riga 2 del database (con id=2) e cosi' via...
Pero' non sapendo come recuperare il valore di id ($row->id nella tabella) non riesco ad andare avanti.

Tra i vari tutorial che ho consultato questo e' quello che seguo di piu': http://library.logicsistemi.it/it/joomla/developing-joomla-25-mvc-components

Grazie per l'attenzione.

mau_develop

  • Visitatore
Re:Come recuperare l'id
« Risposta #3 il: 02 Set 2012, 20:12:30 »
se vuoi scorrere $this->items vuol dire che da qualche parte li hai estratti quegli items... da dove li hai estratti? come li hai passati alla view? cosa stai facendo ? un modulo? un plugin? un componente?

M.

Offline apettir

  • Nuovo arrivato
  • *
  • Post: 38
    • Mostra profilo
Re:Come recuperare l'id
« Risposta #4 il: 02 Set 2012, 20:24:10 »
Che sto facendo un componente e' un po' una parola grossa (piu' che altro vorrei capire come funziona), comunque dovrebbe essere un componente.

Per quanto riguarda i dati li ho estratti dal database con una semplice query nel model

Codice: [Seleziona]
class TeamModelMiocomponente extends JModelList
{
    function getListQuery()
    {
        $db = JFactory::getDBO();
        $query = $db->getQuery(true);
        $query->select('nome1,nome2');
        $query->from('#__miocomponente');
        return $query;
    }
}

e li ho passati alla view in questo modo:

Codice: [Seleziona]
class TeamViewMiocomponente extends JView
{
    function display($tpl = null)
    {
        $this->items = $this->get('Items');

        parent::display($tpl);
    }
}


e quindi nel template con la tabella che avevo gia' postato

Codice: [Seleziona]
<?
        $k = 0;
        foreach ($this->items as &$row)
        {
?>
                <tr>
                    <td><a href="<?php echo JRoute::_('index.php?option=com_miocomponente&view=miavista&id='.$row->id); ?>"> <?=$row->nome1?> [/url]</td>
                    <td><a href="<?php echo JRoute::_('index.php?option=com_miocomponente&view=miavista&id='.$row->id); ?>"> <?=$row->nome2?> [/url]</td>
                </tr>
<?
            $k = 1 - $k;
        }
?>

mau_develop

  • Visitatore
Re:Come recuperare l'id
« Risposta #5 il: 02 Set 2012, 20:49:03 »
quindi se hai fatto tutto giusto e nella tabella ci sono dei valori dovresti vederli nel template

prima della foreach fai un bel print_r($this->items);

M.

Offline apettir

  • Nuovo arrivato
  • *
  • Post: 38
    • Mostra profilo
Re:Come recuperare l'id
« Risposta #6 il: 02 Set 2012, 21:14:21 »
Scusami Maurizio ma sicuramente non mi sono spiegato bene, quello che ho postato mi funziona bene, il problema e' che non riesco ad andare avanti. Nella view i dati mi arrivano benissimo ma chikkando nel link non so come prelevare l'id di riferimento a quella riga di database in modo da visualizzare (magari in una seconda view) solo quei dati. Quello che ho fatto fino adesso potrebbe essere benissimo come la lista di nomi e cognomi in una rubrica telefonica e clikkando su ognuno di essi si visualizza tutti i dati personali di ognuno degli utenti.

Spero adesso di essermi spiegato meglio...

Grazie! ;)

mau_develop

  • Visitatore
Re:Come recuperare l'id
« Risposta #7 il: 03 Set 2012, 12:39:49 »
Codice: [Seleziona]
->>>>>>>>>>>>> PERCHE' DUE RIGHE CON LO STESSO LINK? ... ne basta 1
                <tr>
                    <td><a href="<?php echo JRoute::_('index.php?option=com_miocomponente&view=miavista&id='.$row->id); ?>"> <?=$row->nome1?> [/url]</td>
                    <td><a href="<?php echo JRoute::_('index.php?option=com_miocomponente&view=miavista&id='.$row->id); ?>"> <?=$row->nome2?> [/url]</td>
                </tr>

per fare quello che vuoi non devi fare un'altra view, puoi usare la stessa dinamicizzando il template e la query

se vuoi fare un altra vista l'altra vista devi indicargliela nel controller... la prima usa default perchè è quella del componente e seguendo il CRUD lo fa automaticamente

M.

Offline apettir

  • Nuovo arrivato
  • *
  • Post: 38
    • Mostra profilo
Re:Come recuperare l'id
« Risposta #8 il: 04 Set 2012, 18:52:18 »
Si, hai ragione. Infatti ci sono due righe uguali ma mi piaceva l'idea di dividere il nome dal cognome nella tabella (in due celle diverse cosi' sono piu' ordinati nell'elenco) e il clik su entrambi avrebbero portato nella stessa pagina. L'ho fatto cosi' perche' non conosco altri modi per farlo.

Per il resto grazie per il suggerimento della tua risposta.

Ciao.
 ;)

Offline alexdi

  • Appassionato
  • ***
  • Post: 304
  • Sesso: Maschio
  • M5S , forse riusciamo a mandarli tutti a casa !!
    • Mostra profilo
Re:Come recuperare l'id
« Risposta #9 il: 07 Set 2012, 00:03:23 »
...ho letto velocemente e forse non ho capito.
 
Codice: [Seleziona]
class TeamModelMiocomponente extends JModelList
{
    function getListQuery()
    {
        $db = JFactory::getDBO();
        $query = $db->getQuery(true);
        $query->select('nome1,nome2');
        $query->from('#__miocomponente');
        return $query;
    }
}
Qui' vedo che selezioni name1 e name2 ma non vedo l' id del record.

E' forse quì il problema ?
Non è la specie più intelligente a sopravvivere e nemmeno quella piu' forte. E' quella più predisposta al cambiamento. Charles Darwin

Blog Personale

mau_develop

  • Visitatore
Re:Come recuperare l'id
« Risposta #10 il: 07 Set 2012, 11:46:07 »
ma non vedo l' id del record
--------------------------------------
...infatti, guarda il titolo del post

M.

Offline alexdi

  • Appassionato
  • ***
  • Post: 304
  • Sesso: Maschio
  • M5S , forse riusciamo a mandarli tutti a casa !!
    • Mostra profilo
Re:Come recuperare l'id
« Risposta #11 il: 07 Set 2012, 18:03:11 »
mau .....ma non  deve mettere il campo id della tabella nella query->select ?
Non è la specie più intelligente a sopravvivere e nemmeno quella piu' forte. E' quella più predisposta al cambiamento. Charles Darwin

Blog Personale

mau_develop

  • Visitatore
Re:Come recuperare l'id
« Risposta #12 il: 07 Set 2012, 18:52:23 »
esatto e infatti chiede come fare a recuperarlo... poi secondo me nn ha capito come funziona per cui pensa di fare un altro model e un'altra view... però è un problema del dopo...

M.

Offline alexdi

  • Appassionato
  • ***
  • Post: 304
  • Sesso: Maschio
  • M5S , forse riusciamo a mandarli tutti a casa !!
    • Mostra profilo
Re:Come recuperare l'id
« Risposta #13 il: 07 Set 2012, 20:45:09 »
ok. thanks.
Non è la specie più intelligente a sopravvivere e nemmeno quella piu' forte. E' quella più predisposta al cambiamento. Charles Darwin

Blog Personale

mau_develop

  • Visitatore
Re:Come recuperare l'id
« Risposta #14 il: 07 Set 2012, 21:10:05 »
in parole povere e per chi legge...
in quella query manca un if;
se nella get della JRequest esiste un id bisogna aggiungere un query->where
così anche nel template, se non sufficiente a supportare le due viste bisognerà con degli if modificare un po' il layout
Nella vista grid (admin) quando si spunta un checkbox per andare in edit il cid passa invece come array dal post e il crud di joomla provvede, con il metodo di jtable che ritorna la riga passando un id, ad associare i valori al form che vediamo nella vista edit.

Un errore tipico che crea vulnerabilità è non prendere i valori dalla get o dal post, accontentandosi di un get id

spero di essermi spiegato meglio... anche se rileggendo non credo... sintetizzare in tre righe e con linguaggio comprensibile non è semplicissimo

 



Web Design Bolzano Kreatif