Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 34
  1. #1

    processo di registrazione al sito ...artigianale

    Salve a tutti, è la prima volta che scrivo sul forum di html nella sezione del php... avevo già chiesto aiuto per ciò che riguarda gli javascript.
    La mia richiesta di aiuto riguarda la realizzazione di una sezione del sito per la registrazione.
    Riesco a passare i dati da dei form alle pagine successive, l'ultima fase, quella per inserire i dati di registrazione in una tabella del database di Mysql però non c'è verso di farla andare
    sicuramente per colpa mia, non ci capisco una cippa di php ,pochissimo di javascript e similari...
    mi sto aiutando con un piccolo libro, di quelli php foe dummies, quale sono io, e con qualche ricerca sul web.
    Qualcuna di voi anime pie, può dare uno sguardo al php che inserisce i dati nella tabella?


    Codice PHP:
    $host '***************'
    $user '**************'
    $password '*****************'
    $database '***************';  

    $db mysql_connect($host$user$password) or die ("impossibile connettersi al server di tophost $host");  
    mysql_select_db($database$db) or die ("impossibile connettersi al server di tophost $host");   

    // aggiunge le informazioni di registrazione alla tabella registro-utenti del database 
    $query "INSERT INTO registro-utenti (email,password,cognome,nome,eta,indirizzo,telefono,web) VALUES('$_REQUEST[email]','$_REQUEST[password]','$_REQUEST[cognome]','$_REQUEST[nome]','$_REQUEST[eta]','$_REQUEST[indirizzo]','$_REQUEST[telefono]','$_REQUEST[web]')";           if (!mysql_query($query$db)) 

    echo(
    "Attenzione, non &egrave; possibile inserire il record <a href=\"javascript:history.back(1);\"><img src=\"../images/rivedi.png\"></a>"); 
    }  
    else 

    echo(
    "La registrazione &egrave; stata inserita correttamente"); 
    }   
    mysql_close($db); 
    grazie e rigrazie in anticipo a chi può aiutarmi

  2. #2
    Prova a modificare lo script in questo modo:

    Codice PHP:
    $host '***************'
    $user '**************'
    $password '*****************'
    $database '***************';  

    $db mysql_connect($host$user$password) or die ("impossibile connettersi al server di tophost $host");  
    mysql_select_db($database$db) or die ("impossibile connettersi al server di tophost $host");   

    // aggiunge le informazioni di registrazione alla tabella registro-utenti del database 
    $query "INSERT INTO registro-utenti (email,password,cognome,nome,eta,indirizzo,telefono,web) VALUES('$_REQUEST[email]','$_REQUEST[password]','$_REQUEST[cognome]','$_REQUEST[nome]','$_REQUEST[eta]','$_REQUEST[indirizzo]','$_REQUEST[telefono]','$_REQUEST[web]')";

    echo 
    "Query: ".$query;

    mysql_query($query$db) or die ("Error: ".mysql_error());
    mysql_close($db); 
    e vedi se ti restituisce qualche messaggio di errore.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    Intanto invece della variabile $_REQUEST[] usa $_POST[] (suppongo che la form che compila l'utente abbia metodo post).

    Non avviare direttamente la query, verifica prima i dati che arrivano, ad esempio controlla se esiste già un utente con la stessa email, se esiste vuol dire che un utente si sta registrando una seconda volta e non dovrebbe poterlo fare.
    Probabilmente dei controlli li avrai già fatti in javascript riguardo la correttezza del formato dell'indirizzo email, che siano stati compilati tutti i campi obbligatori e cose del genere.
    Fa la stessa cosa anche via php, i controlli js sono facilmente aggirabili, basta disabilitare gli script dal proprio browser.

    Veniamo al problema specifico.

    La query scrivila così
    Codice PHP:
    $query "INSERT INTO registro-utenti (email,password,cognome,nome,eta,indirizzo,telefono,web) VALUES('".$_POST['email']."','".$_POST['password']."','".$_POST['cognome']."','".$_POST['nome']."','".$_POST['eta']."','".$_POST['indirizzo']."','".$_POST['telefono']."','".$_POST['web']."')"
    Il campo eta del db è di tipo INT?
    In tal caso la variabile per l'età non racchiuderla tra apici, così: $_POST['eta'].

    Nel else del tuo controllo metti
    echo mysql_error();
    così se c'è un errore nella query te lo dice.

  4. #4

    un errore c'è...

    Originariamente inviato da satifal
    Prova a modificare lo script in questo modo:

    Codice PHP:
    $host '***************'
    $user '**************'
    $password '*****************'
    $database '***************';  

    $db mysql_connect($host$user$password) or die ("impossibile connettersi al server di tophost $host");  
    mysql_select_db($database$db) or die ("impossibile connettersi al server di tophost $host");   

    // aggiunge le informazioni di registrazione alla tabella registro-utenti del database 
    $query "INSERT INTO registro-utenti (email,password,cognome,nome,eta,indirizzo,telefono,web) VALUES('$_REQUEST[email]','$_REQUEST[password]','$_REQUEST[cognome]','$_REQUEST[nome]','$_REQUEST[eta]','$_REQUEST[indirizzo]','$_REQUEST[telefono]','$_REQUEST[web]')";

    echo 
    "Query: ".$query;

    mysql_query($query$db) or die ("Error: ".mysql_error());
    mysql_close($db); 
    e vedi se ti restituisce qualche messaggio di errore.
    Ciao e grazie, ho provato a modificare seguendo il tuo consiglio, lerrore che viene fuoti è questo:


    Query: INSERT INTO registro-utenti (email,password,cognome,nome,eta,indirizzo,telefon o,web) VALUES('gigino@libero.com','gigino','nostro','gigi no','36-40','Via Mazzini 19, 70100 - Milano (MI) - Italia','3333344555','')Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-utenti (email,password,cognome,nome,eta,indirizzo,telefon o,web) VALUES('gigino@' at line 1

    cosa vuol, dire?

  5. #5
    Grazie anche a te Alhazred, avevo già provato a sostituire i $_RERQUEST con i $_POST, ma il risultato era uguale.
    Nel codice che mi passi, dopo VALUES( c'è un apice, poi doppie apici, poi un punto, ed il valore fra le par. graffe è fra apici, giusto?

    Io l'ho modificato così ma niente
    Codice PHP:
    $db mysql_connect($host$user$password) or die ("impossibile connettersi al server di tophost $host");  
    mysql_select_db($database$db) or die ("impossibile connettersi al server di tophost $host"); 

     
    // aggiunge le informazioni di registrazione alla tabella registro-utenti del database 

    $query "INSERT INTO registro-utenti (email,password,cognome,nome,eta,indirizzo,telefono,web) VALUES('".$_POST['email']."','".$_POST['password']."','".$_POST['cognome']."','".$_POST['nome']."','".$_POST['eta']."','".$_POST['indirizzo']."','".$_POST['telefono']."','".$_POST['web']."')";          
    if (!
    mysql_query($query$db)) 

    echo(
    "Attenzione, non &egrave; possibile inserire il record <a href=\"javascript:history.back(1);\"><img src=\"../images/rivedi.png\"></a>"); 
    }  
    else 

    echo 
    mysql_error(); 

    mysql_close($db); 

  6. #6
    Come si evince dal messaggio di errore:

    codice:
    ...You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-utenti ...
    il problema è il trattino "-" nel nome della tabella. Infatti esso causa problemi con le query eseguite in PHP. Puoi risolvere il problema cambiando il nome della tabella in registro_utenti oppure inserendo gli apici "`" (non l'apice semplice ') nella query:

    Codice PHP:
    ...
    $query "INSERT INTO `registro-utenti` (email,password,cognome,nome,eta,indirizzo,telefono,web) VALUES('$_REQUEST[email]','$_REQUEST[password]','$_REQUEST[cognome]','$_REQUEST[nome]','$_REQUEST[eta]','$_REQUEST[indirizzo]','$_REQUEST[telefono]','$_REQUEST[web]')";
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    modificato così:

    Codice PHP:
    // aggiunge le informazioni di registrazione alla tabella registro-utenti del database 
    $query "INSERT INTO registro_utenti (email, password, cognome, nome, eta, indirizzo, telefono, web) VALUES('$_REQUEST[email]', '$_REQUEST[password]', '$_REQUEST[cognome]', '$_REQUEST[nome]', '$_REQUEST[eta]', '$_REQUEST[indirizzo]', '$_REQUEST[telefono]', '$_REQUEST[web]')";          
    echo 
    "Query: ".$query;  
    mysql_query($query$db) or die ("Error: ".mysql_error());  
    mysql_close($db); 
    questo è l'errore

    Query: INSERT INTO registro_utenti (email,password,cognome,nome,eta,indirizzo,telefon o,web) VALUES('gigino@libero.com','gigetto','nostro','gig ino','36-40','Via Mazzini 19, 70100 - Milano (MI) - Italia','3333344555','www.scintilla.com')

    cosa fò?

  8. #8
    Originariamente inviato da eccoinsorgo
    modificato così:

    Codice PHP:
    // aggiunge le informazioni di registrazione alla tabella registro-utenti del database 
    $query "INSERT INTO registro_utenti (email, password, cognome, nome, eta, indirizzo, telefono, web) VALUES('$_REQUEST[email]', '$_REQUEST[password]', '$_REQUEST[cognome]', '$_REQUEST[nome]', '$_REQUEST[eta]', '$_REQUEST[indirizzo]', '$_REQUEST[telefono]', '$_REQUEST[web]')";          
    echo 
    "Query: ".$query;  
    mysql_query($query$db) or die ("Error: ".mysql_error());  
    mysql_close($db); 
    questo è l'errore

    Query: INSERT INTO registro_utenti (email,password,cognome,nome,eta,indirizzo,telefon o,web) VALUES('gigino@libero.com','gigetto','nostro','gig ino','36-40','Via Mazzini 19, 70100 - Milano (MI) - Italia','3333344555','www.scintilla.com')

    cosa fò?
    Non mi sembra ci siano errori. Quello che hai postato è semplicemente un echo della query che viene eseguita.

    Codice PHP:
    ...
    echo 
    "Query: ".$query
    ... 
    L'avevo inserito nel codice per controllare che ci fossero tutti i dati valorizzari. Ti basta commentare quella riga di codice.
    Hai controllato sul DB che il record venga effettivamente inserito?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9

    Scusa

    Scusa, adesso in effetti funziona, nel senso che inserisce i dati nella tabella.
    Ho fatto delle prove, provando a registrare utenti con la stessa mail, e con gli stessissimi dati, e purtroppo li registra.
    In questa tabella c'è anche un campo ID che è autoincrementale, in effetti per incrementare incrementa, però è impostato come chiave primaria. Quando ho creato la tabella, ho provato a mettere come primaria la email ma mi dava un messaggio di errore in fase di creazione.
    Dove sbaglio? Come posso correggere?

    E poi cosa significa commentare l'errore? come si fa? é qualche if che avevo inserito all'inizio?

    Ed un altra cosa sempre se puoi, per vedere il numero di utenti registrati, avevo copiato dal libro, questo codice php

    Codice PHP:
    $db mysql_connect($host$user$password) or die ("impossibile connettersi al server di tophost $host"); 
    mysql_select_db($database$db) or die ("impossibile connettersi al server di tophost $host"); 

    $query "select * from registro_utenti"
    $dbResult mysql_query($query$db); 
    $AffectedRows mysql_affected_rows($db); 

    print (
    "<h3>PROVA Accesso al database $database sul server di tophost $host</h3>"); print ("<h3>Username =$user</h3>"); 
    print (
    "<h3>Password = $password</h3>"); 
    print (
    "<h3>Query = $query</h3>"); 
    print (
    "<h2>Numero di record trovati: $Affected_Rows</h2>"); 
    mysql_close($db); 
    ma non mi dice neanche QUANTI sono gli utenti registrati dov'è l'errore?

    Avevo inoltre copiato del codice php dal libro che avrebbe dovuto restituirmi a video in una tabella la lista degli utenti registrati, con email, password, cognome, ecc. ma non funziona neanche quella....
    posso abusare della tua cortesia e competenza ancora?
    C'era una faccina di prostrazione?

  10. #10

    Re: Scusa

    Originariamente inviato da eccoinsorgo
    Ho fatto delle prove, provando a registrare utenti con la stessa mail, e con gli stessissimi dati, e purtroppo li registra.
    Per evitare ciò potresti, prima di effettuare l'insert, eseguire una select sull'email che stai per inserire. Se essa non restituisce record allora l'email non è in uso altrimenti non effettui l'insert:

    Codice PHP:
    $query "SELECT * FROM registro_utenti WHERE email='$_REQUEST[email]'";
    $result mysql_query($query$db) or die ("Error: ".mysql_error());  
    $rows mysql_num_rows($result);
    if (
    $rows == 0) {
        
    // Esegui la insert

    Originariamente inviato da eccoinsorgo
    E poi cosa significa commentare l'errore? come si fa? é qualche if che avevo inserito all'inizio?
    Non capisco a cosa ti riferisci.

    Originariamente inviato da eccoinsorgo
    Ed un altra cosa sempre se puoi, per vedere il numero di utenti registrati
    Codice PHP:
    $query "SELECT count(*) AS num_utenti FROM registro_utenti";
    $result mysql_query($query$db) or die ("Error: ".mysql_error());  
    $record mysql_fetch_array($result);
    echo 
    $record['num_utenti']; 
    oppure:

    Codice PHP:
    $query "SELECT * FROM registro_utenti";
    $result mysql_query($query$db) or die ("Error: ".mysql_error());  
    $rows mysql_num_rows($result);
    echo 
    $rows
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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 © 2026 vBulletin Solutions, Inc. All rights reserved.