Inserire dati in un database Mysql

  • Creatore Discussione Creatore Discussione Napster
  • Data di inizio Data di inizio

Napster

Nuovo Utente
26 Apr 2012
25
0
0
Salve ragazzi, stò studiando da poco il php per la creazione di un piccolo sito web ma sono incappato in un dilemma del quale non ho trovato soluzione.
Vorrei capire come poter inserire in un database mysql quello che un utente scrive nella textbox; mi spiego meglio, in pratica un utente si iscrive inserendo il suo nickname in un form formato da un campo di testo e un pulsante, al clic del pulsante il valore della textbox deve essere inserito nel database mysql e dal database il dato deve essere preso e visualizzato in una tabella nel sito in cui compare tutta la lista degli iscritti.

Spero di essermi spiegato, attendo risposta

P.S. se non avete capito ditemelo :)
 
ciao
è abbastanza semplice.
1. per prima cosa devi avere una tabella chiamata (es) utenti (oltre al nick metterei anche una password) fatta schematicamente
Codice:
id int(12) not null autoincrement primarykey
username varchar (50) not nul
password varchar (50) not nul
2. poi nel form metterai anche il campo per la pass
3. puoi fare il tutto in una stessa pagina php
4. alla pressione del tasto submit raccogli i dati (ti schematizzo usando le clssiche query, quando saria più avanti userai le pdo)
PHP:
<?php
//qui i dati di connessione
if(isset($_POST['submit'])){//premuro il submit, dovrai mettere il suo name
	$user=$_POST['username'];
	$pass=$_POST['password'];
	//qui ci vorranno vari controlli su uanto immesso compresi la verifica dell'esistenza quindi user e/o pass da cambiare (poi la pass dovrà essere codificata)
	//e se tutto è OK inserisci il nuovo iscritto nel db
	$query=("INSERT INTO utenti(username, password) VALUES('$user','$pass')";
	if(mysql_query($query)){
		echo "grazie di esserti iscritto";
	}else{
		echo "c'è stato un errore, riprova";
	}
	// e qui un link per uscire e/o tornare al form
}
?>
<!-- e qui puoi scrivere il tuo form in html -->
prova a buttare giù qualcosa e provo, poi se hai dei problemi posta
 
ciao
è abbastanza semplice.
1. per prima cosa devi avere una tabella chiamata (es) utenti (oltre al nick metterei anche una password) fatta schematicamente
Codice:
id int(12) not null autoincrement primarykey
username varchar (50) not nul
password varchar (50) not nul
2. poi nel form metterai anche il campo per la pass
3. puoi fare il tutto in una stessa pagina php
4. alla pressione del tasto submit raccogli i dati (ti schematizzo usando le clssiche query, quando saria più avanti userai le pdo)
PHP:
<?php
//qui i dati di connessione
if(isset($_POST['submit'])){//premuro il submit, dovrai mettere il suo name
	$user=$_POST['username'];
	$pass=$_POST['password'];
	//qui ci vorranno vari controlli su uanto immesso compresi la verifica dell'esistenza quindi user e/o pass da cambiare (poi la pass dovrà essere codificata)
	//e se tutto è OK inserisci il nuovo iscritto nel db
	$query=("INSERT INTO utenti(username, password) VALUES('$user','$pass')";
	if(mysql_query($query)){
		echo "grazie di esserti iscritto";
	}else{
		echo "c'è stato un errore, riprova";
	}
	// e qui un link per uscire e/o tornare al form
}
?>
<!-- e qui puoi scrivere il tuo form in html -->
prova a buttare giù qualcosa e provo, poi se hai dei problemi posta

Ho fatto, però quando mi esegue il codice php mi da una pagina bianca senza visualizzare alcun messaggio (di errore registrazione o avvenuta registrazione)
 
ciao
non devi postare quello che ho scritto io (è solo uno schema), ma per vedere dove è l'errore devi postare lo script che hai fatto tu
 
ciao
non devi postare quello che ho scritto io (è solo uno schema), ma per vedere dove è l'errore devi postare lo script che hai fatto tu

Questo è il codice che ho fatto, sostanzialmente errori di sintassi non ne ho trovati ma continuo a non capire dove sia il problema:

PHP:
<?php

$db_host = "localhost";
$db_user = "nome utente";
$db_password = "pass";
$db_name = "nomedb";

$db = mysql_connect($db_host, $db_user, $db_password) or die ('Errore durante la connessione');
mysql_select_db($db_name, $db) or die ('Errore durante la selezione del db');

//qui ho iserito il codice che mi hai dato
if(isset($_POST['submit'])){ 
    $user=$_POST['username'];
    $pass=$_POST['password'];
    // I controlli per la password li aggiungo dopo 
   
    $query=("INSERT INTO utenti(username, password) VALUES('$user','$pass')");
    if(mysql_query($query)){
        echo "grazie di esserti iscritto";
    }else{
        echo "c'è stato un errore, riprova";
    }
   
} 

?>
<html>
<head>
<title>Modulo registrazione
</title>
</head>
<body>
<form action='inviook' method='POST'>

<b>Nickname:</b><br>
<input type='text' name='username'><br>

<b>Password:</b><br>
<input type='password' name='password'><br>

<input type='submit' value='submit'><br>

</form>

</body>
</html>
 
L'errore è che devi assegnare l'attributo name al bottone di submit. Comunque, in modo più elegante:
PHP:
<?php
$pdo = new PDO('mysql:host=localhost;dbname=nomedb', 'nome utente', 'pass');

if ('POST' === $_SERVER['REQUEST_METHOD']) {
    $stm = $pdo->prepare('INSERT INTO utenti (username, password) VALUES (?, ?');
    $stm->execute(array($_POST['username'], $_POST['password']));

    echo 'Grazie di esserti iscritto.';
} else {
    echo <<<EOF
<!DOCTYPE html>
<html>
    <head>
        <title>Registrazione</title>
        <meta charset="utf-8" />
    </head>

    <body>
        <form action="{$_SERVER['REQUEST_URI']}" method="post">
            <div>
                <label for="username">Username:</label>
                <input type="text" id="username" name="username" />
            </div>

            <div>
                <label for="password">Password:</label>
                <input type="password" id="password" name="password" />
            </div>

            <div>
                <button type="submit">Registrati</button>
            </div>
        </form>
    </body>
</html>
EOF;
}
?>
Visto che ti stai avvicinando ora al PHP, inizia da subito a seguire delle buone pratiche di programmazione.
 
L'errore è che devi assegnare l'attributo name al bottone di submit. Comunque, in modo più elegante:
PHP:
<?php
$pdo = new PDO('mysql:host=localhost;dbname=nomedb', 'nome utente', 'pass');

if ('POST' === $_SERVER['REQUEST_METHOD']) {
    $stm = $pdo->prepare('INSERT INTO utenti (username, password) VALUES (?, ?');
    $stm->execute(array($_POST['username'], $_POST['password']));

    echo 'Grazie di esserti iscritto.';
} else {
    echo <<<EOF
<!DOCTYPE html>
<html>
    <head>
        <title>Registrazione</title>
        <meta charset="utf-8" />
    </head>

    <body>
        <form action="{$_SERVER['REQUEST_URI']}" method="post">
            <div>
                <label for="username">Username:</label>
                <input type="text" id="username" name="username" />
            </div>

            <div>
                <label for="password">Password:</label>
                <input type="password" id="password" name="password" />
            </div>

            <div>
                <button type="submit">Registrati</button>
            </div>
        </form>
    </body>
</html>
EOF;
}
?>
Visto che ti stai avvicinando ora al PHP, inizia da subito a seguire delle buone pratiche di programmazione.

Ti ringrazio! Ho inserito anche l'istruzione per criptare le password ecc... ed è tutto ok!

Ora però per completare il tutto riusciresti a darmi una base di php per un'istruzione che effettua il login?
 

Discussioni simili