Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555

    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:

    Codice 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() . "
    $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() . "
    $sql) ;
    mysql_close();
    ?>
    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?)

  2. #2
    Ma se fai un print di $_SESSION['username'] ti dà 1 ? Se sì, posta il codice che usi per valorizzare la variabile $_SESSION['username'].

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Si, stampandolo mi da sempre 1. Evidentemente non sto valorizzando la sessione nel modo adeguato. Al momento mi sfugge come fare....

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    378
    Originariamente inviato da marckhh
    Si, stampandolo mi da sempre 1. Evidentemente non sto valorizzando la sessione nel modo adeguato. Al momento mi sfugge come fare....

    puoi postare come recuperi il valore della var di sess. utenti?

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Il meccanismo è questo. Se l'utente non è loggato non può effettuare l'acquisto. Se clikka sul pulsante acquista viene rimandato alla pagina di login, associata ad un file di controllo che ha questo codice:

    Codice PHP:
    <?php
    session_start
    ();
    if (isset(
    $_POST['username']) && isset($_POST['password'])) {
    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 *, date_format(data,'%d-%m-%Y %H:%i') AS dataora FROM eventi WHERE event_id='".$_POST['id']."'");
    $array mysql_fetch_array($dati);

    $hpw=md5($_POST['password']);
    $result=mysql_query("select * from utenti where username='$_POST[username]' and password='$hpw'");
    if (
    mysql_num_rows($result)!=0) {
         
    $_SESSION['username']=true;
         
    header("location:acquista.php?id=$array[event_id]");
      } else
        echo 
    "Utente non riconosciuto";
    }
    }
    mysql_close(); 
    ?>
    Ora, i dati user e pass vengono passati via post dal form del login, controllati nella tabella utenti e se esistono viene memorizzato l'username nella sessione.

    L'header rimanda alla pagina relativa all'acquisto. Qui c'è un form per scegliere numero di biglietti, viene fatto il totale ed inserito tutto nella tabella ordini. Ecco, nella tabella ordini viene sempre memorizzato utente_id pari a 1.

    Aggiungo questo. Nella pagina acquista.php, dovrei richiamare la sessione con l'username. Probabilmente è qui che sbaglio. Uso questo codice:

    <?php
    session_start();
    if (@$_SESSION['username']!=true)
    header("location:loginbuy.php?id=$_GET[id]");
    ?>

    Se non si è loggati si viene rimandati al form di login. Ma ripeto, probabilmente sbaglio qui, perchè se stampo la sessione mi salta fuori 1.

  6. #6
    Eccerto che sbagli !!!

    Tu dai il valore 'true' alla variabile $_SESSION['username'], quindi poi per forza è uguale a 1!
    Codice PHP:
    if (mysql_num_rows($result)!=0) {
         
    $_SESSION['username']=true;
         
    header("location:acquista.php?id=$array[event_id]");
      } else
        echo 
    "Utente non riconosciuto";

    Invece devi dare alla variabile il valore dell'id dell'utente!
    Codice PHP:
    if (mysql_num_rows($result)!=0) {
         
    $row mysql_fetch_array($result);
         
    $_SESSION['username']=$row['utente_id']; 
         
    header("location:acquista.php?id=$array[event_id]");
      } else
        echo 
    "Utente non riconosciuto";


  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ma quanto sono stato imbecille!! Ora funziona!
    Grazie mille!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.