Problemi inserimento dati database tramite form

Paolo Fattoruso

Nuovo Utente
3 Feb 2013
14
0
0
Ciao a tutti è il mio primo post nel forum, sto provando a fare un sistema di votazione ma ho un problema non riesco ad inviare i dati al database.
inizialmente ho costruito il form dove è presente un menu a tendina che carica dei campi dal db ed ho aggiunto due input radio e il tasto di invio.
poi come vedete creo il tutto per effettuare l'insert ma al database non arriva nulla :confused:

Il codice che ho utilizzato è il seguente:
PHP:
<?php
$con = mysql_connect("localhost" , "Uname" , "PW");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("Database", $con);
$query = "SELECT username FROM avjos16_users";
$result = mysql_query($query);
?>
<h3>Feedback</h3>
<p>Vota il conducente o il passeggero con cui hai effettuato la corsa:</p>
<form method="post" action="">
<select name="select1">
<?php
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
?>
Username <option value="<?php echo $line['username'];?>"> <?php echo $line['username'];?> </option>

<?php
}
?>
</select><br><br>
Voto:<input type="radio" name="voti" value="negativo"> -1
<input type="radio" name="voti" value="positivo"> 1 <br><br>
</select>
<input type="submit" value="Vota" />
</form>


<?php
$con = mysql_connect("localhost" , "Uname" , "PW");
if (!$con)
{ die('Could not connect: ' . mysql_error()); }

mysql_select_db("Database", $con);

$voti=$_POST['voti'];
$username=$_POST['username'];
$vai=$_POST['submit'];
if (isset($vai)){
$query = "INSERT INTO avjos16_users VALUES ('$voti') WHERE username='username'";
$result = mysql_query($query);

echo mysql_error();
}
mysql_close();
?>
 
Ultima modifica di un moderatore:
Ciao,
il name della select dovrebbe essere "username" visto che poi recuperi il dato con $_POST['username']
in più qui hai dimenticato il $
PHP:
$query = "INSERT INTO avjos16_users VALUES ('$voti') WHERE username='username'";
username è una variabile
PHP:
$query = "INSERT INTO avjos16_users VALUES ('$voti') WHERE username='$username'";
 
L'insert non supporta la clausola where e inoltre non avrebbe senso intendevi forse fare un update?
 
per aggiornare un dato si usa UPDATE
hai un campo voto associato ad ogni username?
 
si hai ragione..fai conto è meno di un mese che utilizzo php mysql e mi sono fatto ingannare dal termine :D

ho modificato l'INSERT TO:
PHP:
$query = "INSERT INTO avjos16_users VALUES ('$voti') WHERE username='$username'";

con:
PHP:
$query = "UPDATE  'avjos16_users' SET  ('$voti') WHERE username='$username'";

ma nulla :hammer:
 
dovrebbe essere cosi
PHP:
$query = "UPDATE  'avjos16_users' SET  voto = voto + '$voti' WHERE username='$username'";
e cambia il value degli input
HTML:
Voto:<input type="radio" name="voti" value="-1"> -1
    <input type="radio" name="voti" value="1"> 1 <br><br>
sempre che il tuo campo si chiami voto e contenga un intero
 
Grazie ancora criric.
Visto che il mio campo si chiama voti.
Ho adatatto il tuo codice cambiando voto con voti.. ma il database non ne vuole sapere di aggiornarsi.
 
Grazie ancora criric.
Visto che il mio campo si chiama voti.
Ho adatatto il tuo codice cambiando voto con voti.. ma il database non ne vuole sapere di aggiornarsi.
Prova levando gli apostrofi a '$voti' e modificando cosi
PHP:
$query = "UPDATE  'avjos16_users' SET  voto = voto + ".(int)$voti." WHERE username='$username'";

inoltre rendi sicure le variabili, ciclando tutto $_POST
PHP:
foreach($_POST as $key => $value) $_POST[$key] = mysql_real_escape_string($value);
 
non cambia nulla.

ho provato tramite sql direttamente in phpMyAdimn con il seguente comando e funziona:
UPDATE avjos16_users SET voti=voti+1 WHERE username='luca'


faccio la stessa cosa effettuando (al codice di sopra) le modifiche da te indicate ma ancora nulla.
 
Risolto l'errore era sui seguenti campi:

PHP:
<input type="submit" value="Vota" />

con:

PHP:
<input type="submit" name="submit" value="Vota" />

e

PHP:
$username=$_POST['username'];

con

PHP:
$username=$_POST['select1'];

naturalmente ho effettuato anche le correzioni da te indicate al comando UPDATE :fonzie:
PHP:
$query = "UPDATE  avjos16_users SET  voti = voti + $voti WHERE username='$username'";

grazie per la disponibilità :fonzie:
 
moderatore ciao non so se posso scriverlo qui o devo creare un altra discussione.

vorrei sapere se esiste uno stesso codi di WP per JOOMLA:
PHP:
<?  global $current_user;
    get_currentuserinfo();
    $id = $current_user->ID;
    $user = $current_user->user_login;
    echo "Ciao $user !";
   ?>

ad esempio: in modo tale da vedere all'interno di un menu utente i campi solo da te (utente online) immessi
 
Vedo solo ora il messaggio
meglio se apri una nuova discussione
ciao
 

Discussioni simili