Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    82

    Elenco generato in PHP ma filtrato via Javascript !?

    Ho questa situazione da sbrogliare: caricando con una pagina php dei dati da un database, ottengo una sfilza di righe con solo due informazioni: un titolo ed un numero identificativo di una categoria.

    Prima di questo ottengo però anche l'elenco abbinato id<->categorie e lo scrivo sulla mia pagina, quindi sotto ci stampo l'elenco.

    Preciso che ad ogni reload ed ad ogni utente, l'elenco delle categorie varia immancabilmente, sia come id che come numero di categorie e loro testo descrittivo.

    Ho però la necessità di permettere all'utente di filtrare i risultati secondo i criteri "tutti, solo non categorizzato, cat 1, cat 2, cat 3, etc.." 'al volo', dinamicamente', perchè all'utente viene fornita una panoramica aggiornata dei dati solamente ogni 120 secondi, e sono anche molti, quindi non è il caso di richiamarli tutti, mentre, al contrario, ho sempre bisogno di richiamarli tutti AL PRIMO load della pagina, motivo per cui php li sputa tutti

    Stavo pensando ad un banale 'hide' in javascript, ma non so come giostrarmi la cosa... come si fa per creare codice javascript 'al volo' in php ?! forse mi basterebbe creare dei paragrafi uno per riga e dargli un nome classe tipo "categoriaxx" (dove xx è il numero della categoria) di modo che poi con javascript possa nascondere tutto tranne la classe impostata....

    Ma come faccio a generare un javascript che nasconda tutto tranne 'quella' classe, se non so quante sono? potrei fare un ciclo da 0 a 100, non saranno mai cento, ma poi l'interprete javascript darà errori e da me queste cose NON sono accette..


    Come vi giochereste questa partita?

  2. #2
    Utente di HTML.it L'avatar di strae
    Registrato dal
    Apr 2008
    Messaggi
    407

    Re: Elenco generato in PHP ma filtrato via Javascript !?

    Originariamente inviato da realtebo
    Ho questa situazione da sbrogliare: caricando con una pagina php dei dati da un database, ottengo una sfilza di righe con solo due informazioni: un titolo ed un numero identificativo di una categoria.

    Prima di questo ottengo però anche l'elenco abbinato id<->categorie e lo scrivo sulla mia pagina, quindi sotto ci stampo l'elenco.

    Preciso che ad ogni reload ed ad ogni utente, l'elenco delle categorie varia immancabilmente, sia come id che come numero di categorie e loro testo descrittivo.

    Ho però la necessità di permettere all'utente di filtrare i risultati secondo i criteri "tutti, solo non categorizzato, cat 1, cat 2, cat 3, etc.."

    Stavo pensando ad un banale 'hide' in javascript, ma non so come giostrarmi la cosa... come si fa per creare codice javascript 'al volo' in php ?! Come vi giochereste questa partita?
    Metterei un form con un input field (text, select a seconda della possibilità) e ogni volta che l'utente vuole filtrare i risultati ricarico la pagina, modificando la query che pesca i risultati dal database.

    Tu hai accesso (puoi modificare) la pagina e di conseguenza la query, vero?

    Altrimenti.. ricordo di aver visto qualcosa di simile in jquery o qualche altro framework javascript che permetteva di ordinare i risultati in una tabella, ti cerco il link se vuoi

    Inoltre, generando un codice molto pulito e ben strutturato, potresti giocare con JSON e riordinare dinamicamente i risultati via javascript. Ma ripeto, la cosa più semplice a parer mi è agire sulla query
    You HAVE to assume your visitor is a maniac serial killer, out to destroy your application. And you have to prevent it.
    I can accept failure, everyone fails at something - But I can't accept not trying.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    82
    Grazie per le idee intanto

    Io non posso modificare la query ricaricando la pagina. Devo caricare tutto al primo colpo, quindi permettere via javascript di filtrarne il contenuto. Praticamente PENSO dovrei far si che php generi un array javascript e il relativo codice per filtrarlo, ma davvero non so dove partire

    chiaramente il webserver è mio e ci posso fare quasi quel che voglio...

  4. #4
    Utente di HTML.it L'avatar di strae
    Registrato dal
    Apr 2008
    Messaggi
    407
    Originariamente inviato da realtebo
    Grazie per le idee intanto

    Io non posso modificare la query ricaricando la pagina. Devo caricare tutto al primo colpo, quindi permettere via javascript di filtrarne il contenuto. Praticamente PENSO dovrei far si che php generi un array javascript e il relativo codice per filtrarlo, ma davvero non so dove partire

    chiaramente il webserver è mio e ci posso fare quasi quel che voglio...
    Se proprio non vuoi mettere mano alla query (che mica si deve riordinare la pagina, puoi anche fare una richiesta ajax...) ecco il link che ti avevo promesso:
    http://joomlicious.com/mootable/
    Non sò se fà al caso tuo, prova a darci un'occhiata..
    Per l'array che php dovrebbe stapare, di sicuro lo stamperei in Json, magari dentro un campo nascosto (input hidden) così da poterne recuperare il valore velocemente e poterlo anche modificare al volo.
    Altrimenti da php puoi anche far stampare direttamente la funzione javascript
    You HAVE to assume your visitor is a maniac serial killer, out to destroy your application. And you have to prevent it.
    I can accept failure, everyone fails at something - But I can't accept not trying.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    82
    Grazie di nuovo

    Io chiedo consiglio proprio sul 'come si fa' sta cosa... Conosco php come le mie tasche ma javscript grazie a Dio non l'ho mai dovuto usare, sin ora. Conosco sintassi e struttura, un po' la logica, ma nient'altro... non so proprio come affrontare la cosa

    Ora mi guardo l'esempio

  6. #6
    Utente di HTML.it L'avatar di strae
    Registrato dal
    Apr 2008
    Messaggi
    407
    Originariamente inviato da realtebo
    Grazie di nuovo

    Io chiedo consiglio proprio sul 'come si fa' sta cosa... Conosco php come le mie tasche ma javscript grazie a Dio non l'ho mai dovuto usare, sin ora. Conosco sintassi e struttura, un po' la logica, ma nient'altro... non so proprio come affrontare la cosa

    Ora mi guardo l'esempio
    cerca su google anche per jQuery, scriptaculous e mootools, sono framework js che sono molto simili da usare.

    L'esempio che ti ho postato infatti è un' `estensione` di mootools
    You HAVE to assume your visitor is a maniac serial killer, out to destroy your application. And you have to prevent it.
    I can accept failure, everyone fails at something - But I can't accept not trying.

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    82
    Perdomani ma siamo davvero fuori strada.

    Io devo trovare il modo in php di
    * generare il codice javascript che contenga l'array,
    * generare il j/s che scriva sul documento l'array in modo da includere anche i vari onlick
    * generare il j/s che risponda a quelli onclick nascondendo tutto tranne le righe della cat. cliccata

    non posso permettermi il lusso di framework, sennò ero bello che a posto. Tenete conto che il tutto gira su un linux embedded con 256k di ram

  8. #8
    Utente di HTML.it L'avatar di strae
    Registrato dal
    Apr 2008
    Messaggi
    407
    Originariamente inviato da realtebo
    Perdomani ma siamo davvero fuori strada.

    Io devo trovare il modo in php di
    * generare il codice javascript che contenga l'array,
    * generare il j/s che scriva sul documento l'array in modo da includere anche i vari onlick
    * generare il j/s che risponda a quelli onclick nascondendo tutto tranne le righe della cat. cliccata

    non posso permettermi il lusso di framework, sennò ero bello che a posto. Tenete conto che il tutto gira su un linux embedded con 256k di ram
    Ma hai dato un'occhiata a jquery & company? Parliamo di 'framework' che stanno in un file da pochi kb, sono più delle librerie che dei veri e propri framework..
    E la potenza della macchina conta veramente poco col js, quello và in carico al client non al server..

    Cmq sia, se proprio non vuoi modificare la query (magari con chiamate ajax per non ricaricare la pagina), e se proprio non vuoi usare nessuna libreria/fraework di supporto, bhè allora il PHP c'entra ben poco, perchè il suo lavoro si ferma a prelevare i dati e a 'stamparli' a video, tutto il resto è javascript.

    Per stampare del codice javascript da php, credimi, non ci vuole niente di diverso da stampare semplice testo:

    Codice PHP:
    <?php
    echo '<script type="text/javascript">\r\n';
    //non ricordo esattamente quale era la combinazione per andare a capo, googla un pò
    echo 'function pincopalla(){'\r\n;
    echo 
    '  alert(\'Javascipt!\');\r\n';
    echo 
    '}\r\n';
    echo 
    '</script>';
    ?>
    Prova a postare nella sezione Javascript del forum
    You HAVE to assume your visitor is a maniac serial killer, out to destroy your application. And you have to prevent it.
    I can accept failure, everyone fails at something - But I can't accept not trying.

  9. #9
    Originariamente inviato da realtebo
    Perdomani ma siamo davvero fuori strada.

    Io devo trovare il modo in php di
    * generare il codice javascript che contenga l'array,
    * generare il j/s che scriva sul documento l'array in modo da includere anche i vari onlick
    * generare il j/s che risponda a quelli onclick nascondendo tutto tranne le righe della cat. cliccata

    non posso permettermi il lusso di framework, sennò ero bello che a posto. Tenete conto che il tutto gira su un linux embedded con 256k di ram
    Non ho approfondito il tuo discorso ma generare JS da php è una cosa molto semplice se conosci php:
    fai echo degli script js che vuoi generare, unico problema è stare attenti alla codifica dei caratteri, ma forse non ho capito esattamente cosa vuoi fare perchè mi pare troppo banale:
    Codice PHP:
    echo "<script>alert('Questo alert viene da php!');</script>"
    Se poi lo script JS che ti serve è dipendente dalle azioni dell'utente senza eseguire il reload della pagina credo tu debba ricorrere ad AJAX...
    Il mio futuro ?? Io lo conosco, è il PARTY !! (Party Man)
    ...e ricordati che prima o poi il po-chi gira (Il Maestro)

  10. #10
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    quando sputi fuori la lista delle castegorie immagino che tu dal db sappia già che tipodi categoria è:

    cat normale
    non categorizzata
    tipo 1
    tipo 2
    tipo 3

    metti ogni categoria dentro un tag li dove imposti l'attributo rel = tipologia di categoria

    codice:
    <ul id="categories">
    <li rel="uncategorized">nome categoria
    <li rel="tipo1">nome categoria
    <li rel="tipo2">nome categoria[/list]
    utilizzando questo principio potresti già avere a disposizione una base per fare i filtri.

    il js non dovrà così essere creato al volo ma sarà sempre e solo un' unica funzione il cui
    perno di funzionamento sarà

    codice:
    <script>
       function filterCatsBy(relFilter)
          { 
          var catsUL=document.getElementById('categories');
          for (var n=0;n < catsUL.childNodes.length; n++)
            {
            var catLI=catsUL.childNodes[n];
    
            if(catLI.nodeType == 1)
              {
              catLI.style['display']=(catLI.getAttribute('rel') == relFilter)?'':'none';
              }
            }
          }
    </script>
    mentre la select che gestirà il richiamo al filtro sarà

    codice:
    <select  size="1" onChange="filterCatsBy(this.options[this.selectedIndex].value)">
      <option value="uncategorized">uncategorized</option>
      <option value="tipo1">tipo1</option>
      <option value="tipo2">tipo2</option>
    </select>
    questo è un esempio completo

    codice:
    <html>
      <head>
      <meta http-equiv="content-type" content="text/html; charset=windows-1250">
      <meta name="generator" content="PSPad editor, www.pspad.com">
      <title></title>
        <script>
        function filterCatsBy(relFilter)
          { 
          var catsUL=document.getElementById('categories');
          for (var n=0;n < catsUL.childNodes.length; n++)
            {
            var catLI=catsUL.childNodes[n];
    
            if(catLI.nodeType == 1)
              {
              catLI.style['display']=(catLI.getAttribute('rel') == relFilter)?'':'none';
              }
            }
          }
        </script>  
    
      </head>
      <body>
        <select  size="1" onChange="filterCatsBy(this.options[this.selectedIndex].value)">
          <option value="uncategorized">uncategorized</option>
          <option value="tipo1">tipo1</option>
          <option value="tipo2">tipo2</option>
        </select>
    
    
        
    
    
    
    
    
    
        <ul id="categories">
          <li rel="uncategorized">nome categoria 1
          <li rel="tipo1">nome categoria 2
          <li rel="tipo2">nome categoria 3[/list]
    
      </body>
    </html>

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

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.