• User

    [Sql]Relazioni tra Tabelle

    Salve a tutti, dopo tanto tempo di inattività in questo settore ho deciso di dare una ripassata alle mie conoscenze in SQL/PHP e con mio rammarico, mi sono accorto che ricordo molto meno di quanto pensassi ❌

    Quindi qual buon metodo per rinfrescarsi la memoria se non quello di mettersi subito al lavoro?
    Seguendo un esigenza quotidiana ho deciso di realizzare una piccola applicazioni in PHP per la gestioni delle entrate e delle uscite monetarie mensili.

    Ma veniamo al dunque, l'applicazione finita sarà strutturata nella seguente maniera:

    • 1 Pagina che mi consentirà di scegliere il tipo di operazione da fare (Inserimento_Accrediti,Inserimento_Spese,Riepilogo_Conto)
    • 1 Pagina per l'inserimento degli accrediti (che possono essere 1 o più al mese)
    • 1 Pagina per l'inserimento delle spese (acquisti o cose da pagare)
    • 1 Pagina che mi mostrerà il saldo attuale e la lista degli accrediti e delle spese di ogni mese (Ma questa la vedrò con più calma dopo).

    Ed ecco il mio primo problema:

    Le tabelle

    Ho pensato di sviluppare tutto su 2 tabelle:

    La prima chiamata accrediti con le seguenti voci

    
    id_accredito
    tipo_accredito
    data_accredito
    accredito
    mese(bho)
    
    

    Id_uscita
    data_spesa
    oggetto_spesa
    importo_spesa
    mese(bho)

    
    Come metto in relazione le 2 tabelle? Ed inoltre è il caso di creare una terza tabella ?
    
    Grazie anticipatamente per l'aiuto e mi scuso se ho sbagliato sezione  :)

  • Consiglio Direttivo

    Ciao wizard_86. 🙂

    Beh, se non ho capito male non esiste una reale relazione tra le due tabelle, ovvero non c'è un campo della prima che sia richiamato nella seconda.

    Puoi usare il comando UNION per ottenere tutte le righe di entrambe le tabelle:

    SELECT * FROM tabella1 WHERE <condizione> UNION SELECT * FROM tabella2 WHERE <condizione>
    ```Una volta che ottieni questa risorse puoi sbizzarrirti come vuoi per ottenere saldo, progressivo, etc etc. ;)
    
    Facci sapere se risolvi. ;)
    
    EDIT: dimenticavo, i campi data li chiamerei semplicemente data in entrambe le tabelle ;)

  • User

    Esatto non esiste una relazione reale tra le 2 tabelle ma solo perché non riesco ad individuare una possibile relazione.

    Comunque accetto qualsiasi suggerimenti o soluzione alternativa.


  • Consiglio Direttivo

    La soluzione immagino sia quella che ti ho postato prima, utilizza UNION. 😉


  • User

    Ah ok, allora procederò in questo modo!
    Se il topic resta aperto magari più avanti posto qualche bozza di lavoro da commentare e migliorare insieme!

    p.s. scusa per l'abbreviazione in stile sms 😛


  • Consiglio Direttivo

    Il thread resterà aperto, se trovi la soluzione postala pure.....gioverà di certo anche ad altri utenti. 😉


  • User Attivo

    Se non riesci a trovare una relazione è perchè probabilmente non c'è... 😉

    Comunque io farei una tabella sola (si tratta di movimenti di denaro, ecco la relazione) e aggiungerei un campo 'tipo' con valore 'in' o 'out' - a quel punto puoi fare quello che vuoi con le varie somme, parziali etc.

    HTH, ciao! 🙂


  • User

    Salve a tutti, rieccomi!

    In questi giorni sono stato molto impegnato e non ho dedicato molto tempo al mio progetto.

    Ad oggi non ho ancora creato il database ma in compenso mi sono dedicato alla costruzione dei form di entrata e uscita.

    Ecco qui il link del lavoro svolto fino ad ora:

    [..]


  • User

    Perchè mi è stato censurato il link?
    Non era attivo e puntava su un dominio che utilizzo esclusivamente per le prove 😞
    Dove ho sbagliato?


  • Consiglio Direttivo

    Ciao wizard_86. 🙂

    Il link è stato tolto perché come previsto dal regolamento non sono permessi link, anche inattivi, a propri siti, che tu lo usi per prove o altro non fa differenza, la regola va rispettata da tutti. 😉

    In alcuni casi lo si permette perché risulta essere l'unico modo per comprendere al meglio la problematica esposta dall'utente, la struttura nasce per aiutare chi ha un problema e studiarlo tutti insieme ;), ma solitamente si chiede approvazione al Mod di sezione o altri membri dello staff prima di proporre l'url, comunque inattiva.

    In questo caso il link non era decisamente un elemento utile a capire la problematica, chiara nella sua esposizione e che credo si risolva con la soluzione che ti ho suggerito prima.

    Immagino che comprenderai. 🙂

    :ciauz:


  • User

    Ok, ma quindi come posso far vedere il mio lavoro ?


  • Consiglio Direttivo

    Quando avrai completato potrai postare il codice, se vorrai condividerlo con gli altri, nella sezione apposita Scripting e Risorse utili. 🙂

    Magari puoi fare qualche screen da hostare per esempio su imageshack e mettere il link, inattivo, all'immagine. 😉


  • User

    Ho deciso di fare alcune modifiche al progetto (aggiungere altri campi per aumentare il dettaglio delle informazioni) ma adesso mi sono perso dietro un errore che non riesco a vedere/trovare

    [php]
    <?php
    // recupero il valore da verificare dalla get
    $tipoperazione = $_GET["operazione"];

    // richiamo l'array contenente i valori delle select 
    require ("option.php"); 
    require ("opt.php"); 
    
    // controllo l'esito 
    if (!$tipoperazione) { 
        echo ("<br /><fieldset>"); 
        echo ("<legend>Inserimento Accredito</legend>\n"); 
        echo ("<h3>Errore di sistema</h3> ,".mysql_error()); 
        echo ("Riprova...<br />\n"); 
        echo ("</fieldset>"); 
    } 
    else { 
    

    ?>
    <script src="css/ajax.js" type="text/javascript"></script>
    <fieldset>
    <legend>Inserimento Accrediti</legend>
    <form name="accredito" action="inserimento.php" method="post">
    <table align="center">
    <tr>
    <td colspan="2" align="left">
    Accredito: <input type="text" id="acc" name="acc" size="20" onBlur="VerificaAccredito()" /> €
    </td><td><div id="vfc"> </div></td>
    </tr>
    <tr>
    <td colspan="2"> </td><td> </td>
    </tr>
    <tr>
    <td align="left">Data di Accredito:<br /></td><td colspan="2"> </td>
    </tr>
    <tr>
    <td colspan="2"> </td><td> </td>
    </tr>
    <tr>
    <td colspan="2" align="left">
    Giorno <select name="<?=$name?>giorno">
    <?
    for ($a=1;$a<=31;$a++){
    if($a<10){$zero="0";}else{$zero="";}
    ?>
    <option value="<? echo $zero.$a ?>"
    <?if($giorno==$zero.$a){echo "selected";}?>>
    <? echo $zero.$a ?>
    </option>
    <?
    }
    ?>
    </select>
    Mese <select name="<?=$name?>mese">
    <?
    for ($indice=0;$indice<count($option);$indice++) {
    echo ("<option value="$indice">$option[$indice]</option>\n");
    }
    echo ("</select>\n");
    ?>
    Anno <select name="<?=$name?>anno">
    <?
    for ($a=2008;$a<=2020;$a++){
    ?>
    <option value="<? echo $a ?>"
    <?if($anno==$a){echo "selected";}?>>
    <? echo $a ?>
    </option>
    <?
    }
    ?>
    </select><br />
    </td><td> </td>
    </tr>
    <tr>
    <td colspan="2" align="left">
    Tipo Accredito: <select name="<?=$name?>tipoacc">
    <?
    for ($i=0;$indice<count($opt);$i++) {
    echo ("<option value="$i">$opt*</option>\n");
    }
    echo ("</select>\n");
    ?>
    </td><td> </td>
    </tr>
    <tr>
    <td colspan="2" align="right"> </td>
    <td>
    <div class="buttons">
    <button type="submit" class="positive">
    <img src="/images/tick.png" alt=""/> Salva</button>
    </div>
    </td>
    </tr>
    </table>
    </form>
    </fieldset>
    <?php
    }
    ?>
    [/php]In pratica non mi carica l'ultima select, guardando il codice su dw mi dice che ci sono dei tag sovrapposti ma non riesco a individuarli 😞


  • User

    suggerimenti?


  • Consiglio Direttivo

    Ciao wizard_86. 🙂

    Prova a postare il risultato html della pagina, magari diventa tutto più chiaro. 😉


  • User

    Questo è il link al lavoro, per visualizzare il tipo di problema basta cliccare su accrediti
    .....


  • Consiglio Direttivo

    Ciao Wizard_86.
    Forse mi son spiegato male, ci riprovo:

    • apri da browser la pagina del tuo sito dove è presente quello script;
    • visualizza il sorgente pagina (ovvero il risultato dello script)
    • copia ed incolla all'interno dei tag [html ] [/html] il pezzo di codice interessato all'errore così possiamo provare ad esserti d'aiuto. 🙂