Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    59

    MySQL php e correlazione

    Salve, io sto realizzando un piccolo software per la gestione di una rubrica aziendale di clienti e fornitori,

    ho iniziato il lavoro impostando 2 tabelle su mysql una chiamata azienda che ha i seguenti campi:

    IDAzienda,nomesocietà,indirizzo etc. etc.

    l'altra chiamata contatti con i seguenti campi:

    IDContatto,nome,cognome,numerotelefono,IDazienda

    dunque spiego la situazione,
    la tabella aziende contiene la lista delle aziende e un id per ogni azienda che sia auto incrementante, mentre la tabella contatti dovrebbe contenere i contatti relativi alle aziende esempio il contatto tizio fà parte dell'azienda pippo e teoricamente lo dovrei sapere tramite l'id che inserisco nel contatto sul campo IDazienda, quello che voglio sapere è se come sto lavorando per correlare le due tabelle è corretto oppure c'è un metodo diverso, inoltre un'altra domanda è, quando esempio voglio cancellare un'azienda ovviamente devo avvertire l'utente che verranno cancellati anche gli utenti relativi che corrispondono a quell'azienda, come si fà questa operazione?
    poi un'altra domanda è, come si fà a riportare a 0 l'indice IDAzienda che si autoincrementa, mettiamo che io voglia ripulire tutta la tabella e ovviamente voglio riportare anche l'indice a 0


    ringrazio anticipatamente per qualunque risposta

  2. #2
    Utente di HTML.it L'avatar di mgfx
    Registrato dal
    Feb 2008
    Messaggi
    173
    penso sia corretto, in fondo non c'è un metodo preciso, ogniuno fa come crede e nel modo più semplice.
    per cancellare tutti gli utenti con lo stesso id dell'azienda fai


    mysql_query("DELETE FROM utenti WHERE id_azienda=$id_azienda");
    poi elimini l'azienda

    mysql_query("DELETE FROM aziende WHERE id_azienda=$id_azienda");

    per riportare a 0 fai

    mysql_query("UPDATE aziende SET indice_idazienda=0 WHERE id_azienda='$id_azienda'");

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    59
    Grazie mgfx, sei stato molto chiaro, ho usato i tuoi consigli al meglio, ora però mi trovo a realizzare la pagina di visualizzazione della lista dei contatti e quella delle aziende, per quella delle aziende è relativamente facile perchè faccio una semplice (SELECT * from aziende) e mi pesco tutta la lista,
    mentre per la lista dei contatti, la vorrei in ordine alfabetico per cognome o per nome e poi vorrei indicare in una colonna l'azienda di cui fà parte e non l'id ovviamente, ma come faccio a farlo con una sola query?

    premetto che la tabella contatti contiene:

    IDContatto, Nome,cognome,indirizzo,telefono,IDAzienda(contiene l'indice relativo alla tabella aziende), Email,Note

    mentre la tabella aziende contiene:

    IDAzienda,nomesocietà,indirizzo,telefono,fax,email ,sitointernet.

    Avrei bisogno di un piccolo prontuarietto per realizzare query nella maniera più veloce possibile
    Scusa la mia ignoranza in materia ma mi sto accostando ora ai db, provengo dal visual c++ e già il php mi rimane un pò ostico per la sua "malleabilità"

  4. #4
    Utente di HTML.it L'avatar di mgfx
    Registrato dal
    Feb 2008
    Messaggi
    173
    anche questo è relativamente semplice, eccolo già fatto


    Codice PHP:
    <table border="1" width="100%">
        <tr>
            <td>Nome</td>
            <td>Cognome</td>
            <td>Azienda</td>
        </tr>
    </table>
    <?php
    $utenti 
    "SELECT nome,cognome,IDAzienda FROM utenti ORDER BY cognome ASC"
    $res mysql_query($utenti);
    while(
    $result mysql_fetch_array($res)) 

        
    $nome $result['nome']; 
        
    $cognome $result['cognome']; 
        
    $IdA $result['IDAzienda']; 

    $azienda "SELECT nomeAzienda FROM aziende WHERE idAzienda=$IdA"
    $result2=mysql_fetch_assoc($azienda);
    $nome_az $result2['nomeAzienda'];

               echo
    "<table border='1' width='100%'>
        <tr>
            <td>
    $nome</td>
            <td>
    $cognome</td>
            <td>
    $nome_az</td>
        </tr>
    </table>"
    ;


    ?>
    spero di essere stato utile

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    59
    grazie diciamo che è come l'avevo pensato io, solo che mi aspettavo che mysql fosse più "potente", pensavo si riuscisse a fare con una sola query, cioè che mi tirasse fuori quei risultati unicamente con un unica query, invece se hai fatto così anche tu vuol dire che non c'è altro modo

  6. #6
    Utente di HTML.it L'avatar di mgfx
    Registrato dal
    Feb 2008
    Messaggi
    173
    non sono un esperto, può darsi anche che esista, ma non credo... cosi mi sembra il modo più veloce

  7. #7
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da Exc3ss
    se hai fatto così anche tu vuol dire che non c'è altro modo
    Dovresti essere più cauto nel trarre conclusioni

    codice:
    SELECT nome,cognome,nomeAzienda FROM contatti LEFT JOIN aziende where contatti.IDAzienda = aziende.IDAzienda ORDER BY cognome ASC
    Per vuotare una tabella fai
    codice:
    TRUNCATE aziende
    e ti si azzera anche l'autoincrement.




    Originariamente inviato da mgfx
    mysql_query("UPDATE aziende SET indice_idazienda=0 WHERE id_azienda='$id_azienda'");
    cosa sarebbe questo?!!?!?

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    59
    Originariamente inviato da luca200
    Dovresti essere più cauto nel trarre conclusioni

    codice:
    SELECT nome,cognome,nomeAzienda FROM contatti LEFT JOIN aziende where contatti.IDAzienda = aziende.IDAzienda ORDER BY cognome ASC
    Per vuotare una tabella fai
    codice:
    TRUNCATE aziende
    e ti si azzera anche l'autoincrement.





    cosa sarebbe questo?!!?!?
    Si infatti poi ieri sera gironzolando su internet ho trovato un database manager (Code Factory for mySQL) e avendo la parte visuale come "access" per capirci qualcosa in più nella mia ignoranza in materia sono riuscito a comporre la tua stessa query e il risultato che volevo è venuto fuori con un unica query, ti ringrazio la tua è più "fine", in effetti mi sembrava strano che mysql non permettesse query così banali.
    Ti ringrazio per l'aiuto e il suggerimento :P

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.