Array e tag select (caso 2)

May 25th 2011 by Paolo Bindi in: Php | Tags: Php

Vi illustro un altro esempio per l'uso di un array che contiene informzioni da visualizzare in un tag select di un form e quindi poi recuperate via POST.
Il codice e' distribuito su piu' file, ma qui vi elenco le parti senza questa distinzione.

1. La definizione dell'array
Inseriamo questa definizione in un file di configurazione e definiamo la variabile che lo contiene come globale, in maniera che all'occorrenza potra' essere modificata. Non e' per ora interesse di questo articolo.
L'array contiene un elenco di server, il loro indirizzo ip e se sono o meno disponibili.

    global $gameServers;

    $gameServers=array(
        0=>array(
                "name"=>"paolo 01",
                "ip"=>"111.111.111.111",
                "available"=>"1"
            ),
        1=>array(
                "name"=>"paolo 02",
                "ip"=>"111.122.133.144",
                "available"=>"0"
        )
    );

2. La select del form

<select class="servidor-login" name="server">
<?php
    $keys=array_keys($gameServers);
    for($k=0;$k<count($keys);$k++)
    {
        if($gameServers[$keys[$k]]['available']){
             $cssClass="server-available";
             $labelDesc="AVAILABLE";
        }else{
             $cssClass="server-not-available";
             $labelDesc="AVAILABLE";
        }

        echo "<option value=".$k." class=".$cssClass.">".$gameServers[$keys[$k]]['name']." (".$labelDesc.")</option>";
     }
?>
</select>

3. Uso nel codice
L'esempio riporta l'utilizzo delle curl, che verranno spiegate in un altro articolo.

if($gameServers[$_POST['server']]['available']){
    $url = "http://".$gameServers[$_POST['server']]['ip']."index.php?action=login";
    
    $handler = curl_init();

    curl_setopt($handler, CURLOPT_URL, $url);
    curl_setopt($handler, CURLOPT_POST,true);
    curl_setopt($handler, CURLOPT_POSTFIELDS, $_POST);
    $response = curl_exec ($handler);
}

Nel caso che riscontrate qualche errore o se volete contattarmi per qualche consiglio o suggerimento, utilizzate la form della sezione contatti