Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Problema function per sito

    Buona sera a tutti, sono nuovo del mondo php decisamente un neofita
    tuttavia devo modificare alcune cose su un sito che tratta di tornei di calcetto.

    Ora per non divagare troppo ed arrivare al succo della questione è che, ho un problema con una funzione.
    Sul sito ci sono due pulsanti uno per i marcatori ed uno per gli ammoniti e squalificati, partiamo da quello dei marcatori, il programmatore che c'era prima lo ha impostato in modo che una volta cliccato, restituisca una classifica di tutti i giocatori che hanno segnato in tutti i tornei. Io vorrei invece che restituisca, a seconda del torneo selezionato la classifica dei marcatori relativi a quel torneo e non a tutti >.<

    Questa è la funzione richiamata dal file marcatori.php collegato al pulsante

    function marcatori(){
    include('connessione.inc');

    $output .= '<div id="bloccoEsteso">';
    $output .= '<p class="titoloEsteso">Classifica Marcatori</p>';
    $output .= '<p class="testoSquadraplus">Cognome Nome</p>';
    $output .= '<p class="testoSquadra">Squadra</p>';
    $output .= '<p class="testoEstraiRisultato">Marcature</p>';

    $query = 'SELECT * FROM atleti WHERE reti > 0 order by reti desc, cognome, nome';
    $result = $db->Execute($query);
    while ($row = $result->fetchRow())
    {
    $nomeSquadra = $db->getOne('SELECT nome FROM squadre WHERE idSquadra = '.$row['ID_Squadra']);
    $output .= '<p class="testoSquadraplus_sel">'.$row['cognome'].' '.$row['nome'].'</p>';
    $output .= '<p class="testoSquadra_sel">'.$nomeSquadra.'</p>';
    $output .= '<p class="testoEstraiRisultato_sel">'.$row['reti'].'</p>';
    }
    $output .= '</div>';
    echo $output;

    }

    questo è il codice che dovrebbe far apparire i goleador a seconda del torneo selezionato (ma no è così >.<)

    $output .= '<p class="titoloLink">MARCATORI</p>';

    che si trova nello stesso file ovvero modules.inc.php

    Secondo voi che cosa devo cambiare, in modo che prenda solo i giocatori che hanno segnato nei tornei che seleziono?

    il sito se volete vederlo è questo www.torinopromosport.it

    Grazie a tutti.

  2. #2
    So che probabilmente la domanda non è formulata nella maniera più completa, ma anche se aveste solo suggerimenti, sarebbero graditi

  3. #3
    Ragazzi proprio nessuno ha qualche suggerimento?

    E' da un po' che tento di risolvere il problema ma sono a corto di idee al momento

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Devi passare alla funzione il codice del campionato selezionato (probabilmente è $_GET['campionato']) e modificare la query.
    In particolare nella query devi aggiungere un pezzo alla clausola WHERE.

    $query = 'SELECT * FROM atleti WHERE reti > 0 AND campionato='codice_campionato' order by reti desc, cognome, nome';

    Al posto di "campionato" devi mettere il nome della colonna che contiene il codice del campionato e al posto di "codice_campionato" il parametro che passi alla funzione.

  5. #5
    Ti ringrazio molto,purtroppo sono proprio "fuso" in che punto della funzione passo il codice del campionato? ovvero $_GET['campionato'] senza contare, forse mi sono dimenticato di dirlo, che ad ogni campionato sono collegati due gironi >.< quindi dovrei passare sia il campionato che il girone

    alla query poi vado ad aggiungere la clausula AND T_5 (ad esempio che sarebbe il nome della colonna inerente il campionato di calcio a 5) e poi dopo l'uguale quale parametro?

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Alla funzione marcatori devi dare questa segnatura

    function marcatori($campionato,$girone) {

    Dove viene chiamata la funzione (cosa che nel codice che hai postato non vedo) devi scrivere

    marcatori($_GET['campionato'],$_GET['girone']);

    la query divernta

    $query = "SELECT * FROM atleti WHERE reti > 0 AND T_5='$campionato' AND colonna_girone='$girone' order by reti desc, cognome, nome";

    Nota che nella query ho messo i doppi apici all'inizio e alla fine al posto dei singoli.

  7. #7
    Grazie ancora per la disponibilità ma ancora c'è qualcosa che non va mi restituisce questo

    Fatal error: Call to a member function fetchRow() on a non-object in /web/htdocs/www.torinopromosport.it/home/include/modules.inc.php on line 805

    Questo è il codice modificato come mi hai suggerito:

    function marcatori($campionato,$girone){
    include('connessione.inc');

    $output .= '<div id="bloccoEsteso">';
    $output .= '<p class="titoloEsteso">Classifica Marcatori</p>';
    $output .= '<p class="testoSquadraplus">Cognome Nome</p>';
    $output .= '<p class="testoSquadra">Squadra</p>';
    $output .= '<p class="testoEstraiRisultato">Marcature</p>';

    $$query = "SELECT * FROM atleti WHERE reti > 0 AND T_5 ='$campionato' AND 10 ='$girone' order by reti desc, cognome, nome";
    $result = $db->Execute($query);
    while ($row = $result->fetchRow())
    {
    $nomeSquadra = $db->getOne('SELECT nome FROM squadre WHERE idSquadra = '.$row['ID_Squadra']);
    $output .= '<p class="testoSquadraplus_sel">'.$row['cognome'].' '.$row['nome'].'</p>';
    $output .= '<p class="testoSquadra_sel">'.$nomeSquadra.'</p>';
    $output .= '<p class="testoEstraiRisultato_sel">'.$row['reti'].'</p>';
    }
    $output .= '</div>';
    echo $output;

    }

    Probabilmente c'è qualche problema di connessione con i parametri del DB e sono io che non li metto come si deve.


    Di seguito riporto le tabelle interessate ed i loro campi

    Campionati : [Id] [Descrizione]

    Gironi: [IdGirone] [campionatoRif] [nome]

    Atleti: [Id Atleta] [Id_Squadra] [cognome] [nome] [alias] [ruolo] [numero] [ammonizioni] [espulsioni] [reti]

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Dalla struttura delle tabelle che hai postato non è possibile sapere in quale campionato e girone un atleta ha segnato i gol, puoi solo sapere le reti totali da sempre.

  9. #9
    Grazie!
    Quindi dovrei impostare delle nuove tabelle? O meglio come potrei realizzare una cosa del genere? Dovrei aggiungere tabelle o cambiare quelle esistenti

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Senza toccare le tabelle già esistenti dovresti aggiungere una nuova tabella

    Reti: id - idCampionato - idGirone - idAtleta

    Ovviamente dovresti aggiungere anche il codice che popola questa tabella, overo deve essere creata una entry ad ogni rete segnata.

    Per sapere quante reti ha fatto un atleta in un dato campionato e in un dato girone la query sarebbe una cosa così

    SELECT count(idAtleta) as reti WHERE idCampionato=$idCampionato AND idGirone=$idGirone AND idAtleta=$idAtleta

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.