Visualizzazione dei risultati da 1 a 10 su 10

Discussione: aiuto esercizio

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    9

    aiuto esercizio

    ciao a tutti, l'esercizio che dovrei svolgere è:
    "costruire un parser composto da un client e un server.
    il server deve elaborare pagine html, aventi questa struttura:
    <html>
    <body>
    <ul>[*]<date>dd-mm-yyyy</date><place>indirizzo</place><contents>....</contents>[*]<date>dd-mm-yyyy</date><place>indirizzo</place><contents>....</contents>
    ......[/list]
    </body>
    </html>

    il contenuto dei campi "date,place,contents" deve essere incluso in un JSON di ritorno, secondo il seguente formato:
    {"results":[[date,place,contents],...]}

    l client javascript deve richiedere i dati attraverso una chiamata AJAX. la chiamata fornisce la url da elaborare.

    i risultati JSON vanno inclusi all'interno di una tabella, ordinati dal + recente al meno recente"

    PREMETTO che sono ancora molto inesperta sull'uso di un tutti questi linguaggi.
    io ho fatto in questo modo...ma non capisco dove stanno gli errori.

    INDEX.HTML:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <script type="text/javascript" src="fun.js"></script>
    </head>
    <body>
    Inserisci: <input id="url" type="text" name="url">
    <input type="submit" name="submit" value="submit" onclick="visualizza()">
    </body>
    </html>


    ANALIZZA.PHP:

    <?php


    $arrJson=array();
    $url=$_GET['url'];
    $file=file($url);
    $file = str_replace("\r\n", "", $file);
    for($i=0;$i<count($file);$i++){
    $riga=explode("<",$file[$i]);
    if($riga[0]=="<li"){
    $tmp=explode(">",$riga[1]);
    $tmp1=explode("<",$tmp[1]);
    $data=$tmp1[0];
    $tmp2=explode(">",$riga[2]);
    $tmp3=explode("<",$tmp2[1]);
    $place=$tmp3[0];
    $tmp4=explode(">",$riga[3]);
    $tmp5=explode("<",$tmp5[1]);
    $contents=$tmp5[0];
    $info=$data.','.$place.','.$contents;
    $arrJson[$i]=$info;
    }
    }
    $results=json_encode($arrJson);
    echo $results;

    ?>


    FUN.JS:

    var obJson;


    function visualizza(){
    var url= document.getElementById("url").value;
    var req=new XMLHttpRequest();
    req.open('GET','analizza.php?url='+url);
    req.onreadystatechange = function() {
    if (req.readyState == 4) {
    if (req.status==200) {
    obJson = eval(req.responseText);
    if (obJson==null) {
    alert("errore!!");
    }
    else {
    ordina_array();
    caricaTabella();
    }
    }
    else{
    alert("errore (status!=200");
    }
    }
    };
    req.send(null);
    }
    function ordina_array(){
    for(var i=0;i<obJson.length-1;i++){
    var anno1=obJson[i].substring(6,9);
    var mese1=obJson[i].substring(3,4);
    var giorno1=obJson[i].substring(0,1);
    for(var j=i;j<obJson.length;j++){
    var anno2=obJson[j].substring(6,9);
    var mese2=obJson[j].substring(3,4);
    var giorno2=obJson[j].substring(0,1);
    if(anno1>anno2){
    var tmp1=obJson[i];
    obJson[i]=obJson[j];
    obJson[j]=tmp1;
    }
    if(anno1==anno2){
    if(mese1<mese2){
    var tmp2=obJson[i];
    obJson[i]=obJson[j];
    obJson[j]=tmp2;
    }
    }
    if(anno1==anno2){
    if(mese1==mese2){
    if(giorno1<=giorno2){
    var tmp=obJson[i];
    obJson[i]=obJson[j];
    obJson[j]=tmp;
    }
    }
    }
    }
    }
    }

    function caricaTabella(){
    document.write("<table cellspacing='0' border='1' width='500'><tr align='center' ><td width='20%'>DATA</td><td width='20%'>LUOGO</td><td width='60%'>EVENTO</td></tr>");

    for(var i=0;i<obJson.length;i++) {
    var valori = obJson[i];
    var arr = valori.split(",");
    document.write(arr[0]);
    //document.write("<tr align='center'><td>" + arr[0] + "</td><td>" + arr[1] + "</td><td>" + arr[2] + "</td></tr>");
    }
    document.write("</table>")

    }

    so che è lungo e richiede tempo ma se qualcuno è in grado di aiutarmi lo ringrazio tantissimo.
    saluti!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    e si è veramente lungo cerca di restringere la porzione di codice dove credi vada in errore cosi analizziamo solo quella. Per esempio potresti provare a mettere un alert dopo che recuperi la response da php e verificare che i dati inviati siano corretti. Se sono corretti significa che la pagina html e la parte php funzionano correttamente e possiamo concentrarci solo sulla parte di visualizzazione e ordinamento.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    9
    ho messo l'alert dopo la risposta di php ed è lì che mi da l'errore. mi ritorna praticamente l'oggetto vuoto. se non ho capito male

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    ma nell'input text url che cosa ci andrai ad inserire?

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    9
    io per il momento ho inserito l'url di una pagina html creata con lo stesso formato indicato nel testo con i campi completi

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    9
    ok. ho fatto un pò di modifiche, adesso il problema me lo da nella visualizzazione

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    postami un esempio di json che viene inviato al client che contenga almeno 2 elementi

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    9
    ti posto la pagina php

    <?php
    $arrJson=array();
    $url=$_GET['url'];
    $file = file($url);
    $file=str_replace("\r\n", "", $file);

    for($i=0;$i<count($file);$i++){
    $riga=explode("<",$file[$i]);
    if($riga[0]=="<li"){

    $tmp=explode(">",$riga[1]);
    $tmp1=explode("<",$tmp[1]);
    $data=$tmp1[0];

    $tmp2=explode(">",$riga[2]);
    $tmp3=explode("<",$tmp2[1]);
    $luogo=$tmp3[0];

    $tmp4=explode(">",$riga[3]);
    $tmp5=explode("<",$tmp4[1]);
    $evento=$tmp5[0];

    $arrJson[$i]=$data.','.$luogo.','.$evento;
    }
    }
    $encodedJson = json_encode($arrJson);
    echo $encodedJson;
    ?>

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    A me pare che l'errore sia ancora nella parte php, dentro questo if($riga[0]=="<li"){ non entrerà mai a meno che non abbia capito quale il formato della pagina su cui vuoi recuperare i dati. Fai una verifica

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    9
    ok. grazie per la disponibilità cmq

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.