Visualizzazione risultati 1 fino 7 di 7

Discussione: [PHP+MySQL] creare tabella, aggiungere e recuperare dati

  1. #1
    Guest

    Predefinito [PHP+MySQL] creare tabella, aggiungere e recuperare dati

    Salve a tutti,
    Mi ripresento con il mio solito e consueto problema: devo attraverso un forma registrare un utente e assieme di creare una tabella sfruttando anke il suo nome. Poi questi dati li dovrò recuperare, dovrò inserire dati nella tabella creata e recuperare pure quelli.

    Per ora sono al primo passaggio: non riesco a creare la tabella da PHP, con questo script:

    Codice PHP:
    <?php
    $un
    =$_GET['username'];
    $pw=$_GET['password'];
    //aggiunge un utente al db
    $cn = mysql_connect("indirizzo", "db", "psw") or die();
    mysql_select_db("db", $cn) or die();

    $sqlquery = "SELECT * FROM $tabellasiti WHERE username = '".$username."'";
    $result = mysql_query($sqlquery);
    $num_righe = mysql_num_rows($result);

    if (
    $num_righe>0){
    echo
    "Il nome utente esiste già, per favore torna indietro e scegline un'altro.";
    } else {
    mysql_query("INSERT INTO utenti(username,password) VALUES('".$un."','".$pw."')", $cn);
    mysql_query("CREATE TABLE ".$username."(id INT(20) NOT NULL AUTO_INCREMENT,numcell VARCHAR(10) NOT NULL,nomecell VARCHAR(20) PRIMARY KEY (id))");
    echo
    "Utente registrato";
    }

    ?>
    Ma mi restituisce l'errore:

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/mhd-01/www.ismuka.com/htdocs/area-utenti/add_user.php on line 12

    E non mi crea la tabella...Dove sbaglio?

    Il programma che sto progettando è una sorta di rubrica, ho pensato di aggiungere i dati così:

    Codice PHP:
    <?php
    session_start
    ();
    $username=$_SESSION['utente'];
    $nm=$_GET['nome'];
    $nmr=$_GET['numero'];
    //aggiunge un numero al db
    $cn = mysql_connect("indirizzo", "db", "psw") or die();
    mysql_select_db("db", $cn) or die();
    mysql_query("INSERT INTO rubrica_".$username."(numcell,nomecell) VALUES('".$nm."','".$nmr."')", $cn);
    echo
    "Numero aggiunto";

    ?>
    E recuperarli in un menù a tendina così: (in modo che compaiano solo i nomi e non i numeri)

    Codice PHP:
    <?php
    //variabili
    $client = "indirizzo";
    $nome = "nome";
    $password4 = "psw";
    $directory = "db";
    $tabella = "tabella";
    $username=$_SESSION['utente'];
    //connessione
    $cn=mysql_connect($client,$nome,$password4);
    mysql_select_db("ismukaco93743", $cn) or die();
    //query
    $sqlquery = "SELECT * FROM rubrica_".$username;
    $result = mysql_query($sqlquery);
    $num_righe = mysql_num_rows($result);

    do {
    $num="SELECT * FROM rubrica_".$username." WHERE id='".$num_righe."'";
    $rnum= mysql_query($num);
    while(
    $r = mysql_fetch_array($result))
    $numcell=$r['numcell'];
    $nomecell=$r['nomecell'];

    echo
    "<option value='".$numcell."'>".$nomecell."</option>";

    $num_righe=$num_righe - 1;
    } while (
    $num_righe>0)
    ?>
    E' all'incirca giusto?
    Spero in illuminazioni ragazzi!

  2. #2
    palla000 non è connesso Utente attivo
    Data registrazione
    12-07-2008
    Residenza
    trieste
    Messaggi
    278

    Predefinito

    per il primo prova così
    Codice PHP:
    <?php
    $un
    =$_GET['username'];
    $pw=$_GET['password'];
    //aggiunge un utente al db
    $cn = mysql_connect("indirizzo", "db", "psw") or die();
    mysql_select_db("db", $cn) or die();

    $sqlquery = "SELECT * FROM $tabellasiti WHERE username = '".$username."'";
    $result = mysql_query($sqlquery);
    $num_righe = mysql_num_rows($result);

    if (
    $num_righe == 1){
    echo
    "Il nome utente esiste già, per favore torna indietro e scegline un'altro.";
    } else {
    mysql_query("INSERT INTO utenti(username,password) VALUES('".$un."','".$pw."')", $cn);
    mysql_query("CREATE TABLE ".$un."(id INT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,numcell VARCHAR(10) NOT NULL,nomecell VARCHAR(20) )");
    echo
    "Utente registrato";
    }

    ?>
    per i dati come le password è meglio usare metodo post
    ma perchè devi creare una tabella per ogni utente??

  3. #3
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Ma nel primo codice, questa parte:
    Codice PHP:
    $sqlquery = "SELECT * FROM $tabellasiti WHERE username = '".$username."'";
    Non dovrebbe essere così?
    Codice PHP:
    $sqlquery = mysql_query("SELECT * FROM $tabellasiti WHERE username = '".$un."'")
    Non c'è una variabile errata? E $tabellasiti dove viene settata? Che valore ha?
    Ultima modifica di miki92 : 05-05-2009 alle ore 18.18.21
    Apprezzi l'aiuto? Offrimi un caffè!

  4. #4
    palla000 non è connesso Utente attivo
    Data registrazione
    12-07-2008
    Residenza
    trieste
    Messaggi
    278

    Predefinito

    è vero forse non ha settato la variabile però è giusto se vedi nella riga sotto ce mysql_query()
    comunque era sbagliata anche la variabile $username

  5. #5
    Guest

    Predefinito

    Poi controlla il tuo script, sei a rischio injection, inizia con il proteggere i dati passati via GET con htmlspecialchars(), trim() e se sono numeri aggiungi (int) prima oppure usa is_numeric()

  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da palla000 Visualizza messaggio
    per il primo prova così

    per i dati come le password è meglio usare metodo post
    ma perchè devi creare una tabella per ogni utente??
    Si ma queste sono particolarità (metodo post) che utilizzerò quando il codice sarà corretto.
    Dici che è meglio creare una sola tabella contenente i numeri di tuuuuutti gli utenti?

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    Ma nel primo codice, questa parte:
    Codice PHP:
    $sqlquery = "SELECT * FROM $tabellasiti WHERE username = '".$username."'";
    Non dovrebbe essere così?
    Codice PHP:
    $sqlquery = mysql_query("SELECT * FROM $tabellasiti WHERE username = '".$un."'")
    Non c'è una variabile errata? E $tabellasiti dove viene settata? Che valore ha?
    Grazie, non mi ero accorto di quella variabile scema..Ho corretto, ora non mi da più errori ma non mi crea la tabella...penso di utilizzare un'unica tabella come consigliato da palla000...

    Nel caso avessi ancora problemi (come presumo xD) mi farò vivo!

  7. #7
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Supponendo che hai modificato anche qui:
    Codice PHP:
    mysql_query("CREATE TABLE ".$username."(id INT(20) NOT NULL AUTO_INCREMENT,numcell VARCHAR(10) NOT NULL,nomecell VARCHAR(20) PRIMARY KEY (id))");
    Ti posso chiedere di aggiungere or die(mysql_error()); così da capire se c'è qualche errore?
    Codice PHP:
    mysql_query("CREATE TABLE ".$un."(id INT(20) NOT NULL AUTO_INCREMENT,numcell VARCHAR(10) NOT NULL,nomecell VARCHAR(20) PRIMARY KEY (id))")or die(mysql_error());
    Apprezzi l'aiuto? Offrimi un caffè!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •