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

cobra_72

Nuovo Utente
13 Lug 2017
24
0
1
47
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.
 

cobra_72

Nuovo Utente
13 Lug 2017
24
0
1
47
ciao
ti sposto in joomla, anche se è un problema di php mettere le mani nel codice di un cms è sempre una rogna
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.038
146
63
PR
www.borgo-italia.it
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?
 

cobra_72

Nuovo Utente
13 Lug 2017
24
0
1
47
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.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.038
146
63
PR
www.borgo-italia.it
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
 
  • Like
Reactions: cobra_72

cobra_72

Nuovo Utente
13 Lug 2017
24
0
1
47
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

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

cobra_72

Nuovo Utente
13 Lug 2017
24
0
1
47
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,
 

marino51

Utente Attivo
28 Feb 2013
2.678
135
63
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
 

cobra_72

Nuovo Utente
13 Lug 2017
24
0
1
47
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:

mr.x

Utente Attivo
9 Apr 2016
234
23
28
prova a correggere così, la logica è la stessa che ti hanno gia indicato ma adattata a joomla
PHP:
define( '_JEXEC', 1 ); //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.
 

cobra_72

Nuovo Utente
13 Lug 2017
24
0
1
47
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

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