Non invia i dati al database!

  • Creatore Discussione Creatore Discussione the_boss
  • Data di inizio Data di inizio

the_boss

Utente Attivo
21 Feb 2010
53
0
0
ho provato a creare una tabella e inserire i dati in un altra tabella ma non va! ecco l'intero codice:

PHP:
?php
$rnome=$_POST['rnome'];
$rpass=$_POST['rpass'];
$rpokemon=$_POST['rpokemon'];
$rmail=$_POST['rmail'];


$connessione=mysql_connect("localhost","pkmnaction","****");
$cercanome=mysql_query("SELECT  `Nome` FROM  `my_pkmnaction`.`utenti` WHERE  `Nome` = '".$rnome."'",$connessione);
$cercamail=mysql_query("SELECT  `Mail` FROM  `my_pkmnaction`.`utenti` WHERE  `Mail` = '".$rmail."'",$connessione);
$risnome=mysql_result($cercanome,0);
$rismail=mysql_result($cercamail,0);
if ($rnome!="") { if ($rpass!="") { if ($rpokemon!="") { if ($rpokemon!="domanda") { if ($rpokemon!="no") { if ($rmail!="") { if ($rnome!=$risnome) { if ($rmail!=$rismail) {
$query=mysql_query("INSERT INTO `utenti` (`Nome` ,`Password` ,`Mail` ,`Soldi` ,`Pokemon1` ,`Poke Ball` ,`Pozione`) VALUES ('".$rnome."',  '".$rpass."', '".$rmail."', '2000', '".$rpokemon."', '5', '1')",$connessione); 

$creatab=mysql_query("CREATE TABLE `us-".$rnome."` (`Id` INT( 4 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `Nome` VARCHAR( 20 ) NOT NULL,`Livello` INT( 10 ) NOT NULL,`Ps` INT( 10 ) NOT NULL ,`Ps Max` INT( 10 ) NOT NULL,`Exp` INT( 10 ) NOT NULL,`Exp Max` INT( 10 ) NOT NULL,`Atk` INT( 10 ) NOT NULL, `Def` INT( 10 ) NOT NULL, `Mossa1` VARCHAR( 20 ) NOT NULL, `Toglie1` INT( 10 ) NOT NULL, `Mossa2` VARCHAR( 20 ), `Toglie2` INT( 10 ), `Mossa3 VARCHAR( 20 ), `Toglie3` INT( 10 ), `Mossa4` VARCHAR( 20 ), `Toglie4` INT( 10 )) ",$connessione);

$cercaid=mysql_query("SELECT  `Id` FROM  `my_pkmnaction`.`utenti` WHERE  `Nome` = '".$rnome."' AND  `Password` = '".$rpass."'",$connessione);
$risid=mysql_result($cercaid,0);


// INIZIO MESSAGGIO
$boundary = "==Boundary_".md5(time()); 
$header = "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/alternative;\n";
$header .= " boundary=\"$boundary\";\n\n";

// Parte del messaggio solo testo
$msg = "--$boundary\n";
$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= " Ciao, ".$rnome."!\n Grazie per esserti registrato su Pokemon action!\n\n I tuoi dati di Login sono:\n Nome: ".$rnome."\n Password: ".$rpass."\n Clicca il link sottostante per confermare la registrazione:\n http://pkmnaction.altervista.org/conferma.php?id=".$risid."\n\n\n Se non ti sei registrato tu, conferma l'account, connettiti con i dati soprastanti, vai su Profilo e cancella l'account.\n\n\n Lo staff di Pokemon Action ti ringrazia.\n\n\n http://pkmnaction.altervista.org\n\n";

// Parte del messaggio HTML
$msg .= "--$boundary\n";
$msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= "Ciao ".$rnome."!<br>Grazie per esserti registrato su <a href='http://pkmnaction.altervista.org'>Pokemon Action</a>!<br>I tuoi dati di Login sono:<br>Nome: ".$rnome."<br>Password: ".$rpass."<br><br>
<a href='http://pkmnaction.altervista.org/conferma.php?id=".$risid."'>Clicca qui per confermare la registrazione!</a><br><br><br>Se non ti sei registrato tu, conferma l'account, connettiti al sito con i dati soprastanti, vai su Profilo e cancella l'account.<br><br><br><br>Lo staff di <a href='http://pkmnaction.altervista.org'>Pokemon Action</a> ti ringrazia.\n";
$oggetto="Registrazione su Pokemon Action";

$msg .= "--$boundary--\n";  
// FINE MESSAGGIO
mail($rmail,$oggetto,$msg,$header);
}
else {
echo "Questa Mail è gia stata usata!";
}

}
else {
echo "Questo Nome è gia stato usato!";
}

}
else {
echo "Devi compilare tutti i campi! Non hai compilato la Mail!";
}

}
else {
echo "Devi compilare tutti i campi! Non hai scelto un Pokemon!";
}

}
else {
echo "Devi compilare tutti i campi! Non hai selezionato un Pokemon!";
}

}
else {
echo "Devi compilare tutti i campi! Non hai selezionato un Pokemon!";
}

}
else {
echo "Devi compilare tutti i campi! Non hai compilato la Password!";
}

}
else {
echo "Devi compilare tutti i campi! Non hai compilato il Nome!";
}
 
Ultima modifica:
aggiungi un
PHP:
or die mysql_error();
davanti a tutte le query, in questo modo puoi visualizzare eventuali errori.
 
Mi da errore proprio quel codice, dato che una query non è un if e or die va messo dopo un if... credo... oppure spiegami meglio, devo metterlo comunque il punto e virgola??
 
ciao
scusate l'intromissione, ma se non inserisce i dati può essere che la query di insert sia errata.
secondo il mio modesto parere, soprattutto quando le query sono lunghe, io dividerei la sringa dal comando di inserimento.
esempio:
PHP:
<?php
//....
$query_stringa="INSER INTO....stringa lunga una bibbia....";
//un bel var_dump per vedere se la stringa risulta quello che dovrebbe essere
var_dump($query_stringa);
//poi il comando
$risultato=mysql_query($query_stringa) or die...;
//.....
?>
talvolta per risparmiare mezza riga di codice si perdono giornate per capire perche l'insert non inserisce.

p.s.
analogo discorso per le query di select e update
poi i vardump o si tolgono o si commentano (io normalmente li commento per ricordarmi dove mi sono inghippato)
 
Mi da errore proprio quel codice, dato che una query non è un if e or die va messo dopo un if... credo... oppure spiegami meglio, devo metterlo comunque il punto e virgola??
devi procedere in questo modo, ad esempio:
PHP:
$cercanome=mysql_query("SELECT  `Nome` FROM  `my_pkmnaction`.`utenti` WHERE  `Nome` = '".$rnome."'",$connessione) or die(mysql_error());
 
ciao
mi intrometto di nuovo, forse dicendo una cavolata (tanto dice alex una più una meno0:)).
ma non manca dopo $connessione

PHP:
//..........
$connessione=mysql_connect("localhost","pkmnaction","****");

$seleziona_db = mysql_select_db("pinco_pallo") or die (mysql_error());
//.....
la selzione del db?
 
i var_dump non so farli.. comunque ho provato a mettere echo $rnome; fuori da tutti gli if e funziona, dentro invece non funziona, quindi non entra neanche nell'if, eppure non entra neanche negli else...
vi posto tutto il codice:

PHP:
<?php
$rnome=$_POST['rnome'];
$rpass=$_POST['rpass'];
$rpokemon=$_POST['rpokemon'];
$rmail=$_POST['rmail'];


$connessione=mysql_connect("localhost","pkmnaction","*****") or die(mysql_error());
$seleziona_db = mysql_select_db("my_pkmnaction") or die (mysql_error()); 
$cercanome=mysql_query("SELECT  `Nome` FROM  `my_pkmnaction`.`utenti` WHERE  `Nome` = '".$rnome."'",$connessione) or die(mysql_error());;
$cercamail=mysql_query("SELECT  `Mail` FROM  `my_pkmnaction`.`utenti` WHERE  `Mail` = '".$rmail."'",$connessione);
$risnome=mysql_result($cercanome,0) or die(mysql_error());
$rismail=mysql_result($cercamail,0) or die(mysql_error());
if ($rnome!="") { if ($rpass!="") { if ($rpokemon!="") { if ($rpokemon!="domanda") { if ($rpokemon!="no") { if ($rmail!="") { if ($rnome!=$risnome) { if ($rmail!=$rismail) {

$query=mysql_query("INSERT INTO `utenti` (`Nome` ,`Password` ,`Mail` ,`Soldi` ,`Pokemon1` ,`Poke Ball` ,`Pozione`) VALUES ('".$rnome."',  '".$rpass."', '".$rmail."', '2000', '".$rpokemon."', '5', '1')",$connessione) or die(mysql_error());

$creatab=mysql_query("CREATE TABLE `us-".$rnome."` (`Id` INT( 4 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `Nome` VARCHAR( 20 ) NOT NULL,`Livello` INT( 10 ) NOT NULL,`Ps` INT( 10 ) NOT NULL ,`Ps Max` INT( 10 ) NOT NULL,`Exp` INT( 10 ) NOT NULL,`Exp Max` INT( 10 ) NOT NULL,`Atk` INT( 10 ) NOT NULL, `Def` INT( 10 ) NOT NULL, `Mossa1` VARCHAR( 20 ) NOT NULL, `Toglie1` INT( 10 ) NOT NULL, `Mossa2` VARCHAR( 20 ), `Toglie2` INT( 10 ), `Mossa3 VARCHAR( 20 ), `Toglie3` INT( 10 ), `Mossa4` VARCHAR( 20 ), `Toglie4` INT( 10 )) ",$connessione) or die(mysql_error());

$cercaid=mysql_query("SELECT  `Id` FROM  `my_pkmnaction`.`utenti` WHERE  `Nome` = '".$rnome."' AND  `Password` = '".$rpass."'",$connessione) or die(mysql_error());
$risid=mysql_result($cercaid,0) or die(mysql_error());

// INIZIO MESSAGGIO
$boundary = "==Boundary_".md5(time()); 
$header = "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/alternative;\n";
$header .= " boundary=\"$boundary\";\n\n";

// Parte del messaggio solo testo
$msg = "--$boundary\n";
$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= " Ciao, ".$rnome."!\n Grazie per esserti registrato su Pokemon action!\n\n I tuoi dati di Login sono:\n Nome: ".$rnome."\n Password: ".$rpass."\n Clicca il link sottostante per confermare la registrazione:\n http://pkmnaction.altervista.org/conferma.php?id=".$risid."\n\n\n Se non ti sei registrato tu, conferma l'account, connettiti con i dati soprastanti, vai su Profilo e cancella l'account.\n\n\n Lo staff di Pokemon Action ti ringrazia.\n\n\n http://pkmnaction.altervista.org\n\n";

// Parte del messaggio HTML
$msg .= "--$boundary\n";
$msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= "Ciao ".$rnome."!<br>Grazie per esserti registrato su <a href='http://pkmnaction.altervista.org'>Pokemon Action</a>!<br>I tuoi dati di Login sono:<br>Nome: ".$rnome."<br>Password: ".$rpass."<br><br>
<a href='http://pkmnaction.altervista.org/conferma.php?id=".$risid."'>Clicca qui per confermare la registrazione!</a><br><br><br>Se non ti sei registrato tu, conferma l'account, connettiti al sito con i dati soprastanti, vai su Profilo e cancella l'account.<br><br><br><br>Lo staff di <a href='http://pkmnaction.altervista.org'>Pokemon Action</a> ti ringrazia.\n";
$oggetto="Registrazione su Pokemon Action";

$msg .= "--$boundary--\n";  
// FINE MESSAGGIO

mail($rmail,$oggetto,$msg,$header);

}
else {
echo "Questa Mail è gia stata usata!";
}

}
else {
echo "Questo Nome è gia stato usato!";
}

}
else {
echo "Devi compilare tutti i campi! Non hai compilato la Mail!";
}

}
else {
echo "Devi compilare tutti i campi! Non hai scelto un Pokemon!";
}

}
else {
echo "Devi compilare tutti i campi! Non hai selezionato un Pokemon!";
}

}
else {
echo "Devi compilare tutti i campi! Non hai selezionato un Pokemon!";
}

}
else {
echo "Devi compilare tutti i campi! Non hai compilato la Password!";
}

}
else {
echo "Devi compilare tutti i campi! Non hai compilato il Nome!";
}
 
ciao
dato che lo script è un poco incasinato per prima cosa verifica se i dati post ci sono (ecco come si usano i var_dump)

PHP:
$rnome=$_POST['rnome'];
var_dump($_POST['rnome']);
$rpass=$_POST['rpass']; 
var_dump($_POST['rpass']);
$rpokemon=$_POST['rpokemon'];
var_dump($_POST['rpokemon']);
$rmail=$_POST['rmail'];
var_dump($_POST['rmail']);
//......

se (es.) il primo ti risulta NULL vuol dire che c'è un errore nella trasmissione del $_POST['rnome'] e devi verificare perchè

poi una volta trovati se ci sono gli errori li togli o li commenti

p.s.
togli tutti quei backtick dalle query non mi sembra che stai usando nomi riservati di mysql come nomi
 
allora i dati vengono inviati, li ho verificati gia da tempo fa con echo e arrivano giusti... ma con var_dump dove va a finire il risultato??
 
ciao

da manuale mysql

I nomi
Bisogna fare attenzione quando si utilizzano nomi che sono parole riservate di MySQL: supponiamo ad esempio di volere dare ad una tabella il nome select. In questo caso è necessario fare riferimento, ogni volta, al nome della tabella mettendolo fra 'backtick', così: CREATE TABLE `select`... Questa regola vale per tutti gli identificatori, cioè database, tabelle, colonne e indici.
I backtick si ottengono digitando sulla tastiera alt+96 (tastierino numerico).


quindi i backtick ti servono solo per i nomi che sono parole riservate, che tra l’altro a mio giudizio è meglio evitare.

l’output del var dump lo vedi a monitor, es. se fai uno script così

PHP:
<?php
$pinco="aaaa";
var_dump($pinco);
?>
monitor vedrai

string(4) aaaa
l’istruzione var_dump è comodissima per fare il debug di uno script, altro esempio:

PHP:
<?php
//…….
$id=$_POST['id'];
var_dump($_POST['id']);
//……
$query_str="SELECT * FROM tabella WHERE id=$id";
var_dump($query_str);
$result=mysql_query($query_str);
var_dump($result);
//…..
?>
a monitor potrai avere diverse visualizzazioni in funzione se è giusto o sbagliato
es. se non trasmetti il post potrai vedere
NULL
string(31) SELECT * FROM tabella WHERE id=
FALSE
Se invece è tutto giusto (ipotesi l’id=22) vedrai
String(2) 22
string(33) SELECT * FROM tabella WHERE id=22
RESOURCE
comprì?
 
l'ho fatto in tutte le variabili e mi esce:

PHP:
string(9) "the_boss!" string(6) "***" string(7) "Pikachu" string(15) "www.***@live.it" resource(2) of type (mysql link) bool(true) resource(3) of type (mysql result) resource(4) of type (mysql result)


non ci capisco niente xD
 
ciao
visto così "sembrerebbe" che sia tutto a posto
dimenticavo
l'unica cosa è dividere le query (come ti ho indicato) e vedere se la query stringa viene giusta
 
Ultima modifica:
ma non è lì il punto. il punto è che non entra ne nell'if ne nell'else... infatti ho provato a scrivere echo "ciao" fuori dall' if e funziona ma dentro no...
 
Il tuo script è disordinato, il database è fatto malissimo, usi delle librerie antiquate...
Prova a modificarlo così:
PHP:
<?php
$errors = array();

function show_errors()
{
    global $errors;

    if (count($errors) > 0) {
        echo "<h1>Errore</h1>";
        echo "<p>Si sono verificati i seguenti errori:</p>";
        echo "<ul>";

        foreach ($errors as $err) {
            echo "\t<li>{$err}</li>\n";
        }

        echo "</ul>";
        exit();
    }
}

$rnome    = isset($_POST['rnome'])    ? trim($_POST['rnome'])    : '';
$rpass    = isset($_POST['rpass'])    ? trim($_POST['rpass'])    : '';
$rpokemon = isset($_POST['rpokemon']) ? trim($_POST['rpokemon']) : '';
$rmail    = isset($_POST['rmail'])    ? trim($_POST['rmail'])    : '';

try {
    $db = new PDO('mysql:host=localhost;dbname=?', 'pkmnaction', 'password');
}
catch (PDOException $e) {
    die($e->getMessage());
}

if ($rnome == '') {
    $errors[] = 'Non hai compilato il nome!';
}
if ($rpass == '')  {
    $errors[] = 'Non hai compilato la password!';
}
if ($rpokemon == '' || $rpokemon == 'domanda' || $rpokemon == 'no') {
    $errors[] = 'Non hai selezionato un pokémon!';
}
if (!filter_var($rmail, FILTER_VALIDATE_EMAIL)) {
    $errors[] = 'Non hai inserito una e-mail valida!';
}

show_errors();

$stm = $db->prepare('SELECT COUNT(*) FROM utenti WHERE Nome = ?');
$stm->execute(array($rnome));

if ($stm->fetchColumn() == '1') {
    $errors[] = 'Questo nome è già stato selezionato.';
}

$stm = $db->prepare('SELECT COUNT(*) FROM utenti WHERE Mail = ?');
$stm->execute(array($rmail));

if ($stm->fetchColumn() == '1') {
    $errors[] = 'Questa e-mail è già stata selezionata.';
}

show_errors();

$stm = $db->prepare('INSERT INTO utenti (Nome, Password, Mail, Soldi, Pokemon1, Poke Ball, Pozione) VALUES (?, ?, ?, ?, ?, ?, ?)');
$stm->execute(array($rnome, $rpass, $rmail, 2000, $rpokemon, 5, 1));

$db->query("CREATE TABLE us-{$rnome} (
    Id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Nome VARCHAR(20) NOT NULL,
    Livello INT(10) NOT NULL,
    Ps INT(10) NOT NULL,
    `Ps Max` INT(10) NOT NULL,
    Exp INT(10) NOT NULL,
    `Exp Max` INT(10) NOT NULL,
    Atk INT(10) NOT NULL,
    Def INT(10) NOT NULL,
    Mossa1 VARCHAR(20) NOT NULL
    Toglie1 INT(10) NOT NULL,
    Mossa2 INT(10) NOT NULL,
    Toglie2 INT(10) NOT NULL,
    Mossa3 INT(10) NOT NULL,
    Toglie3 INT(10) NOT NULL,
    Mossa4 INT(10) NOT NULL,
    Toglie4 INT(10) NOT NULL
)");

$stm = $db->prepare('SELECT Id FROM utenti WHERE Nome = ? AND Password = ?');
$stm->execute(array($rnome, $rpass));

$risid = $stm->fetchColumn();

$boundary = "==Boundary_".md5(time());

$header = "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/alternative;\n";
$header .= " boundary=\"{$boundary}\";\n\n";

$msg = "--{$boundary}\n";
$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= " Ciao, {$rnome}!
Grazie per esserti registrato su Pokemon action!

I tuoi dati di Login sono:
Nome: ".$rnome."
Password: ".$rpass."

Clicca il link sottostante per confermare la registrazione:
http://pkmnaction.altervista.org/conferma.php?id=".$risid."


Se non ti sei registrato tu, conferma l'account, connettiti con i dati soprastanti, vai su Profilo e cancella l'account.


Lo staff di Pokemon Action ti ringrazia.


http://pkmnaction.altervista.org";

// Parte del messaggio HTML
$msg .= "--{$boundary}\n";
$msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= "Ciao {$rnome}!<br>
Grazie per esserti registrato su <a href='http://pkmnaction.altervista.org'>Pokemon Action</a>!<br>
I tuoi dati di Login sono:<br>
Nome: {$rnome}<br>
Password: {$rpass}<br><br>


<a href='http://pkmnaction.altervista.org/conferma.php?id={$risid}'>Clicca qui per confermare la registrazione!</a><br><br><br>


Se non ti sei registrato tu, conferma l'account, connettiti al sito con i dati soprastanti, vai su Profilo e cancella l'account.<br><br><br><br>



Lo staff di <a href='http://pkmnaction.altervista.org'>Pokemon Action</a> ti ringrazia.";
$msg .= "--{$boundary}--\n";

$oggetto = 'Registrazione su Pokemon Action';

mail($rmail, $oggetto, $msg, $header);
?>
E d'ora in poi adotta sempre queste tecniche.
 
Ancora niente... non funziona, ho modificato il nome del db e la password nel codice ke mi hai dato ma ancora niente!
 

Discussioni simili