Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di cnc
    Registrato dal
    Dec 1999
    Messaggi
    158

    strano "non" funzionamento di $_get

    Questo è il codice:
    Codice PHP:
    $order=""
    if (!isset(
    $_GET['sort'])) {
    $order "ASC"// Default page
    } else {
    $order "DESC";
    }

    if (isset(
    $_REQUEST['idCat']) && $_REQUEST['idCat']!="all") {
      
    $colname_get_c $_REQUEST['idCat'];
      
    $query_viewC sprintf("SELECT * FROM c WHERE cat = %s ORDER BY codice "$order .$limited"GetSQLValueString($colname_get_c"text")); 
    il problema che riscontro è che, anche se nella url è presente ?sort=DESC o ASC la query non subisce alcun cambiamento. Invece, se sostituisco manualmente $order all'interno della query, con ASC o DESC, gli elementi vengono ordinati correttamente.

    La curiosità è che se scrivo
    Codice PHP:
    if ($order=="asc") {
    $orderlink = ("<a href=\"" $_SERVER["PHP_SELF"] . "?sort=desc\" title=\"Sort the records in descending order\">Sort descending</a>") ;
    } else {
    $orderlink = ("<a href=\"" $_SERVER["PHP_SELF"] . "?sort=asc\" title=\"Sort the records in ascending order\">Sort ascending</a>") ;
    }
    echo 
    $orderlink 
    l'echo orderlink cambia correttamente ma NON la query suscritta.

    Quale può essere l'errore?

  2. #2
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    codice:
    $order=""; 
    if (!isset($_GET['sort'])) {
    $order = "ASC"; // Default page
    } else {
    $order = $_GET['sort'];
    }
    Da quanto ho capito devi inserire questa porzione di codice...
    Se $_GET['sort'] non è settato , lo setto io di default a ASC, nel caso la variabile sia presente nell'url prendo il valore che mi viene passato

    ciaociao
    Che mestiere difficile.....essere da soli ancora di più

  3. #3
    Utente di HTML.it L'avatar di cnc
    Registrato dal
    Dec 1999
    Messaggi
    158
    purtroppo non va. anzi, settando come hai scritto tu nemmeno più l'orderlink funziona.

    E' come se la solo query non riuscisse ad intercettare il sort...

    grazie

  4. #4
    Codice PHP:
    $order=""
    if (!isset(
    $_GET['sort'])) {
    $order "ASC"// Default page
    } else {
    $order "DESC";

    Sarò rinco.... io... ma se non sbaglio te gli dici:

    Se $_GET['sort'] esiste allora $order diventa ASC
    altrimenti diventa DESC

    Tuttavia... da come è settato il sistema l'ideale sarebbe:

    Codice PHP:
    $order=""
    if (!isset(
    $_GET['sort'])) {
    $order "ASC"// Default page
    } else {
    $order $_GET['sort'];

    Ovviamente l'ideale sarebbe fare altri controlli... tipo che la variabile non sia vuota e che il contenuto sia o ASC o DESC ignorando tutto il resto.

  5. #5
    Utente di HTML.it L'avatar di cnc
    Registrato dal
    Dec 1999
    Messaggi
    158
    condivido il tuo ragionamento

    il mio dubbio, infatti, è che sort sia vuoto. Però se lo fosse non pensi che anche l'orderlink non dovrebbe funzionare?

    Se faccio la modifica che mi indicate entrambi smette di funzionare anche l'orderlink.

    Nella url (che sto provando in locale) io ho solo localhost/sito/?sort=ASC . Chiaramente ho provato anche con sito/index.php?sort=ASC ma niente

  6. #6
    No, se Sort esiste (a prescindere, può pure esser vuoto) il sort diventa DESC

    dovresti dire
    se sort non esiste o è vuoto sort = asc
    altrimenti sort = quello che ho nella variabile

    Codice PHP:
    $order=""
    if (!isset(
    $_GET['sort']) or trim($_GET['sort']) == "") {
    $order "ASC"// Default page
    } else {
    $order $_GET['sort'];

    Ribadisco che se poi il contenuto di sort (dentro get) non è ne ASC nè DESC allora sei nei guai, dovresti mettere un'altro controllo prima di $order = $_GET in cui controlli che i valori siano o ASC o DESC tipo:

    Codice PHP:
    $order=""
    if (!isset(
    $_GET['sort']) or trim($_GET['sort']) == "") {
    $order "ASC"// Default page

    else 
    {
    if (
    trim($_GET['sort']) == "ASC" or trim($_GET['sort']) == "DESC")
    {
    $order $_GET['sort'];
    }
    else
    {
    $order "ASC";
    }

    Dato questo codice però inizializzare $order a vuota prima del primo If diventa inutile.

    Edit: Per Orderlink metti il controllo su ASC, è case sensitive .

  7. #7
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    codice:
    $order = "asc"; // Default page 
    if (isset($_GET['sort']) && ($_GET['sort']=="asc" || $_GET['sort']=="desc"))  
    $order = $_GET['sort'];
    
    if ($order=="asc") {
    $orderlink = ("<a href=\"" . $_SERVER["PHP_SELF"] . "?sort=desc\" title=\"Sort the records in descending order\">Sort descending</a>") ;
    } else {
    $orderlink = ("<a href=\"" . $_SERVER["PHP_SELF"] . "?sort=asc\" title=\"Sort the records in ascending order\">Sort ascending</a>") ;
    }
    Se scrivi in questo modo non riesco a capire quale sia il problema
    Che mestiere difficile.....essere da soli ancora di più

  8. #8
    Utente di HTML.it L'avatar di cnc
    Registrato dal
    Dec 1999
    Messaggi
    158
    @fractal: usando il tuo codice la query continua a non prendere il sort (ma l'orderlink funziona);

    @goikiu: usando il tuo codice non funziona né la query né l'orderlink.

    faccio presente, perchè magari risiede qui il problema, che l'orderlink è in un file index.php e la query in un altro (che viene richiamato nell'index).

    aggiungo che se, per esempio nel codice di fractal, cambio da ASC in DESC il valore di default, questo viene "ereditato" dalla query.
    E' tutto un po' strano: la query riceve solo l'order di default (che viene attivato se SORT non è dichiarato; ma SORT appare dichiarato se l'orderlink lo prende )

  9. #9
    Utente di HTML.it L'avatar di cnc
    Registrato dal
    Dec 1999
    Messaggi
    158
    dunque forse ho rintracciato quale può essere il problema.
    Questo codice è presente in un minipannello che sto modificando e che è fatto in ajax (da altri).
    Credo quindi sia necessario trovare il modo di passare la variabile del sort tramite ajax...
    ma di ajax ne so meno che di php

    quindi, se il moderatore ritiene che questa discussione vada spostata in ajax proceda pure, accompagnato dalle mie scuse.

    Al di là dello spostamento, rinnovo l'aiuto a capire come uscire da questo problema

    grazie

  10. #10
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    ajax non è un linguaggio ma un insieme di tecnologie
    Che mestiere difficile.....essere da soli ancora di più

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 © 2024 vBulletin Solutions, Inc. All rights reserved.