• User Attivo

    recupero dai da database

    ciao ragazzi, sono ancora un po' alle prime armi...Io avrei un problema, qualcuno potrebbe aiutarmi per favore? Non capisco questa cosa. Io ho un database di nome "db_login" in mysql con 2 tabelle inserite:

    1. anag_ditta
    2. tbl_users
      La tabella anag_ditta ha un campo user_id che si autoincrementa in modo che vengano inseriti numeri progressivi all'inserimento dei dati; poi ci sono vari campi con ragione_sociale, cognome, nome...ecc...
      La tabella tbl_users anche lei ha un campo user_id dove vengono memorizzati tutti gli utenti registrati
      Quello che vorrei fare e che non capisco è fare in modo che se l'utente "a" ha inserito la ditta "tizio" e l'utente "b" ha inserito la ditta "caio" venga restituito nella query solo quello che ogni utente ha effettivamente registrato.
      A me invece succede che tutti gli utenti loggati vedono tutte le ditte che qualsiasi utente registra. Ecco non so come creare le relazioni. Cosa devo modificare?
      Io ho questi file
    3. insert.php
      non ho scritto la parte di riconoscimento utente,

    $anag=mysql_query("insert into anag_ditta(ragione_sociale,
    cognome, nome, codice_fiscale, partita_iva,
    data_nascita, citta_nascita, indirizzo, citta_residenza, attivita)
    VALUES("$_POST[ragione_sociale] ", "$_POST[cognome] ", "$_POST[nome] ", "$_POST[codice_fiscale] ", "$_POST[partita_iva] ", "$_POST[data_nascita] ", "$_POST[citta_nascita] ", "$_POST[indirizzo] ", "$_POST[citta_residenza] ", "$_POST[attivita] ")");

    1. archivio_azienda:
      non ho scritto la parte di riconoscimento utente,

    //recupero i dati dell'archivio aziende dal database
    $azie="SELECT * FROM anag_ditta order by ragione_sociale";
    $result = mysql_query($azie,$connessione);
    while($row = mysql_fetch_array($result)) {
    echo "<br>";
    echo "<b>"."$row[1]"."</b>";

    Dove devo modificare le cose?
    Vi prego aiutatemi
    Grazie

    :mmm:


  • User Attivo

    Ciao maubox8,
    il problema è nella query di selezione (per come hai presentato il codice php):

    $azie="SELECT * FROM anag_ditta WHERE user_id=$_SESSION['id'] order by ragione_sociale";

    sostanzialmente nella query da te indicata selezioni tutto, mentre, secondo quanto mi sembra di aver capito, a te occorre che sia selezionata solamente la riga corrispondente all'utente loggato. Per far questo devi aggiungere alla query qualcosa di simile a quanto evidenziato in rosso, facendo attenzione però a recuperare (probabilmente proprio da $_SESSION) il corretto paramentro che identifica l'utente loggato ($_SESSION['id'] è solo un'indicazione verosimile...).

    Facci sapere se e come risolvi!
    :ciauz:


  • User Attivo

    @ceccus said:

    Ciao maubox8,
    il problema è nella query di selezione (per come hai presentato il codice php):

    $azie="SELECT * FROM anag_ditta WHERE user_id=$_SESSION['id'] order by ragione_sociale";

    sostanzialmente nella query da te indicata selezioni tutto, mentre, secondo quanto mi sembra di aver capito, a te occorre che sia selezionata solamente la riga corrispondente all'utente loggato. Per far questo devi aggiungere alla query qualcosa di simile a quanto evidenziato in rosso, facendo attenzione però a recuperare (probabilmente proprio da $_SESSION) il corretto paramentro che identifica l'utente loggato ($_SESSION['id'] è solo un'indicazione verosimile...).

    Facci sapere se e come risolvi!
    :ciauz:

    ti ringrazio, senti, ho cambiato leggermente la tabella, ho messo un campo con "id_utenteee" nel database in modo che posso riconoscere a quell'anagrafica l'id dell'utente.
    Non ho ancora risolto pero', con la sessione non riesco perchè la sessione non ha un id con numero (credo), ma solo l'utente.
    Ti riposto la query, mi manca solo la selezione di un dato che non so come prendere:

    $azie="SELECT * FROM anag_ditta WHERE id_utenteee = 3 order by ragione_sociale";

        $result = mysql_query($azie,$connessione);  
        while($row = mysql_fetch_array($result)) {
        echo "<br>";
        echo "<b>"."$row[2]"."</b>";
    

    Ho messi 3 per prova e così mi da il risultato, ma ovviamente è sballato perchè devo mettere l'id dell'utente.
    Ecco non riesco a ricavare questo dato.


  • User Attivo

    Nella pagina php in cui hai il codice che hai riportato sopra scrivi l'istruzione

    var_dump($_SESSION);

    copiati l'output che da a monitor e poi rimuovila (potrebbe contenere informazioni delicate). Nell'output ottenuto potresti trovare quel paramentro di selezione che fa al caso tuo.

    Facci sapere...
    :ciauz:


  • User Attivo

    @ceccus said:

    Nella pagina php in cui hai il codice che hai riportato sopra scrivi l'istruzione

    var_dump($_SESSION);

    copiati l'output che da a monitor e poi rimuovila (potrebbe contenere informazioni delicate). Nell'output ottenuto potresti trovare quel paramentro di selezione che fa al caso tuo.

    Facci sapere...
    :ciauz:

    ok, l'ho fatto e l'ho rimosso, come output mi da: array(0) { }
    Cosa vorrebbe dire? Scusami ma mi sto perdendo...
    😢


  • User Attivo

    L'hai fatto da loggato? Cioè hai visualizzato la pagina in questione e hai visto array***(0) { }*** anche dopo aver effettuato il login?


  • User Attivo

    hai ragione non ero loggato! Ora l'ho fatto e mi ha dato questo:
    array(1) { ["logged"]=> array(2) { [0]=> string(3) "mau" [1]=> int(1196171932) } }

    Quindi ora cosa devo fare? Devo mettere tutta questa cosa (che poi cerchero' di capire)?


  • User Attivo

    Ok... riconosci uno di quei dati restituiti (mau e/o 1196171932) nella riga di anag_ditta a te (che sei loggato) corrispondente? Forse mau è il tuo user?


  • User Attivo

    @ceccus said:

    Ok... riconosci uno di quei dati restituiti (mau e/o 1196171932) nella riga di anag_ditta a te (che sei loggato) corrispondente? Forse mau è il tuo user?

    esatto! mau è l'user presente e 1 è il numero id, quello che va in progressivo quando qualcuno si registra.


  • User Attivo

    esatto! mau è l'user presente e 1 è il numero id, quello che va in progressivo quando qualcuno si registra.


  • User Attivo

    pero' che cosa devo indicare adesso? Scusami ma non capisco ancora questa cosa


  • User Attivo

    Devi selezionare prima lo userid:

    $query="SELECT * FROM tbl_users WHERE username='".$_SESSION['logged'][0]."' ;
    ***$result = mysql_query($query,$connessione); ***
    $row = mysql_fetch_array($result);
    $userid = $row'userid'];

    Ovviamente devi fare attenzione ai valori in rosso per i quali devi utilizzare i nomi corretti dei campi (io ho solo tirato ad indovinare) e quindi nella query che hai postato qualche messaggio sopra metti al posto del 3 $userid:

    $azie="SELECT * FROM anag_ditta WHERE id_utenteee = $userid order by ragione_sociale";

    Facci sapere...
    :ciauz:


  • User Attivo

    sei grandissimo! Funziona alla perfezione, ho cambiato appunto solo le cose in rosso, e nell'ultima istruzione ho messo $userid = $row[0]; perchè quel numero si trova in prima posizione e quindi è 0. Ti ringrazio molto! Darei non so cosa per avere la tua preparazione!!
    Un'ultima curiosità, ma che tipo di funzione è var_dump($_SESSION); ?
    Si puo' usare solo per le sessioni?
    🙂


  • Moderatore

    di solito si usa per stampare array 😉 ovviamente per saperne il contenuto


  • User Attivo

    var_dump(), come dice giustamente massimux, serve per vedere al volo il contenuto di un array.

    Darei non so cosa per avere la tua preparazione!!
    Basta fracassarsi un po' la testa su vari script e giungi presto alla meta, ma vedo che sei sulla buona strada! 😄
    :ciauz:


  • User Attivo

    eh eh... sulla buona strada?? grazie per la fiducia... lo spero...
    grazie ancora! A presto
    🙂