[Joomla] [PHP] come attingere informazioni specifiche da database

Discussione in 'PHP' iniziata da cobra_72, 16 Luglio 2017.

  1. cobra_72

    cobra_72 Nuovo Utente

    Registrato:
    13 Luglio 2017
    Messaggi:
    24
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Gentili utenti ed esperti del forum, ho una questione che potrebbe interessare molti utenti.
    Ho creato per la mia scuola dove insegno, una modulistica online visibile dal seguente link:
    http://www.giovanniarlacchi.it/documenti_online/Modulistica.php
    Quello che vorrei fare è far comparire in automatico nel campo "nome" o "cognome" il nome o cognome dell'utente dopo essersi loggato, attingendolo automaticamente dal database dopo che il form si connette con quest'ultimo. Premesso che utilizzo un CMS che potrebbe essere o joomla o moodle, entrambe hanno una tabella del tipo chuj3_users`; ho provato ad utilizzare un Recordset interrogando il db, ma questo mi legge solo il primo nome riportato nella lista indipendentemente da chi si logga.

    Qualcuno mi può dire come fare? Ne ho provate tante ma non ho idea.

    Form del genere ve ne sono diversi, basti pensare ad esempio il sito inps in cui un utente dopo che si logga e va a compilare un modello, in automatico compare il suo nome e cognome.
    Grazie in anticipo.
     
  2. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.714
    Mi Piace Ricevuti:
    126
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao
    ti sposto in joomla, anche se è un problema di php mettere le mani nel codice di un cms è sempre una rogna
     
    A cobra_72 piace questo elemento.
  3. cobra_72

    cobra_72 Nuovo Utente

    Registrato:
    13 Luglio 2017
    Messaggi:
    24
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Il form non l ho fatto con joomla per cui il codice PHP di joomla non centra nulla.
    Nel cms ho solo inserito il collegamento con esso; quello che bisognerebbe manipolare è il codice PHP o il database. Secondo me questo è il posto giusto o a limite in una sezione di database
     
  4. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.714
    Mi Piace Ricevuti:
    126
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao
    scusa, non avevo capito, ti riporto in php, però da quello che ho capito al form si puo collegare solo chi è loggato e il log avvine tramite uno script di joomlia, giusto?
    se è così (non conosco joomlia ne altri cems, faccio sempre tutto manina manina) dovresti postare cosa jomlia utilizza per far accedere alle pagine riservate, una sessione? e se si quale e cosa contiene?
     
  5. cobra_72

    cobra_72 Nuovo Utente

    Registrato:
    13 Luglio 2017
    Messaggi:
    24
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    No no. Il form l'ho costruito interamente in php o volendo anche in htl (con l'aiuto di dreamweaver), per cui possiamo considerarlo indipendente da joomla. Il form viene richiamato da joomla a mezzo di un link che si trova all'interno del profilo utente di joomla.
    Il problema è scrivere una query in php che consenta di attingere le informazioni dell'utente dal database (come ad esempio nome, e-mail...etc..) nel momento in cui lo stesso utente si logga.
     
  6. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.714
    Mi Piace Ricevuti:
    126
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao
    appunto, se l'utente si logga (immagino user e pass) verifichi nel db che user e pass esistano, immagino che in quella pagina tu faccia una select per cercare user e pass tipo
    PHP:
    <?php
    session_start
    ();
    //... connessine e altro
    //e ricevi dal form $user e $pass tramite i $_POST
    $user=$_POST['user'];
    $pass=$_POST['pass'];
    //gli opportuni controlli

    $query="SELECT * FROM tabella WHERE user='$user' AND pass='$pass'";
    $ris=mysqli_query($connessione$query);
    //controlli l'esistenza
    if(mysqli_num_rows($ris) < 0){
        
    //non registrato quindi rimandi a dove vuoi
    }else{
        
    //utente registrato
        //estrati passi in sessione il suo id
        
    $riga=mysqli_fetch_assoc($ris);
        
    $_SESSION['id']=$riga['id'];
        
    //e qui fai quello che devi fare
    }
    //...
    ?>
    poi nella pagina che ti interessa
    PHP:
    <?php
    session_start
    ();
    //verifichi che la sessione esista
    if(!isset($_SESSION['id'])){
        
    //la sessione non esiste quindi riinvii
        
    header('location:dove_vuoi.php');
        exit();
    }
    //la sessione esite
    //dati ci connessione
    $query="SELECT * FROM tabella WHERE id=".$_SESSION['id'];
    //e estrai i dati che ti servono
    $ris=mysqli_query($connessione$query);
    $riga=mysqli_fetch_assoc($ris);
    $nome=$riga['nome'];
    $email=$riga['email'];
    //ecc....
    //e usi le variabili dove e come ti servono

    ?>
    guarda che ho messo nomi a caso, evidente che devi mettere quelli che hai tu
     
    A cobra_72 piace questo elemento.
  7. cobra_72

    cobra_72 Nuovo Utente

    Registrato:
    13 Luglio 2017
    Messaggi:
    24
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio

    Grazie lo proverò subito. Se funziona provvederò subito a farti una statua d'oro :)
     
  8. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.714
    Mi Piace Ricevuti:
    126
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao, scusa correggi
    if(mysqli_num_rows($ris) < 0){
    in
    if(mysqli_num_rows($ris) < 1){
    errore di battitura
     
    A cobra_72 piace questo elemento.
  9. cobra_72

    cobra_72 Nuovo Utente

    Registrato:
    13 Luglio 2017
    Messaggi:
    24
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
  10. cobra_72

    cobra_72 Nuovo Utente

    Registrato:
    13 Luglio 2017
    Messaggi:
    24
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Posto la parte interessata del form:

    <input name="sex" type="radio" required id="sex_0" value="Il">
    Il</label>
    <input type="radio" name="sex" value="La" id="sex_1">
    La sottoscritt <label>
    <input name="sex1" type="radio" required id="sex1_0" value="o">o</label>
    <input type="radio" name="sex1" value="a" id="sex1_1">
    a:
    <input name="cognome" type="text" id="nome" autocomplete="off" size="20" maxlength="20" readonly>
    <input name="email" type="hidden" id="email" value="xxxx@dominio.it">
    DOCENTE a tempo
    <label>
    <input name="contratto" type="radio" required id="Sceltacontratto_0" value="determinato">
    determinato</label>
    <label>
    <input name="contratto" type="radio" id="Sceltacontratto_1" value="indeterminato">
    indeterminato</label>
    , in servizio presso questo Istituto
    <p>nel corrente anno scolastico,
     
  11. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    1.831
    Mi Piace Ricevuti:
    67
    Punteggio:
    48
    Occupazione:
    free lance
    Località:
    Lombardia
    in fondo alla pagina leggo
    sembra che tu stia mischiando le funzioni mysqli e mysql
     
  12. cobra_72

    cobra_72 Nuovo Utente

    Registrato:
    13 Luglio 2017
    Messaggi:
    24
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Ultima modifica: 18 Luglio 2017
  13. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    1.831
    Mi Piace Ricevuti:
    67
    Punteggio:
    48
    Occupazione:
    free lance
    Località:
    Lombardia
    come detto, stai usando funzioni del db incompatibili tra loro

    $conn = mysqli_connect($hostname_dati, $username_dati, $password_dati,$database_dati) or trigger_error(mysql_error(),E_USER_ERROR);

    probabilmente anche nel resto dello script, verifica la coerenza, considerando di usare le funzioni mysqli perché le altre, più vecchie, sono abbandonate ed in futuro verranno rimosse
     
  14. cobra_72

    cobra_72 Nuovo Utente

    Registrato:
    13 Luglio 2017
    Messaggi:
    24
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Si il punto non è questo. A parte che lo script lo ha generato dreamweaver e ha sempre funzionato...
    La questione è quella riportata sopra.

    Aspetto intervenga borgo Italia:)
     
    Ultima modifica: 18 Luglio 2017
  15. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    1.831
    Mi Piace Ricevuti:
    67
    Punteggio:
    48
    Occupazione:
    free lance
    Località:
    Lombardia
    ho rivisto la pagina postata al 9 e non visualizza più l'errore, quindi lo hai corretto
    saluti
     
  16. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.714
    Mi Piace Ricevuti:
    126
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao
    scusa, hai risolto?
    se no, quli problemi?
     
  17. cobra_72

    cobra_72 Nuovo Utente

    Registrato:
    13 Luglio 2017
    Messaggi:
    24
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Ultima modifica: 22 Luglio 2017
  18. mr.x

    mr.x Utente Attivo

    Registrato:
    9 Aprile 2016
    Messaggi:
    75
    Mi Piace Ricevuti:
    7
    Punteggio:
    8
    prova a correggere così, la logica è la stessa che ti hanno gia indicato ma adattata a joomla
    PHP:
    define'_JEXEC'); //equivale a session_start()

    define'JPATH_BASE'$_SERVER['DOCUMENT_ROOT'] . "/tuorootpath" ); // la root del tuo sito

    require_once ( JPATH_BASE'/includes/defines.php' );
    require_once ( 
    JPATH_BASE'/includes/framework.php' ); //importo le librerie joomla
    $mainframe JFactory::getApplication('site');
    $mainframe->initialise();
    $user JFactory::getUser();  //estrai dati utente
    $nome_utente $user->name// prendi il nome utente
    se l'utente non è loggato hai $user->id settato a 0, potrebbe tornarti utile per farti un if e settare vuota la variabile $nome_utente nel caso non sia loggato. A te la scelta su come usarlo al meglio.
     
  19. cobra_72

    cobra_72 Nuovo Utente

    Registrato:
    13 Luglio 2017
    Messaggi:
    24
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio

    Sto provando questo script ma mi restituisce il seguente errore:
    Warning: session_start(): Cannot send session cache limiter - headers already sent
     
Sto caricando...

Condividi questa Pagina