- Home
- Categorie
- Coding e Sistemistica
- PHP
- Select da due tabelle diverse
-
Select da due tabelle diverse
Salve ragazzi,
sto eseguendo un select su due tabelle diverse, in modo che vengano poi inseriti i dati estratti in un'altra tabella dal nome "ordini".
I dati vengono pescati da due distinte tabelle: una si chiama utenti, l'altra eventi. I campi che mi servono sono: dalla prima utente_id, dalla seconda event_id.La struttura della tabella ordini è questa:
CREATE TABLE
ordini
(
ordine_id
int(5) NOT NULL auto_increment,
utente_id
int(5) NOT NULL,
event_id
int(5) NOT NULL,
numero
int(5),
totale
decimal (5,2),
data
timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (ordine_id
,utente_id
,event_id
)
)Vi posto il codice php con la query:
[PHP]
<?
session_start();
$_SESSION['username'];
include("config.php");
mysql_connect($db_host,$db_user,$db_password,$db_name) or die ("non riesco a connettermi");
mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");
if(empty($_POST["id"])){
echo"Non hai selezionato nulla";
}
else{
$dati = mysql_query("SELECT utenti. *, eventi. * from utenti, eventi WHERE utente_id='".$_SESSION['username']."' AND event_id='".$_POST['id']."'") or die( mysql_error() . "<br>" . $sql) ;
$array = mysql_fetch_array($dati);
}
?><?php
$event_id = $array['event_id'];
$utente_id = $array['utente_id'];
$numero = htmlentities(strip_tags($_POST["numero"]));
$totale = htmlentities(strip_tags($_POST["totale"]));mysql_query("insert into ordini (numero, totale, event_id, utente_id) values ('$numero', '$totale', '$event_id', '$utente_id')") or die( mysql_error() . "<br>" . $sql) ;
mysql_close();
?>
[/PHP]Ora, qual'è il problema? Che l'inserimento nella tabella ordini avviene correttamente per quel che concerne l'event_id. Per quanto riguarda utente_id mi viene sempre valorizzato il dato 1. Perchè? Teoricamente pesco i dati relativi alla tabella "utenti" attraverso la sessione che ha memorizzato l'username. Da qui poi dovrei ottenere tutti i dati relativi ad un determinato cliente. Quindi anche user_id che andrebbe poi nella tabella ordini alla voce utente_id.
Come mai ciò non accade e mi viene sempre il valore 1? (come se fosse sempre il primo utente registrato nel sito?)
-
Ciao marckh,
detta così non so risponderti a botta secca.Nella query hai:
utente_id='".$_SESSION['username']."'
Sicuro che sono dati omogeni? Vista così utente_id sembra un numero mentre $_SESSION['username'] sembra un nome.In secondo luogo, prova a farti stampare a monitor sia la variabile di sessione che $array, ad esempio con:
var_dump($session);
var_dump($array);che generalmente aiuta a schiarire le idee.
Infine, perché hai fatto un'unica query se non c'è alcun join? Poi, credo che gli asterischi (*) dovresti attaccarli al punto (.) e devi fare attenzione ce le due tabelle non abbiano campi con lo stesso nome, altrimenti devi usare degli alias con la sintassi:
SELECT campo AS campoalias...
Facci sapere come risolvi!