Visualizzazione risultati 1 fino 15 di 15

Discussione: Nowcasting per sito meteo

  1. #1
    Guest

    Thumbs up Nowcasting per sito meteo

    Salve ragazzi, questo è il primo msg che scrivo...
    sto creando un portale meteo per la mia zona, e avevo la necessità di rendere una pagina disponibile per ogni località (che mi viene richiesta) dove l'utente autorizzato possa inserire i dati meteo rilevati dalla propria stazione meteo (temperatura, tempo presente, eccetera). I dati inseriti quindi attraverso un modulo dovranno poi essere visualizzati in un altra pagina in una tabella (località - temperatura - tempo presente - ora rilevamento).
    All'invio del modulo i dati dovrebbero essere inviati ad un database, e ogni volta che l'utente di quella data località invia i dati, vengono sovrascritti i dati inseriti precedentemente...

    Vi dico che ho 17 anni e sono alle prime armi con il PHP e Database...
    Come posso fare (che in giro per internet nn sono stato soddisfatto dalle varie guide)???
    Mille Grazie a tutti!

  2. #2
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Ti consiglio di studiarti come far comunicare il db con php qui.

    Nel tuo form dovresti anche aggiungere un cambo localita, cosi se trova quella stessa località nel db la modifica, altrimente aggiunge nuove dadi al db.

    O se trovi qualche modo per poter identificale la località da quella l'utente si connette puoi anche usare quello.
    Ultima modifica di sevenjeak : 04-01-2009 alle ore 11.30.11

    Sevenjeak
    Software developer and much more

  3. #3
    Guest

    Predefinito

    mille grazie per il link... ora mi metto a studiare!
    sono ben accolti altri suggerimenti...

  4. #4
    Guest

    Predefinito

    Studia (ovviamente) anche php qui
    Citazione Originalmente inviato da radioinmontagna
    Vi dico che ho 17 anni....
    Non conta l'età: io ho 13 anni

  5. #5
    Guest

    Predefinito

    Thanks "gabryhacker" ;-)

  6. #6
    Guest

    Thumbs up OK l'inio dei dati, ma NON va la lettura

    Ciao ragazzi,
    seguendo le guide che mi avete indicato sono riuscito a creare tutte le pagine e l'inserimento dei dati sul DB avviene completamente!
    Però NON funziona lo script di lettura "INDEX.PHP"; la pagina crea la tabella, ma vuota!
    questo è il codice di INDEX.PHP che dovrebbe far visualizzare in tabella i dadti estratti dal DB; il codice include altri due PHP (uno per le PW e uno per il "Top Pagina"):
    Codice PHP:
    <?
    include("top_foot.inc.php");
    include(
    "config.inc.php");
    top();

    $db = mysql_connect($db_host, $db_user, $db_password);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione");
    mysql_select_db($db_name, $db)
    or die (
    "Errore nella selezione del database");

    $query = "SELECT id, localita, temperatura, condicielo, fenomeni, altro, orarilevamento FROM nowcasting ORDER BY orarilevamento DESC LIMIT 0,20";

    $result = mysql_query($query);

    if (!
    $result) {
    die(
    "Errore nella query $query: " . mysql_error());
    }

    echo
    '
    <table border="1">
    <tr>
    <th>Località Rilevamento</th>
    <th>Temperatura (°C)</th>
    <th>Condizioni Cielo</th>
    <th>Fenomeni</th>
    <th>Altri Fenomeni</th>
    <th>Ora Rilevamento</th>
    </tr>'
    ;

    while (
    $row = mysql_fetch_assoc($result)) {

    echo
    "<tr>
    <td>
    $localita</td>
    <td>
    $temperatura</td>
    <td>
    $condicielo</td>
    <td>
    $fenomeni</td>
    <td>
    $altro</td>
    <td>
    $orarilevamento</td>
    </tr>"
    ;
    }

    echo
    '</table>';

    mysql_free_result($result);

    mysql_close();
    ?>
    Lo script mi da questo output:
    Codice HTML:
    <table border="1">  
        <tr>  
            <th>Località Rilevamento</th>  
            <th>Temperatura (°C)</th>  
            <th>Condizioni Cielo</th>  
            <th>Fenomeni</th>  
            <th>Altri Fenomeni</th>
            <th>Ora Rilevamento</th> 
        </tr><tr>  
                <td></td>  
                <td></td>  
                <td></td>  
                <td></td>  
                <td></td> 
                <td></td>  
            </tr><tr>  
                <td></td>  
                <td></td>  
                <td></td>  
                <td></
    Ci sono due righe vuote perchè le località che ho inserito sono state 2 per fare le prove!

    DOVE HO SBAJATO??? GRAZIE IN ANTICIPO PER L'AIUTO...
    Ultima modifica di dreadnaut : 11-01-2009 alle ore 18.12.58 Motivo: + tag [php] e [html]

  7. #7
    Guest

    Predefinito

    prova così:
    Codice PHP:
    while ($array = mysql_fetch_array($result)) {

    echo
    "<tr>
    <td>"
    .$array[1]."</td>
    <td>"
    .$array[2]."</td>
    <td>"
    .$array[3]."</td>
    <td>"
    .$array[4]."</td>
    <td>"
    .$array[5]."</td>
    <td>"
    .$array[6]."</td>
    </tr>"
    ;
    }
    http://php.net/mysql_fetch_array
    http://php.net/mysql_fetch_row

    ciao!

  8. #8
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    anche mysql_fetch_assoc() va bene, ma i valori li troverai in $row['nomecampo'] e quindi devi usare
    Codice PHP:
    echo "<tr>
    <td>
    {$row['localita']}</td>
    <td>
    {$row['temperatura']}</td>
    ...
    </tr>"
    ;

  9. #9
    Guest

    Predefinito

    perfetto... ora visualizza i dati nella tabella però:
    - nel campo temperatura non mi fa vedere i decimali dopo il punto "" . "" .
    per esempio visualizza 5. invece che 5.6

    - l'orario che nel modulo inserivo manualmente in formato " hh:mm gg-mm-aa " me lo tronca alle " hh ". es: avevo inserito "16:15 11-01-09" ma mi visualizza solamente " 16 ".
    - - - -
    poi, visto che l'utente non è obbligato a compilare il campo "temperatura", c'è un metodo che visualizza " N/D " quando il campo modulo "temperatura" rimane vuoto???

    GRAZIE

  10. #10
    Guest

    Predefinito

    1/2) Può dipendere da come è stata creata la tabella se è INT mettila a VARCHAR 255...
    3) Ecco un esempio:
    Codice PHP:
    $variabile = "ciao";
    if(empty(
    $variabile)) { $variabile = "N/D"; }
    echo
    $variabile;
    In questo caso non te la sostituisce..ma se togli "ciao" allora si...

  11. #11
    Guest

    Predefinito

    allora, per un campo che contiene numeri decimali ti consiglio di settare FLOAT, invece per un campo che contiene date o lo metti come campo date o decidi di mettergli un INT 11, cosi salvi la data come time() e poi la estrai con date() io uso questo metodo ed é molto comodo! ciao!

  12. #12
    Guest

    Predefinito

    è molto probabile che tu debba cambiare tipo di dato per le colonne della temperatura e dell'ora di rilevamento, per l'ora puoi usare il formato timestamp facendo una query così

    Codice:
    ALTER TABLE `tuaTabella` CHANGE `colonnaOraRilevamento` `colonnaOraRilevamento` TIMESTAMP NULL DEFAULT NULL
    oppure se vuoi che venga inserita la data attuale se non viene inserita una fai così:
    Codice:
    ALTER TABLE `tuaTabella` CHANGE `colonnaOraRilevamento` `colonnaOraRilevamento` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
    quando fai la query di inserimento convertire il tuo formato di data così:
    Codice PHP:
    $data = strtotime($oraRilevamento);
    per riconvertire la data da timestamp invece puoi fare così:
    Codice PHP:
    $data = strftime("%H:%M %d-%m-%Y", $oraRilevamento);
    in questo modo riottieni la data in formato hh:mm gg-mm-aaaa

    per la temperatura puoi modificare la colonna così
    Codice:
    ALTER TABLE `tuaTabella` CHANGE `temperatura` `temperatura` VARCHAR( 16 ) NOT NULL DEFAULT 'N/D'
    se non inserisci la temperatura nella query (devi omettere la colonna), il database ci inserirà automaticamente N/D , credo faccia al caso tuo. Oppure puoi sempre inserire da te N/D se il campo temperatura è vuoto

    Link utili
    http://it.php.net/manual/en/function.strftime.php
    http://it.php.net/manual/en/function.strtotime.php

  13. #13
    Guest

    Predefinito

    qualcosina ho capito... ma nn benissimo (causa la mia atuale ignoranza in php)
    allora vi do la struttura cosi so meglio come muovermi:
    - CONFIG.INC.PHP (che contiene i dati di accesso)
    - INSTALL.PHP (che contiene le query per la creazione della tabella sul db)
    - INSERT.PHP (che contiene il modulo per l'inserimento dei dati)
    - SAVE.PHP (che contiene lo script che "salva" i dati inviati dal modulo sul DB)
    - INDEX.PHP (che contiene le query di lettura del database e visuaaalizzazione)
    - UPLOAD.PHP (NON ANCORA ESISTENTE - che esegue l'upload dei dati sul DB)
    _____
    allora... le varie query e pezzi di codice dove li devo inserire???
    come devo fare per i decimali della temperatura e per l'ora??
    scusate l'insistenza ma abbiate pazienza con me che sono alle prime armi!
    PS: qualcosa ho capito cmq!
    GRAZIE ANCORA

  14. #14
    Kevinoo non è connesso Utente giovane
    Data registrazione
    14-05-2007
    Residenza
    Burano (Venezia)
    Messaggi
    94

    Predefinito

    Citazione Originalmente inviato da radioinmontagna Visualizza messaggio
    allora... le varie query e pezzi di codice dove li devo inserire???
    Ciao, ho letto i vari post precedenti. Non capisco una cosa, qui:

    Citazione Originalmente inviato da radioinmontagna Visualizza messaggio
    $query = "SELECT id, localita, temperatura, condicielo, fenomeni, altro, orarilevamento FROM nowcasting ORDER BY orarilevamento DESC LIMIT 0,20";
    che senso ha dare un limite alla query (con LIMIT 0,20) quando specifichi già le varie colonne da prendere !?

    Citazione Originalmente inviato da radioinmontagna Visualizza messaggio
    come devo fare per i decimali della temperatura e per l'ora??
    Per questa domanda devi cambiare il tipo della riga nella tabella nowcasting. Se viene visualizzato solo gli interi significa che hai impostato la colonna come INT o VARCHAR, impostala come FLOAT.

    Citazione Originalmente inviato da radioinmontagna Visualizza messaggio
    poi, visto che l'utente non è obbligato a compilare il campo "temperatura", c'è un metodo che visualizza " N/D " quando il campo modulo "temperatura" rimane vuoto???
    Puoi impostare la colonna con un dato in DEFAULT. Apri il tuo database.. ed esegui questa query:

    Codice:
    ALTER TABLE nowcasting ALTER --nome colonna-- DEFAULT 'N/D';
    Con questa query di default verrà inserito N/D nel database. Purtroppo, per far ciò, dovresti impostare la colonna come VARCHAR....
    "sempre avanti mai indietro, nemmeno per prendere la rincorsa!"

    Associazione Vogaepara Burano

  15. #15
    Guest

    Predefinito

    che senso ha dare un limite alla query (con LIMIT 0,20) quando specifichi già le varie colonne da prendere !?
    errore mio... ora tronco cosi il codice: ORDER BY orarilevamento DESC;

    perfetto per il campo "temperatura"!
    perfetto anche per il dato di default!!

    grazie mille! appena ho un po di tempo mi ci metto un po e vi faccio sapere!!!
    grazie :)

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •