Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di mt19
    Registrato dal
    Jul 2011
    Messaggi
    180

    [Domanda noob] Estrapolare una variabile alla volta in $Query->GetInfo( )

    Salve a tutti!
    Volevo chiedere come si fa a estrapolare un valore alla volta da un array del genere:

    print_r( $Query->GetInfo( ) );

    Questo array mi da questo risultato:

    http://80.241.223.41/view2.php (posto il link pechè il testo sarebbe troppo lungo da scrivere)

    Ora se per esempio volessi estrarre solo l'hostname (Minecraft 24/7) come faccio?

    Altra domanda da noob: ho una lista di mod e in mezzo vorrei metterci del codice html, come devo usare la funzione implode()?

    Scusate ma il primo problema proprio non riesco a risolverlo anche googlando....

  2. #2
    beh, se $Query->GetInfo( ) restituisce un array con delle chiavi basta usare quelle specifiche chiavi

    codice:
    $array = $Query->GetInfo();
    echo $array['HostName'];
    ovviamente non hai bisogno di mettere il valore in una variabile, puoi usarlo direttamente

  3. #3
    Utente di HTML.it L'avatar di mt19
    Registrato dal
    Jul 2011
    Messaggi
    180
    Effettivamente non ci avevo mai pensato ed è anche semplicissimo usare la funzione implode(). Grazie mille

  4. #4
    ma perche' vuoi usare implode? se vuoi salvare l'intero array su database basta che usi serialize ( www.php.net/serialize )

    se vuoi togliere delle chiavi dall'array puoi usare unset sulla chiave stessa prima di serializzare l'array ( www.php.net/unset )

  5. #5
    Utente di HTML.it L'avatar di mt19
    Registrato dal
    Jul 2011
    Messaggi
    180
    Bhe, ma semplicemente io ho un array con tutte le modifiche e voglio che tra una mod e l'altra ci sia un
    , non mi conviene usare implode?

    p.s. Avrai anche un'altra domanda, ma che non centra nulla con il post, ne devo aprire un altro?

  6. #6
    beh, dipende cosa vuoi fare ... stampare semplicemente a video l'array senza un minimo di formattazione non e' molto bello dal punto di vista estetico

    almeno usa una tabella o un qualcosa del genere
    codice:
    $array = $Query->GetInfo();
    
    echo "<table>\r\n";
    echo "<tbody>\r\n";
    
    foreach($array in $key => $value)
    {
        if (is_array($value))
        {
            $value = implode(', ' $value);
        }
    
        echo "<tr>\r\n";
        echo "<td>" . $key . "</td>\r\n";
        echo "<td>" . $value . "</td>\r\n";
        echo "</tr>\r\n";
    }
    
    echo "</tbody>\r\n";
    echo "</table>\r\n";
    ovviamente puoi dare un minimo di formattazione aggiuntiva ed impostare le width delle colonne cos' non "ballano", soprattutto visto che la chiave plugin fara' comprimere la colonna delle chiavi al minimo

    Se vuoi anche avere una "traduzione" della colonna delle chiavi puoi fare
    codice:
    $labels = array
    (
        'HostnName' => 'Hostname',
        'GameType' => 'Tipo di partita',
        'Version' => 'Versione',
        'Plugins' => 'Plugin',
        'Map' => 'Mappa',
        'Players' => 'Giocatori collegati',
        'MaxPlayers' => 'Numero massimo di giocatori',
        'HostPort' => 'Porta Server',
        'HostIp' => 'IP Server',
        'Software' => 'Software'
    );
    
    // Acquisisce l'elenco
    $array = $Query->GetInfo();
    
    // Rimuove la chiave raw plugins
    unset($array['RawPlugins']);
    
    // Apre la tabella con l'elenco delle chiavi
    echo "<table>\r\n";
    echo "<tbody>\r\n";
    
    // Cicla le chiavi
    foreach($array in $key => $value)
    {
        // Se e' un array, lo implode separando i valori con la virgola
        if (is_array($value))
        {
            $value = implode(', ' $value);
        }
    
        // Stampa la riga
        echo "<tr>\r\n";
        echo "<td>" . $labels[$key] . "</td>\r\n";
        echo "<td>" . $value . "</td>\r\n";
        echo "</tr>\r\n";
    }
    
    // Chiude la tabella
    echo "</tbody>\r\n";
    echo "</table>\r\n";
    Ovviamente l'array labels deve contenere le chiavi con la STESSA IDENTICA dicitura, altrimenti kaboom!

  7. #7
    Utente di HTML.it L'avatar di mt19
    Registrato dal
    Jul 2011
    Messaggi
    180
    Ma se io uso implode posso per esempio mettergli un div e tramite css e le clss modificare tutta la grafica e la formattazione no?
    Poi apro un altro topic perchè ho una richiesta particolare

  8. #8
    Originariamente inviato da mt19
    Ma se io uso implode posso per esempio mettergli un div e tramite css e le clss modificare tutta la grafica e la formattazione no?
    Poi apro un altro topic perchè ho una richiesta particolare
    hai poco controllo, infatti non puoi mettere una classe per chiave perche' con implode non hai le chiavi ...

    ti ho fatto un esempio con le tabelle perche', sinceramente, vista la domanda non mi sembrava il caso di fare un esempio eccessivamente complesso, ma ci vuol poco a trasformare quello che ti ho scritto in

    codice:
    $labels = array
    (
        'HostnName' => 'Hostname',
        'GameType' => 'Tipo di partita',
        'Version' => 'Versione',
        'Plugins' => 'Plugin',
        'Map' => 'Mappa',
        'Players' => 'Giocatori collegati',
        'MaxPlayers' => 'Numero massimo di giocatori',
        'HostPort' => 'Porta Server',
        'HostIp' => 'IP Server',
        'Software' => 'Software'
    );
    
    // Acquisisce l'elenco
    $array = $Query->GetInfo();
    
    // Rimuove la chiave raw plugins
    unset($array['RawPlugins']);
    
    // Apre la lista
    echo "<ul id=\"rows\">\r\n";
    
    // Cicla le chiavi
    foreach($array in $key => $value)
    {
        // Se e' un array, lo implode separando i valori con la virgola
        if (is_array($value))
        {
            $value = implode(', ' $value);
        }
    
        // Stampa la riga
        echo "<li id=\"row-" . $key . "\">\r\n";
        echo <span class=\"key\">" . $labels[$key] . "</span> <span class=\"value\">" . $value . "</span>\r\n";
        echo "\r\n";
    }
    
    // Chiude la lista
    echo "[/list]\r\n";
    Se poi vuoi proprio usare l'implode puoi fare
    codice:
    // Acquisisce l'elenco
    $array = $Query->GetInfo();
    
    // Rimuove la chiave plugins perche' e' un array e verrebbe trasformato nella dicitura array (a meno che di usare delle funzioni di php per applicare delle funzioni ai singoli elementi degli array e via dicendo)
    unset($array['plugins']);
    
    echo '<div id="rows"><div class="row">' . implode('</div><div class="row">', $array) . '</div></div>';
    puoi gestire come vuoi lo stile, non ho messo neanche un br tra i div, metti in caso un display block e giochi con margin per la spaziatura e con first-child/last-child per non darla al primo/ultimo elemento

    pero', alla fine dei conti, e' una sovracomplicazione

  9. #9
    Utente di HTML.it L'avatar di mt19
    Registrato dal
    Jul 2011
    Messaggi
    180
    Si infatti sono assolutamente ignorante di php, ma con html me la cavo benino dai, so fare qualche sito statico in html5 e css3 comunque grazie mille del tuo aiuto, tra un po'scrivo anche l'altro post, pero che tu mi aiuterai.
    Grazie infinite ancora

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.