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!!