Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    9

    pg_fetch_result + switch

    Ciao a tutti,

    sto cercando di prendere il dato da una tabella ed usarlo come condizione in uno switch in questo modo:

    $name=$_POST['username'];
    $pw=$_POST['password'];
    $nome_tabella="utente"; // nome della tabella dove sono contenuti gli utenti

    // Connessione al server e select nel database.
    $db = pg_connect("host=localhost dbname=progetto user=postgres password=basi")or die("cannot connect");

    $sql="SELECT tipo FROM $nome_tabella WHERE email='$name' and pw='$pw'";
    $result=pg_query($db,$sql);

    // pg_num_row conta il numero di righe del risultato
    $count=pg_num_rows($result);
    $var=pg_fetch_result($result,0);
    // Perchè sia corretto il confronto il risutlato dev'essere composto da una sola riga
    if($count==1){
    // Registro la sessione ed incremento il timeout
    session_start();
    $_SESSION['mail']=$name;
    $_SESSION['timeout']=(time()+LOGINEXPIRE);
    // Verifico che tipo di utente si sta loggando
    switch ($var) {
    case "iscritto":
    header("locationrofilo_iscritto.php");
    break;
    case "analista":
    header("locationrofilo_analista.php");
    break;
    case "admin":
    header("locationrofilo_admin.php");
    break;
    }
    }

    else {
    header("location:main_login.php?login=1");
    }

    Ma non so perchè, non funziona...in teoria il fetch dovrebbe restituire una stringa che allo switch non dovrebbe dare fastidio però non funziona, ho comunque provato per sicurezza a castare $var ma con nessun risultato. Se provo a stampare la variabile $var mi stampa il valore corretto ma di far funzionare sto benedetto script non se ne parla. Ah dentro all'if ci entra, ho fatto anche questa prova...non so più che inventarmi, qualcuno ha qualche suggerimento?

    Grazie mille in anticipo!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    9
    Scusate mi ero dimenticato di specificare che il DB usato è PostgeSQL, come si può intuire dal comando di fetch.

    Grazie ancora!

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    9
    Ho scoperto il motivo, quando viene eseguito il fetch la lunghezza della stringa risulta essere uguale a quella dichiarata nel dominio della tabella. Nel mio caso era char varying(10), quindi lo switch non funzionava...ora ho provato ad usate la funzione trim per vedere se erano spazi vuoti quelli aggiunti ma così non è. Io una soluzione per il mio caso l'ho trovata ma se qualcuno sapesse indicare come poter troncare una stringa recuperata da un dato di una tabella senza perdere nessuna lettera potrebbe essere utile anche ad altri.

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.