• User

    Ciao Samyorn, 🙂 ,mi scusi se ci metto un pò a risp ma sto conciliando diversi progetti e ogni tanto vado in panne, riguardo al codice che mi ha inviato per ultimo e pur essendo principiante in php volevo dirle che a prima occhiata ho notato qualche errorino sintattico, non riesco a capire il senso di quei echo, non potrebbe funzionare in questo modo, penso... ma , se provo a modificare un attimo la query iniziale?
    Cioè questa parte di codice:
    if ($order=="")
    {

    $query="SELECT id,nome,marca,prezzo FROM table ORDER BY table . marca ASC";
    }
    else
    {
    $query="SELECT id,nome,marca,prezzo FROM table ORDER BY ".$order;
    }
    ...intendo lasciare solo la seconda query aggiungendo magari una variabile che contenga un array di campi, e con qualche if fare in modo che senza il primo click sia crescente (come di default con il SELECT) altrimenti con il secondo click ordinarlo in senso decrescente?!?!?! che ritorni però come prima ricliccando sopra.... :arrabbiato: poi ancora asort poi arsort poi asort poi arsort poi..................... oppssss, forse sto facendo un giro di parole un pò.... mmmmmmmmm.... :dull: ...forse è meglio se provo a fare questa modifica, in realtà ciò che sto dicendo è più facile a farsi che a dirsi, le faccio sapere. 😞 Spero di darle buone notizie.


  • User

    @Samyorn said:

    Intendevo qualcosa del genere 😉

    [php]$order=$_GET['order'];
    $desc=$_GET['desc'];
    ..........
    .........
    else
    {
    $query="SELECT id,nome,marca,prezzo FROM table ORDER BY ".$order;
    if ($desc=="y")
    {
    echo " DESC";
    }
    }
    ..........
    ..........
    print="
    <td><a href="catalogo.php?order=prezzo";

    if ($order=="prezzo" && $desc=="y")
    {
    echo "&desc=y"; // risultato: catalogo.php?order=prezzo&desc=y
    }
    else
    {
    echo " " title="Ordinamento"><B>Prezzo</B></a></TD></TR>";
    }

    [/php]Vedi se va, attendiamo buone notizie :ciauz:

    Ciao Samyorn, ho modificato in questo modo:

    [...................................]
    $db=mysql_connect($host,$user,$password) or die ("Impossibile connettersi al server $host");
    mysql_select_db($database,$db) or die ("Impossibile connettersi al database $database");
    if (isset($_GET['field'])) {
    $campo = $_GET['field']; // == "id" ? "id" : "nome"
    } else {
    $campo = "id";
    }
    if (isset($_GET['order'])) {
    $verso = $_GET['order'] == "desc" ? "DESC" : "ASC";
    } else {
    $verso = "ASC";
    }
    $query="SELECT * from prodotti ORDER BY {$campo} {$verso} ";
    // seleziona tutti i record della tabella

    [....................................]

    $AffectedRows [.......................]

    $verso = ($verso == "ASC") ? "desc" : "asc";

    echo"<table width="584" border="1">";
    echo"<tr> ";
    echo"<td width="342" bgcolor="#f5f5f5"><strong><a href='catalogo.php?field=id&order={$verso}'>id</a></strong></td>";
    echo"<td width="342" bgcolor="#f5f5f5"><strong><a href='catalogo.php?field=nome&order={$verso}'>nome</a></strong></td>";
    echo"<td width="342" bgcolor="#f5f5f5"><strong><a href='catalogo.php?field=marca&order={$verso}'>marca</a></strong></td>";
    echo"<td width="342" bgcolor="#f5f5f5"><strong><a href='catalogo.php?field=prezzo&order={$verso}'>prezzo</a></strong></td>";
    echo"</tr>";
    echo"<tr>";

    [..............]

    ?>

    ...sembrava troppo bello! Per un attimo mi sono illuso d'esserci riuscito e invece è ritornato tutto come prima, cioè mi ordina sì in ord crescente e decrescente ma non esattamente come vorrei, cioè, se clicco due volte sul campo id o nome o marca o prezzo mi ordina correttamente da crescente in senso decrescente e viceversa, ma cliccando sul campo id o nome o marca o prezzo per una sola volta per ordinare in senso crescente e spostandomi poi su un altro campo per ordinarlo nuovamente in senso crescente mi ordina invece in senso decrescente come se fossi fermo sulla stessa colonna(questo credo a causa del primo if), si vede benissimo anche nell'url,era meglio come lo avevamo fatto prima!!! io vorrei che spostandomi da una colonna all'altra ogni primo click sia crescente e solo il secondo decrescente proprio come stavamo facendo, ma questa cosa comincia a sembrarmi quasi utopia... HELP ME SAMYORN! Non vorrei essere una seccatura ma sogno di realizzarla questa cosa. Ma che caos sto combinando? Dov'è che sbaglio... davvero non capisco... :gtsad:


  • User

    Ciao Samyorn, ce l'ho fatta. Uffa, ancora mi lecco le ferite ma ho ottenuto il risultato sperato, ora mi manca solo la freccettina che farò muovere con qualche riga in javascript. Diciamo che l'unico problema che mi resta è quest'ultima, con il primo click la freccetta mi compare solo su quel campo e al passaggio del mouse genera l'evento su e giù, ma col secondo click la freccetta non vuole saperne di comparire... :p, e se compare lo fa su tutte le righe e oltretutto resta statica cioè l'evento javascript non va più. Se posso inviarle lo script in un messaggio privato... Ciao Samy


  • Consiglio Direttivo

    @4everyoung said:

    ...... ma col secondo click la freccetta non vuole saperne di comparire... :p, e se compare lo fa su tutte le righe e oltretutto resta statica cioè l'evento javascript non va più. Se posso inviarle lo script in un messaggio privato... Ciao Samy
    condividiamo il problema con gli altri 😉

    posta quì il pezzo di codice che interessa alla funzione, così vediamo se il problema sta nelle istruzioni PHP e nello Js (in tal caso posterai nella sezione adatta :2:
    :ciauz:


  • User

    <?php
    $host='localhost';
    $user='root';
    $password='xxxxxxxx';
    $database='db_name';
    function change($ordine){
    if($ordine == "ASC")
    {return "DESC";}
    else {return "ASC";}
    }
    $cambiasenso = "ASC";
    if(isset($_GET['campo'])){
    $campo = $_GET['campo'];
    }
    else $campo = "id";
    if(isset($_GET['ordine'])){
    $ordine = $_GET['ordine'];
    }
    else $ordine = "ASC";
    $db=mysql_connect($host,$user,$password) or die ("Impossibile connettersi al server $host");
    mysql_select_db($database,$db) or die ("Impossibile connettersi al database $database");
    $query="SELECT id,nome,marca,prezzo FROM table_name ORDER BY " . $campo . " " . $ordine;
    $dbResult=mysql_query($query,$db);
    $AffectedRows=mysql_affected_rows($db);
    print "<html><head><title>Catalogo dei prodotti</title>
    <SCRIPT language="JavaScript">
    function movepic(img_name,img_src)
    {
    document[img_name].src=img_src;
    }
    </SCRIPT>
    </head><body>";
    print"<center><h1>Catalogo dei prodotti</h1></center>";
    print "<div align="center">";
    print"<TABLE border="1" width="60%"><TR>";
    $onMouseOver1="onmouseover="movepic('button','img/s_desc.png')"";
    $onMouseOut1="onmouseout="movepic('button','img/s_asc.png')"";
    $image1=" <IMG NAME="button" SRC="img/s_asc.png" ALT="Crescente" border="0">";
    $onMouseOver2="onmouseover="movepic('button','img/s_asc.png')"";
    $onMouseOut2="onmouseout="movepic('button','img/s_desc.png')"";
    $image2=" <IMG NAME="button" SRC="img/s_desc.png" ALT="Decrescente" border="0">";
    $mouseover=($ordine=="ASC")?$onMouseOver1:$onMouseOver2;
    $mouseout=($ordine=="ASC")?$onMouseOut1:$onMouseOut2;
    if($ordine=="ASC")
    {
    $image=$image1;
    }
    elseif($ordine="DESC")
    {
    $image=$image2;
    }
    else
    {
    $image=$image1;
    }
    if($campo == "id")

    HO COMPLETATO SOLO IL PRIMO CAMPO PERCHE' SE COMPLETO ANCHE GLI NON VA PIU' BENE, CMQ CON QUESTO CAMPO ALMENO SI VEDE L'EFFETTO CHE VORREI OTTENERE

    {
    $cambiasenso = change($ordine);}
    echo "<td><a {$mouseover} {$mouseout} href="prova.php?campo=id&ordine=" . $cambiasenso .""><b>id $image</b></a>";
    $cambiasenso = "ASC";

    if($campo == "nome")
    {
    $cambiasenso = change($ordine);}
    echo "<td><a href="prova.php?campo=nome&ordine=" . $cambiasenso . ""><b>nome</b></a>";
    $cambiasenso = "ASC";

    if($campo == "marca")
    {
    $cambiasenso = change($ordine);}
    echo "<td><a href="prova.php?campo=marca&ordine=" . $cambiasenso . ""><b>marca</b></a>";
    $cambiasenso = "ASC";

    if($campo == "prezzo")
    {
    $cambiasenso = change($ordine);}
    echo "<td><a href="prova.php?campo=prezzo&ordine=" . $cambiasenso . ""><b>prezzo</b>";
    $cambiasenso = "ASC";

    for($index=0;$index<$AffectedRows;$index++)
    {
    $row=mysql_fetch_row($dbResult);

    [...........................];
    # QUI E' TUTTO UGUALE ALLO SCRIPT CHE HO INVIATO UN PO' DI TEMPO FA
    

    }

    E QUI PURE

    mysql_close($db);
    ?>

    Ok, 🙂 eccolo a disposizione di tutti.
    Allora, finalmente in questo modo se clicco una sola volta su una colonna, qualunque essa sia, mi ordina sempre in senso crescente, se mi fermo sulla colonna sul quale ho già cliccato una volta, e riclicco mi ordina in senso decrescente.Il problema ora è l'immagine, se provo
    ad estentere l'effetto $mouseout/$mouseover sugli altri campi oltre che a passare l'immagine $image al campo, immagine che normalmente dovrebbe scomparire ogni volta che cambio colonna e comparire sulla colonna cliccata,se provo a fare ciò non va più ne l'effetto javascript ne la freccetta,anzi la freccia mi compare su tutti i campi e sono noiose e statiche. Col vecchio metodo compariva e scompariva seguendo la colonna cliccata e dava anche l'effetto, era il secondo click che non andava. Come posso fare per risolvere questo ennesimo problemino? E' una banalità lo so, ma voglio togliermi sto cruccio dalla testa... Spero di essermi spiegato bene con questo giro di parole. Grazie. Ciao Samy :ciauz:


  • Consiglio Direttivo

    Non sono molto ferrato in Js...domanda:
    Ma perchè invece di usare Js non fai fare tutto al PHP, facendo apparire l'immagine che ti interessa sempre basandoti sul ASC o DESC che passi ai click?


  • User

    ...ed io non sono molto ferrato in php!!!!! 😄
    Ciao Samyorn, la parte di javascript

    <SCRIPT language="JavaScript">
    function movepic(img_name,img_src)
    {
    document[img_name].src=img_src;
    }
    </SCRIPT>

    non è altro che una funzione per animare l'immagine della freccetta per farla andare su e giu come fa in phpMyAdmin al passaggio del mouse

    $onMouseOver1="onmouseover="movepic('button','img/s_desc.png')"";
    $onMouseOut1="onmouseout="movepic('button','img/s_asc.png')"";

    $image1=" <IMG NAME="button" SRC="img/s_asc.png" ALT="Crescente" border="0">";

    $onMouseOver2="onmouseover="movepic('button','img/s_asc.png')"";
    $onMouseOut2="onmouseout="movepic('button','img/s_desc.png')"";

    $image2=" <IMG NAME="button" SRC="img/s_desc.png" ALT="Decrescente" border="0">";

    $onMouseOver1 e $onMouseOut1 oppure $onMouseOver2 e $onMouseOut2 non sono altro che l'evento che viene scatenato al passaggio del puntatore del mouse quando è sopra onMouseOver e ritorna come prima quando il mouse va via dall'immagine onMouseOut, il resto lo fa php...


  • Consiglio Direttivo

    ok, ma se clicchi la seconda volta non ti funziona??? oppure ho capito male :D?


  • User

    si, giusto, se passo anche agli altri campi la variabile $image e l'evento mouse $onMouseOver/Out sia 1 che 2 come ho fatto per il campo id, succede che la freccia appare su tutti i campi :(): e oltretutto l'evento mouse non funziona più... che cosa strana ... possibile che non ci sia un rimedio? L'ordinamento però grazie a Dio funziona sempre e comunque. Manca solo questo e poi sarà perfetto 🙂
    ...mi aspetto buone notizie :D. Ciao Samy :ciauz:


  • Consiglio Direttivo

    uhm.....forse sarà la stanchezza ma non riesco a capire perché ti appare su tutti i campi.....vediamo se c'è qualcun'altro che puo' aiutarti 😉


  • User

    :(... spero ci sia... :ciauz: ciao samy...