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

    Problema con piccolo script di ricerca

    Ciao a tutti.
    Ho creato un piccolo script composto da due campi di testo con il quale posso recuperare il contenuto (nome giocatore e nome squadra) di un database per modificarlo successivamente. Il problema è che lo script di recupero deve effettuare la ricerca tra diverse tabelle, non una sola, per cui ho deciso di far condurre la ricerca all'interno del database ma quando provo a verificarne la funzionalità mi compare la pagina con i due campi di testo vuoti. Ho provato allora ad impostare la ricerca all'interno di una sola tabella e tutto funziona alla perfezione, ma dovrei in realtà impostare la ricerca all'interno del database ma non ho risultati.

    Questo è il modulo di ricerca:
    Codice PHP:
    <?php
    include ('config.inc.php');
    //connessione al database
    $db mysql_connect($db_host$db_user$db_password); 
      if (
    $db == FALSE
        die (
    "Errore nella connessione. Verificare i parametri nel file config.inc.php"); 
    //selezione del database
      
    mysql_select_db($db_name$db
        or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.inc.php"); 
     
    //recupero valori   
    $giocatore $_POST['giocatore'];
    $squadra $_POST['squadra'];


      
    $records mysql_query ("select * from $mio_db where giocatore='$giocatore' and squadra='$squadra'");
      
    $risultati mysql_fetch_array ($records);
      
    ?>

    <form method="post" action="modificard.php">
    <div align="center">Nome giocatore:

    <input name="giocatore" type="text" id="giocatore" value="<?php echo $risultati['giocatore']; ?>">




    Squadra:

    <input name="squadra" type="text" id="squadra" value="<?php echo $risultati['squadra']; ?>">





    <input type="submit" name="Submit" value="Modifica record">
    </div>
    </form>
    Ringrazio anticipatamente chi si renderà disponibile per aiutarmi.
    Saluti.

  2. #2
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    ma i campi Squadra e Giocatori appartengono alla stessa tabella?

    se appartengono alla stessa tabella puoi fare così:
    Codice PHP:
      $records mysql_query ("select * from $mio_db where giocatore='$giocatore' OR squadra='$squadra'");
      
    $risultati mysql_fetch_array ($records); 

  3. #3
    Le tabelle sono: "acquisti", "cessioni", "conferme", "trattative".

    Tutte le suddette tabelle contengono i campi "giocatore" e "squadra" per cui la ricerca che deve eseguire non è limitata ad una sola tabella, ma è una ricerca globale.

  4. #4
    Utente di HTML.it L'avatar di PaoloC
    Registrato dal
    Jul 2007
    Messaggi
    21
    Che tipo di relazioni intercorrono tra le tabelle?
    Puoi dettagliare meglio la truttura delle tabelle?

    I due campi devo essere in almeno una delle tabelle o per forza in tutte?

  5. #5
    Originariamente inviato da PaoloC
    Che tipo di relazioni intercorrono tra le tabelle?
    Puoi dettagliare meglio la truttura delle tabelle?

    I due campi devo essere in almeno una delle tabelle o per forza in tutte?
    Tra le tabelle non c'è nessuna relazione.
    I nomi delle tabelle sono: "acquisti", "cessioni", "conferme", "trattative". Il tutto riguarda i giocatori acquistati, ceduti, confermati da una squadra di calcio e le trattative in corso. Accanto ad ogni giocatore c'è la squadra di provenienza per gli acquisti e le trattative, di destinazione per le cessioni, la squadra di cui fa parte per le conferme.

    Nella sezione "calciomercato" del mio sito (riguarda il calciomercato di una sola squadra, non di tutte) il tutto e schematizzato così:

    -> Acquisti

    Giocatore1 (Squadra provenienza)
    Giocatore2 (Squadra provenienza)

    -> Cessioni

    Giocatore1 (Squadra di destinazione)
    Giocatore2 (Squadra di destinazione)

    e così anche per conferme e trattative. Io aggiorno la sezione tramite uno script in cui digito il nome del giocatore, il nome della squadra e la tabella in cui inserirlo (acquisti, cessioni, conferme, trattative).

    Siccome non lo gestisco solo io ma ho anche degli amici che mi aiutano, ho assegnato l'utilizzo dello script ad un collaboratore che non conoscendo la password del sito non potrebbe accedere al database per modificare un record in caso di errore, per cui sto creando questo script che gli permetta, in caso di errore di digitazione, di correggere il record e reinserirlo nella tabella del db dallo script.

    Spero di essere stato chiaro.

  6. #6
    Praticamente lo script funziona con le tabelle ma rinuncia a riconoscere il database.

    La riga di comando non è "SELECT campo1, campo2 FROM $db" ?

  7. #7
    Utente di HTML.it L'avatar di PaoloC
    Registrato dal
    Jul 2007
    Messaggi
    21
    >>Praticamente lo script funziona con le tabelle ma rinuncia a riconoscere il database.
    >>La riga di comando non è "SELECT campo1, campo2 FROM $db" ?
    Direi proprio di no ...
    Se vuoi un risultato omogeneo sulle 4 tabelle devi fare una query di questo tipo
    'SELECT acquisti.giocatore, acquisti.squadra FROM acquisti WHERE (((acquisti.giocatore)="<nome giocatore>") AND ((acquisti.squadra)="<nome squadra>"))
    UNION SELECT cessioni.giocatore, cessioni.squadra FROM cessioni WHERE (((cessioni.giocatore)="<nome giocatore>") AND ((cessioni.squadra)="<nome squadra>"))
    UNION SELECT conferme.giocatore, conferme.squadra FROM conferme WHERE (((conferme.giocatore)="<nome giocatore>") AND ((conferme.squadra)="<nome squadra>"))
    UNION SELECT trattative.giocatore, trattative.squadra FROM trattative WHERE (((trattative.giocatore)="<nome giocatore>") AND ((trattative.squadra)="<nome squadra>"));'

    Secondo me però ai sbagliato la struttura del database, prova a vedere se così va meglio
    * anagraficaCalciatori: campi (id, nome, cognome, ....) solo id in chiave con autoincrement
    * anagraficaSquadre: campi (id, nome, ...) solo id in chiave con autoincrement
    * movimenti: campi (refCalciatore, refSquadra, stato) tutti i campi in chiave
    anagraficaCalciatori.id è relazionato uno a molti con movimenti.refCalciatore
    anagraficaSquadre.id è relazionato uno a molti con movimenti.refSquadra
    dove stato può contenere dei valori: "a" -> acquisti; "c" -> cessione; ...

    a questo punto la query diventava:
    'SELECT movimenti.refCalciatore, anagraficaCalciatori.nome, anagraficaCalciatori.cognome, movimenti.refSquadra, anagraficaSquadre.nome, movimenti.stato
    FROM (anagraficaCalciatori INNER JOIN movimenti ON anagraficaCalciatori.id = movimenti.refCalciatore) INNER JOIN anagraficaSquadre ON movimenti.refSquadra = anagraficaSquadre.id;'
    Per aggiungere un nuovo stato ad un calciatore basta aggiungere un record nella tabella movimenti con i due riferimenti e lo stato relativo ... gestendo eventuali casi quali l'acquisto (chiaramente potrà essercene solo uno) ...
    In più se aggiungi una data al movimento (mettendola in chiave) potresti non cancellare più nulla dalla tabella dei movimenti conservando così la storia degli avvenimenti ...

    Saluti

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.