Problema incremento database

Salve

ho creato  questo form http://www.sartoripatrizio.it/scheda4.htm che invia i dati ad una pagina php di cui allego codice

<?php
$database = "miodatabase";
$connessione = mysql_connect('localhost', "******", "") or die ("Server non trovato");
mysql_select_db($database, $connessione);

$errore = "no"; 
$successo = "ok";

if(isset($_POST['nome'])){
$nome = $_POST['nome'];
} else{
$nome = "";
}
if(isset($_POST['provenienza'])){
$provenienza = $_POST['provenienza'];
} else{
$provenienza = "";
}
if(isset($_POST['citta'])){
$citta = $_POST['citta'];
} else{
$citta = "";
}
if(isset($_POST['eta'])){
$eta = $_POST['eta'];
} else{
$eta = "";
}

if(isset($_POST['peso'])){
$peso = $_POST['peso'];
} else{
$peso = "";
}
if(isset($_POST['altezza'])){
$altezza = $_POST['altezza'];
} else{
$altezza = "";
}
if(isset($_POST['colore_occhi'])){
$colore_occhi = $_POST['colore_occhi'];
} else{
$colore_occhi = "";
}
if(isset($_POST['colore_capelli'])){
$colore_capelli = $_POST['colore_capelli'];
} else{
$colore_capelli = "";
}
if(isset($_POST['stato_civile'])){
$stato_civile = $_POST['stato_civile'];
} else{
$stato_civile = "";
}
if(isset($_POST['figli'])){
$figli = $_POST['figli'];
} else{
$figli = "";
}
if(isset($_POST['fuma'])){
$fuma = $_POST['fuma'];
} else{
$fuma = "";
}
if(isset($_POST['beve'])){
$beve = $_POST['beve'];
} else{
$beve = "";
}
if(isset($_POST['animali'])){
$animali = $_POST['animali'];
} else{
$animali = "";
}
if(isset($_POST['religione'])){
$religione = $_POST['religione'];
} else{
$religione = "";
}
if(isset($_POST['educazione'])){
$educazione = $_POST['educazione'];
} else{
$educazione = "";
}
if(isset($_POST['occupazione'])){
$occupazione = $_POST['occupazione'];
} else{
$occupazione = "";
}
if(isset($_POST['hobbies'])){
$hobbies = $_POST['hobbies'];
} else{
$hobbies = "";
}
if(isset($_POST['lingue_parlate'])){
$lingue_parlate = $_POST['lingue_parlate'];
} else{
$lingue_parlate = "";
}
if(isset($_POST['descrizione'])){
$descrizione = $_POST['descrizione'];
} else{
$descrizione = "";
}
if(isset($_POST['commenti'])){
$commenti = $_POST['commenti'];
} else{
$commenti = "";
}
if($nome!="" && $provenienza!="" && $citta!="" && $eta!="" && $peso!="" && $altezza!="" && $colore_occhi!="" && $colore_capelli!="" && $stato_civile!="" && $figli!="" && $fuma!="" && $beve!="" && $animali!="" && $religione!="" && $educazione!="" && $occupazione!="" && $hobbies!="" && $lingue_parlate!="" && $descrizione!="" && $commenti!=""){
$query = "INSERT INTO nometabella (nome, provenienza, citta, eta, peso, altezza, colore_occhi, colore_capelli, stato_civile, figli, fuma, beve, animali, religione, educazione, occupazione, hobbies, lingue_parlate, descrizione, commenti) VALUES('$nome', '$provenienza', '$citta', '$eta', '$data', '$peso', '$altezza', '$colore_occhi', '$colore_capelli', '$stato_civile', '$figli', '$fuma', '$beve', '$animali', '$religione', '$educazione', '$occupazione', '$hobbies', '$lingue_parlate', '$descrizione', '$commenti')"; 
}
if (!$connessione) {
print '&msg='.$errore;
exit;
} else {
mysql_query($query);
print '&msg='.$successo;
exit;
}

?>

Ora quando invio i dati inseriti nel form mi da msg=ok ma il database non viene incrementato. Dove ho sbagliato? :-\

inviato 10 anni fa
gibon
X 0 X

Nel tuo codice non controlli l'esito della query ma solo quello della connessione.

Al posto di

mysql_query($query);

metti:

$risultato = mysql_query($query);

if (!$risultato) {

   die("<pre><b>Errore nella query:</b>\n\n$query\n\n<b>" . mysql_error() . '</b></pre>');

}

Per trovare il problema potrebbe tornarti utile anche abilitare la visualizzazione degli errori di tipo NOTICE. Basta mettere all'inizio dello script:

error_reporting(E_ALL);

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

ciao Gianni

con le tue modifiche che mi hai suggerito ora mi da questo messaggio

Notice: Undefined variable: query in /home/sartorip/public_html/recepisci4.php on line 119

Notice: Undefined variable: query in /home/sartorip/public_html/recepisci4.php on line 121

Errore nella query:

Query was empty

Spero di aver modificato in maniera corretta, ora il codice è questo

if (!$connessione) {
print '&msg='.$errore;
exit;
} else {
$risultato = mysql_query($query);//riga 119
if (!$risultato) {
   die("<pre><b>Errore nella query:</b>\n\n$query\n\n<b>" . mysql_error //riga 121() . '</b></pre>');
}

print '&msg='.$successo;
exit;
}

?>
risposto 10 anni fa
gibon
X 0 X

adesso il problema è chiaro: costruisci la query (inserendola nella variabile $query) solo se tutti i campi sono stati riempiti. Però esegui la query in ogni caso! Gli errori infatti dicono che la variabile $query non è stata inizializzata (Notice: Undefined variable: query) e quindi la query lanciata fallisce (Query was empty)

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

adesso il problema è chiaro: costruisci la query (inserendola nella variabile $query) solo se tutti i campi sono stati riempiti. Però esegui la query in ogni caso! Gli errori infatti dicono che la variabile $query non è stata inizializzata (Notice: Undefined variable: query) e quindi la query lanciata fallisce (Query was empty)

 :bye:

 :o

ma la query non è questa?

if($nome!="" && $provenienza!="" && $citta!="" && $eta!="" && $peso!="" && $altezza!="" && $colore_occhi!="" && $colore_capelli!="" && $stato_civile!="" && $figli!="" && $fuma!="" && $beve!="" && $animali!="" && $religione!="" && $educazione!="" && $occupazione!="" && $hobbies!="" && $lingue_parlate!="" && $descrizione!="" && $commenti!=""){

$query = "INSERT INTO miatabella (nome, provenienza, citta, eta, peso, altezza, colore_occhi, colore_capelli, stato_civile, figli, fuma, beve, animali, religione, educazione, occupazione, hobbies, lingue_parlate, descrizione, commenti) VALUES('$nome', '$provenienza', '$citta', '$eta', '$data', '$peso', '$altezza', '$colore_occhi', '$colore_capelli', '$stato_civile', '$figli', '$fuma', '$beve', '$animali', '$religione', '$educazione', '$occupazione', '$hobbies', '$lingue_parlate', '$descrizione', '$commenti')";

}

risposto 10 anni fa
gibon
X 0 X

quella è semplicemente la costruzione di una stringa contenente la query, assegnata alla variabile $query.

La query viene inviata a MySQL con l'istruzione mysql_query a cui viene passata la stringa $query

Come puoi vedere nel tuo codice, la stringa che costituisce la query viene creata solo se ci sono tutti i dati (if ...) mentre la query viene inviara a MySQL sempre

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

quella è semplicemente la costruzione di una stringa contenente la query, assegnata alla variabile $query.

La query viene inviata a MySQL con l'istruzione mysql_query a cui viene passata la stringa $query

Come puoi vedere nel tuo codice, la stringa che costituisce la query viene creata solo se ci sono tutti i dati (if ...) mentre la query viene inviara a MySQL sempre

Gianni

non so come inviare una query a MySql, è da poco che mi sono avvicinato a PHP, mi puoi dire come devo fare o al limite postarmi gentilmente un articolo che mi spieghi come devo operare?  :-[

risposto 10 anni fa
gibon
X 0 X

Ecco un esempio di connessione a MySQL ed invio query:

<?php

$link = mysql_connect('localhost', 'db_nome_utente', 'db_password');

if (!$link) {
   die('Impossibile connettersi al server: ' . mysql_error());
}

$db_selected = mysql_select_db($conf['db_nome_database']);

if (!$db_selected) {
   die('Impossibile selezionare il database: ' . mysql_error());
}

$query = "INSERT ...";
             
$risultato = mysql_query($query);
if (!$risultato) {
       die("<pre><b>Errore nella query:</b>\n\n$query\n\n<b>" . mysql_error() . '</b></pre>');
}

?>

modifica i dati della funzione mysql_connect in modo che rispettino la tua configurazione

se la query è una SELECT dovrai estrarre i dati che ti restituisce. Appena dopo la query:

while($tmp = mysql_fetch_array($risultato))

{

   echo $tmp['nome_campo'];

}

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

La pagina.php della query mi ha evidenziato un errore. Avevo inserito un valore in + che non esisteva.

Però l'incremento del db non c'è stato in quanto successivamente  la pagina mi ha dato quest'altro errore

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/miodominio/public_html/chiedi.php on line 16

questo è il codice dove indico la linea 16

$query = "INSERT INTO miatabella (nome, .....
while($tmp = mysql_fetch_array($risultato)) // <----- linea 16
{
   echo $tmp['religione']; 
}
             
$risultato = mysql_query($query);
if (!$risultato) {
       die("<pre><b>Errore nella query:</b>\n\n$query\n\n<b>" . mysql_error() . '</b></pre>');
}
?>

io credo comunque che l'errore sia nella pagina html nei vari elenchi/menu a cascata dove l'utente sceglie le varie risposte che gli vengono presentate, risposte che la pagina.php non recepisce

Il codice di uno di questi menu/elenco è il seguente

<select name="religione" id="religione">
            <option value=>NESSUNA/AGNOSTICA</option>
            <option value=>ATEA</option>
            <option value=>CATTOLICA</option>
            <option value=>ORTODOSSA</option>
            <option value=>LUTERANA</option>
            <option value=>AVVENTISTA</option>
            <option value=>MUSSULMANA</option>
            <option value=>TESTIMONE DI GEOVA</option>
            <option value=>BUDDISTA</option>
          </select>
          RELIGIONE </p>
        <p>

...è esatto il codice? e se lo è come farlo recepire alla pagina.php? nella stringa è sufficiente richiamare 'religione' o devo aggiungere anche i  nomi di tutti i vari tipi presenti in elenco? :-[

Grazie!  :bye:

risposto 10 anni fa
gibon
X 0 X

come ho detto nel post precedente, la fetch ovvero l'estrazione dei risultati di una query, si effettua SOLO se la query è di tipo SELECT (ed in altri rari casi).

Tu invece hai cercato di estrarre i dati restituiti da una query INSERT che ovviamente non restituisce dati (stai inserendo, non estraendo) pertanto ricevi quell'errore.

Inoltre hai provato a fare la fetch prima di lanciare la query (mysql_query). Con le query di tipo SELECT (ma non è questo il caso) la fetch va fatta dopo aver eseguito la query (mysql_query)

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda