Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    OOP - lavorare con un oggetto in base ad una select

    Salve,
    spiego brevemente.
    Ho creato questa classe
    Codice PHP:
    class Unit {
        
        
    // PROPRIETA
        
    public $tribu;
            ......

        
    // COSTRUTTORE
        
    public function __construct($tribu....) {
            
    $this->tribu $tribu;
            .......
        }

        
    // METODI
        
    ........
    }

    // UNITA
    $nomeunita = new Unit(1,....);
    $nomeunita2 = new Unit(7,....);
    .... 
    Diciamo che la uso come libreria, cioè ho diverse pagine e script php che usano i dati contenuti in questo file php, e ne sfruttano i metodi della classe.
    Gli oggetti ($nomeunita) vengono creati tutti in quel file, in modo da avere tutti i dati che mi servono sempre disponibili, ed evito di andare a creare un nuovo oggetto con i propri attributi in ogni pagina in cui mi serve.
    Come detto prima, questa "libreria" è inclusa in tutte le pagine che la sfruttano.
    Ho un'altra pagina con una <select> che in base alla scelta che faccio, deve andare a fare dei calcoli in base all'unita selezionata. ad esempio
    codice:
    <select id="selezione" onchange="calcola()">
      <option value="$nomeunita1">Unita1</option>
      <option value="$nomeunita2">Unita2</option>
      ........
    la funzione calcola() è questa:
    codice:
    function calcola() {
            ...........
           var selezione = il valore assunto dalla select;
           myRequest = CreateXmlHttpReq(myHandler);
           myRequest.open("GET","calcola.php?selezione="+escape(selezione));
           myRequest.send(null);
           .....
    }
    con relativo output....
    codice:
    function myHandler() {
        if (myRequest.readyState == 4 && myRequest.status == 200) {
            var risultato = document.getElementById("totale");
            risultato.innerHTML=myRequest.responseText;
        }
    }
    la pagina calcola.php dovrebbe essere questa
    Codice PHP:
    <?php
    include("libreria.php");

    $selezione $_GET['selezione'];

    echo 
    $selezione->metodo(); <------$selezione non è un oggetto!!!

    ?>
    Ecco, così mi ricavo il valore della select (quindi la option selezionata), ad esempio "nomeunita1". In base alla option selezionata, deve lavorare con uno degli oggetti creati nella libreria. Quindi se ad esempio seleziono nella select "nomeunita1", deve lavorare con l'oggetto "$nomeunita1".
    In pratica in calcola.php l'echo deve essere del tipo:
    Codice PHP:
    echo $nomeunita1->metodo(); 
    La variabile $selezione diciamo che contiene esattamente il nome dell'oggetto che mi serve, in questo caso $selezione contiene la stringa "$nomeunita1".
    Come faccio a far capire allo script con quale oggetto lavorare?
    Pensavo di fare un if così:
    Codice PHP:
    if ( $selezione == "$nomeunita1")
      
    $nomeunita1->metodo(); 
    E questa è già una soluzione al mio problema. Però in quella "libreria" ho circa 40 oggetti, quindi dovrei fare 40 if nel file calcola.php!! E mi sembra una cosa assurda visto che nella variabile $selezione ho già il nome dell'oggetto con cui lavorare!

    Spero di essere stato chiaro, per altre info chiedete pure, grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    hai provato con $$selezione? cmq non è molto "pulito" utilizzare un dato passato come parametro direttamente come nome di una variabile... mmmh...

  3. #3
    Ecco cosa mi sfuggiva.....LoL
    Chiedo perdono per la svista, è che ho iniziato oggi a provare ajax e programmazione ad oggetti, e mi sfuggono le banalità......
    Grazie mille, ho sistemato il codice passando anzichè "$nomeunita", "nomeunita" senza il $, e lo uso con $$selezione, è proprio quello che volevo.

    Che intendi con non è molto pulito? Che altre alternative ho?

  4. #4
    Originariamente inviato da peppeocchi
    Che intendi con non è molto pulito? Che altre alternative ho?
    Mettere gli oggetti in un array.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    potresti passare come valore della selezione il valore di un attributo dell'oggetto, da selezionare successivamente da una lista

  6. #6
    Come è gia stato detto da k.b fai un array generale degli oggetti e confronta la stringa
    codice:
    if(in_array($nomeunita1,$selezione)){echo $selezione->metodo();}

  7. #7
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Originariamente inviato da Plopper
    Come è gia stato detto da k.b fai un array generale degli oggetti e confronta la stringa
    codice:
    if(in_array($nomeunita1,$selezione)){echo $selezione->metodo();}
    Puoi spiegarmi questa porzione di codice per favore?

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.