• User

    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?)


  • User Attivo

    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!
    :ciauz: