• User

    Tabella Dropdown

    Buonasera a tutti,
    possiedo questo codice che funziona solo su Edge ma non funziona su Chrome e i vari browser.
    Qualcuno potrebbe aiutarmi?

    form.html

    [HTML]<!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <script src="https://code.jquery.com/jquery-3.4.1.js"></script>
    <title></title>
    </head>

    <body>

    Scegli una squadra:
    <select>
    <option value=" ">Effettua una selezione</option>
    <option value="Milan" onclick="marca(this)">Milan</option>
    <option value="Juventus" onclick="marca(this)">Juventus</option>
    <option value="Cagliari" onclick="marca(this)">Cagliari</option>
    <option value="Roma" onclick="marca(this)">Roma</option>
    </select>
    <div id="tabella"></div>

    <script>
    function marca(pippo) {
    var scelta = pippo.value;
    $(document).ready(function() {
    $.ajax({
    type: 'post',
    cache: false,
    url: 'tabelle.php',
    data: 'query='+scelta,
    success:function(html) {
    $('#tabella').html(html);
    },
    error: function(request, status, error) {
    $('#tabella').html('<br />ERRORE : il server non risponde o lo ha
    fatto in modo anomalo '+request.responseText);
    }
    });
    });
    }
    </script>
    </body>
    </html>[/HTML]

    tabelle.php

    [PHP]<?php$scelta = $_POST['query'];

    //echo 'La tua scelta è sulla squadra: '.$scelta;
    switch ($scelta) {
    case Milan:
    echo '<br><br><b>Città: </b>Milano<br><b>Serie: </b>A<br><b>';
    break;
    case Juventus:
    echo '<br><br><b>Città: </b>Torino<br><b>Serie: </b>A<br><b>';
    break;
    case Cagliari:
    echo '<br><br><b>Città: </b>Cagliari<br><b>Serie: </b>A<br><b>';
    break;
    case Roma:
    echo '<br><br><b>Città: </b>Roma<br><b>Serie: </b>A<br><b>';
    break;
    }
    ?>[/PHP]

    Grazie Mille


  • User Attivo

    Ciao,

    nel codice ci sono diversi errori.

    Intanto non puoi mandare a capo "lo ha fatto in modo anomalo", deve stare tutto sulla stessa riga.

    Poi hai JQuery a disposizione ma non lo sfrutti. L'evento onclick che hai messo nelle option della select è superfluo e tra l'altro è sbagliato, poiché per recuperare i valori delle select si usa onchange.

    Quando selezioni un valore viene triggerato l'evento onchange, recuperi il valore con la funzione val() di JQuery e fai la chiamata ajax verso la pagina PHP passandogli il valore con il metodo POST. In questo caso è meglio passare i dati in formato JSON perché è più affidabile nel caso avessi caratteri accentati, apici, doppi apici o nel caso volessi passare dati più complessi tipo array. Dall'altra parte (lato PHP) li recuperi tramite la funzione json_decode().

    Dai un'occhiata al codice HTML https://pastebin.com/PpaxXQ72

    Mentre questo è il codice PHP corretto https://pastebin.com/Mhfhsp82

    Se hai tante altre squadre non ti conviene usare uno switch perché diventa ingestibile. Piuttosto usa un array associativo in cui a ciascuna squadra fai corrispondere la città e il campionato

    Es.

    [PHP]
    $teams = [
    'Juventus' => [
    'Torino',
    'Serie A'
    ],
    'Milan' => [
    'Milano',
    'Serie A'
    ]
    ];
    [/PHP]


  • User

    Ciao, grazie dell'aiuto.. hai trovato subito la soluzione e ti sono grato... sono diciamo poco esperto in questi dettagli, mi piacerebbe molto leggere qualche libro per aiutare le mie conoscenze sul mondo php..
    In realtà io dovrei collegare una squadra a diversi campi di una tabella, inserendo dettagli della squadra tra cui anno, giocatori, nome stadio, numero giocatori ecc ecc.. mi sapresti indirizzare su qualche file in php più gestibile e più semplice da formulare?
    grazie mille


  • User Attivo

    Ciao,

    come libro ti suggerisco quello di Zimuel Sviluppare in PHP 7, la seconda edizione aggiornata a PHP 7.4

    Se ti va dai un'occhiata al sito Guida PHP, dove ho creato una serie di guide per i neofiti partendo dalle basi del linguaggio.

    Ancora mancano degli argomenti (quelli più complessi tipo la OOP, espressioni regolari, etc...) però c'è già materiale sufficiente per iniziare ad essere produttivi nel modo giusto con questo linguaggio.

    Per quanto riguarda la tua richiesta, cosa vuoi esattamente realizzare? Un database con le statistiche di calcio accessibile da Internet?

    Se ti servono i dati aggiornati di campionati, squadre e giocatori, statistiche, etc... potresti usare le API di questo sito https://www.api-football.com/documentation per prelevare i dati che ti servono.

    Anche se non hai mai avuto a che fare con le API, si tratta di un argomento non troppo spinoso da affrontare. In caso cerca nella documentazione le funzioni PHP relative a cURL che ti servono per prelevare dati da un sito remoto (in questo caso API Football).


  • User

    Grazie davvero per il libro, era quello che cercavo per poter iniziare a leggere qualcosa e capire meglio!
    Il mio progetto in realtà nasce da questa tabella creata che ti allego, sostanzialmente ho bisogno di raggruppare tutte le specifiche tecniche di ogni singolo materiale dentro nei campi.
    Ogni materiale avrà circa 15 campi e come avrai capito, la struttura delle specifiche avevo pensato di crearla con il file che gentilmente mi hai sistemato.
    Mi piacerebbe sicuramente creare un database ma risulterebbe troppo lungo penso da spiegare via chat, quindi se avevi ideea di come sintetizzare al meglio questa cosa, io sono tutto orecchie :rollo:
    Ti ringrazia davvero per tutte le piccole informazioni che mi hai dato.

    Davide

    LINK TABELLA [HTML]https://ibb.co/b2bvwwj[/HTML]


  • User

    Se ti chiedessi di modificarmi il codice JS in modo tale da andare a pescare in base alla selezione un file .php diverso?
    E' possibile? grazie...


  • User Attivo

    Ciao,

    spiega cosa vuoi fare ma posta anche il codice.

    Al massimo posso indirizzarti su come procedere 🙂


  • User

    Penso sia un pò complesso.. spero di riuscirmi a spiegare..

    Una volta che hai analizzato il codice, praticamente vorrei suddividere ogni materiale in una cartella materiali con i relativi pdf all'interno e non come ho fatto fino adesso...

    vorrei realizzare questi percorsi:

    materiale/cartella materiale/nomemateriale.php
    materiale/cartellamateriale/pdf/nomepdfmateriale.pdf

    qui trovi l'indirizzo per drive con il pacchetto completo del progetto! *(drive.google.com/file/d/1556fbTjrbj5vigllhMylg-rkBe9VwpQ7/view?usp=sharing)

    *Spero di essermi riuscito a spiegare 🙂


  • User Attivo

    Ciao,

    ho visto il codice e stai gestendo la cosa in maniera un pò confusa.

    È buona prassi tenere i file .php più semplici possibile, nel tuo caso non puoi stampare centinaia di righe di codice all'interno di uno switch. Tra l'altro ciascun case ti ritorna sempre lo stesso codice con solo alcuni valori cambiati, questo causa inutile duplicazione di codice.

    Quello che ti consiglieri di fare è di realizzare un database dove inserirai i materiali, così hai una gestione più pulita. Parti da questa risorsa https://it.phptherightway.com/#databases oppure googla "pdo php".

    Se proprio vuoi seguire la strada senza DB, anche se te lo sconsiglio, quello che puoi fare intanto è di spostare tutto il layout della tabella dell'elemento direttamente nella pagina materiale.html.

    Lato PHP fatti ritornare un array coi valori che riguardano uno specifico materiale (codice materiale, denominazione, tipo materiale, etc...)

    Es.

    [PHP]
    $materiale = [
    'codice' => 1,
    'denominazione' => 'Polibutilene tereftalato',
    'tipo' => 'PBT'
    ];
    [/PHP]

    quindi nello switch fai un echo di questo array con json_encode

    [PHP]
    echo json_encode($materiale);
    [/PHP]

    Lato JQuery dovresti recuperare i valori di questo array in questo modo

    Per accedere ad esempio al codice del materiale dovrai utilizzare response.codice, dove response è il risultato della chiamata AJAX.

    Con questo codice in JQuery

    [HTML]
    $('#codice').html(response.codice);
    [/HTML]

    cambierai il valore del codice del materiale, però devi modificare l'HTML in questo modo (ho aggiunto id="codice").

    [HTML]
    <h5 class="u-align-center-lg u-align-center-md u-align-center-xl u-text u-text-palette-5-light-3 u-text-1" id="codice">Codice materiale</h5>
    [/HTML]

    Lo stesso devi fare con gli altri valori.

    È più difficile a spiegarlo che a realizzarlo, certo devi avere le competenze giuste per poterlo fare.

    Il discorso pdf non l'ho capito molto, hai inserito una select in ogni file pdf ma a cosa ti serve...


  • User

    In realtà sei stato chiarissimo.. Purtroppo non riesco io a farlo, ci sto sbattendo la testa ma mi perdo in qualcosa, nonostante tu me lo abbia spiegato e scritto.. ti va di farmi un esempio con due file anche tuoi? mi basterebbe un esempio da scaricare, cosi da applicarlo sul mio successivamente.. ti ringrazio.....


  • User

    La parte del PDF, se vedi nella tabella c'è una sezione con "tipo di materiale" e li viene allegata una scheda per ogni tipo (casa produttrice) di materiale in pdf