[hulp gevraagd]submit met radio
ik gisteren 5 uur lang naar een oplossing proberen te zoeken (en je raad het al) maar ik kwam er niet uit. nu is mijn vraag of jullie mijn kunnen helpen.
ik zit met het volgende probleem. zoals je hieronder ziet heb ik een formuliertje gemaakt voor een hot or not script. alleen wat ik nu wil is dat als ik op een radio button klik dat dan mijn formulier word verzonden en dat hij in de database 1 of 0 punten toewijst aan hot(als er op hot word gestemd) en het totaal.
mijn database ziet er als volgt uit:
votes:
id | hot | totaal
ik hoop dat jullie me een stukje kunnen helpen.
alvast bedankt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
ini_set('display_errors',1);
error_reporting(E_ALL&~E_NOTICE);
$con = mysql_connect('000','000','000');
mysql_select_db('000',$con);
$sql = 'SELECT *
FROM votes
WHERE id = " ' . $_GET['id'] . ' " ' ;
$res = mysql_query($sql);
while($row = mysql_fetch_array($res)){
echo ' <img src="'.$row['path'].'" /> ' ;
echo ' <br/><br/>' ;
echo ' numbers voted for hot : ' . $row['hot'] . ' <br/> ' ;
$not = $row['totaal'] - $row['hot'] ;
echo ' numbers voted for not : ' . $not . ' <br/> ' ;
echo ' total votes: ' . $row['totaal'] . '<br/>' ;
$gem = ($row['hot'] / $row['totaal']) * 100 ;
$afgerond = sprintf('%01.2f', $gem) ;
echo ' avarage score: '.$afgerond. '<br/><br/>' ;
}
$query = "SELECT COUNT(1) FROM votes";
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_row($result);
mysql_query('UPDATE votes SET hot WHERE id = '.$_GET['id'].'');
echo ' <form action="" method="post"> ' ;
echo ' HOT: <a href="?id='.rand(1,$row[0]).'"><input type="radio" onclick="submit" name="hot" value="1" /></a> ' ;
echo ' NOT: <a href="?id='.rand(1,$row[0]).'"><input type="radio" onclick="submit" name="not" value="0" /></a> ' ;
echo ' </form> ' ;
?>
ini_set('display_errors',1);
error_reporting(E_ALL&~E_NOTICE);
$con = mysql_connect('000','000','000');
mysql_select_db('000',$con);
$sql = 'SELECT *
FROM votes
WHERE id = " ' . $_GET['id'] . ' " ' ;
$res = mysql_query($sql);
while($row = mysql_fetch_array($res)){
echo ' <img src="'.$row['path'].'" /> ' ;
echo ' <br/><br/>' ;
echo ' numbers voted for hot : ' . $row['hot'] . ' <br/> ' ;
$not = $row['totaal'] - $row['hot'] ;
echo ' numbers voted for not : ' . $not . ' <br/> ' ;
echo ' total votes: ' . $row['totaal'] . '<br/>' ;
$gem = ($row['hot'] / $row['totaal']) * 100 ;
$afgerond = sprintf('%01.2f', $gem) ;
echo ' avarage score: '.$afgerond. '<br/><br/>' ;
}
$query = "SELECT COUNT(1) FROM votes";
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_row($result);
mysql_query('UPDATE votes SET hot WHERE id = '.$_GET['id'].'');
echo ' <form action="" method="post"> ' ;
echo ' HOT: <a href="?id='.rand(1,$row[0]).'"><input type="radio" onclick="submit" name="hot" value="1" /></a> ' ;
echo ' NOT: <a href="?id='.rand(1,$row[0]).'"><input type="radio" onclick="submit" name="not" value="0" /></a> ' ;
echo ' </form> ' ;
?>
Gewijzigd op 01/01/1970 01:00:00 door Simon
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
$con = mysql_connect('000','000','000') or die ('no connection');
mysql_select_db('000',$con) or die ('no db');
$sql = 'SELECT *
FROM votes
WHERE id = " ' . $_GET['id'] . ' " ' ; //onveilig
if (!$res = mysql_query($sql)) {
trigger_error (mysql_error ());
}
else {
while($row = mysql_fetch_array($res)){
echo ' <img src="'.$row['path'].'" /> ' ;
echo ' <br/><br/>' ;
echo ' numbers voted for hot : ' . $row['hot'] . ' <br/> ' ;
$not = $row['totaal'] - $row['hot'] ;
echo ' numbers voted for not : ' . $not . ' <br/> ' ;
echo ' total votes: ' . $row['totaal'] . '<br/>' ;
$gem = ($row['hot'] / $row['totaal']) * 100 ;
$afgerond = sprintf('%01.2f', $gem) ;
echo ' avarage score: '.$afgerond. '<br/><br/>' ;
}
$query = "SELECT COUNT(1) FROM votes";
if (!$result = mysql_query($query)) {
trigger_error (mysql_error ());
}
else {
$row = mysql_fetch_row($result);
mysql_query('UPDATE votes SET hot WHERE id = '.$_GET['id'].''); // onveilig. Deze query OOK controleren
echo ' <form action="" method="post"> ' ;
echo ' HOT: <a href="?id='.rand(1,$row[0]).'"><input type="radio" onclick="submit" name="hot" value="1" /></a> ' ;
echo ' NOT: <a href="?id='.rand(1,$row[0]).'"><input type="radio" onclick="submit" name="not" value="0" /></a> ' ;
echo ' </form> ' ;
}
}
?>
ini_set('display_errors',1);
error_reporting(E_ALL);
$con = mysql_connect('000','000','000') or die ('no connection');
mysql_select_db('000',$con) or die ('no db');
$sql = 'SELECT *
FROM votes
WHERE id = " ' . $_GET['id'] . ' " ' ; //onveilig
if (!$res = mysql_query($sql)) {
trigger_error (mysql_error ());
}
else {
while($row = mysql_fetch_array($res)){
echo ' <img src="'.$row['path'].'" /> ' ;
echo ' <br/><br/>' ;
echo ' numbers voted for hot : ' . $row['hot'] . ' <br/> ' ;
$not = $row['totaal'] - $row['hot'] ;
echo ' numbers voted for not : ' . $not . ' <br/> ' ;
echo ' total votes: ' . $row['totaal'] . '<br/>' ;
$gem = ($row['hot'] / $row['totaal']) * 100 ;
$afgerond = sprintf('%01.2f', $gem) ;
echo ' avarage score: '.$afgerond. '<br/><br/>' ;
}
$query = "SELECT COUNT(1) FROM votes";
if (!$result = mysql_query($query)) {
trigger_error (mysql_error ());
}
else {
$row = mysql_fetch_row($result);
mysql_query('UPDATE votes SET hot WHERE id = '.$_GET['id'].''); // onveilig. Deze query OOK controleren
echo ' <form action="" method="post"> ' ;
echo ' HOT: <a href="?id='.rand(1,$row[0]).'"><input type="radio" onclick="submit" name="hot" value="1" /></a> ' ;
echo ' NOT: <a href="?id='.rand(1,$row[0]).'"><input type="radio" onclick="submit" name="not" value="0" /></a> ' ;
echo ' </form> ' ;
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door simon
Je moet niet hem als $id aanroepen. Zo'n id moet altijd numeriek zijn -> Controleer daar dus ook op. (google bijv. eens op PHP check if variable is integer) En dan het 1e resultaat helpt je al wel verder.
Voor je vraag moet je een onclick functie maken. Wederom simpel te vinden via google. Javascript onclick form submit
EDIT:
en kan ik javascript zonder moeite in een .php bestand stoppen?
Gewijzigd op 01/01/1970 01:00:00 door simon
Quote:
Je moet niet hem als $id aanroepen. Zo'n id moet altijd numeriek zijn -> Controleer daar dus ook op. (google bijv. eens op PHP check if variable is integer) En dan het 1e resultaat helpt je al wel verder.
Het id dat je opzoekt moet altijd numeriek zijn -> Numeriek betekend dat het een getal moet zijn. Een getal/ nummer in PHP (en vele andere programmeer talen) is een integer.
En voor wat betreft JavaScript (js) in PHP -> Probeer het eens uit zou ik zeggen
(heb overigens op google gekeken voor die check. er staat overal wel goed bij hoe je het moet doen maar niet uitgelegd waarom en wat het verschil is.)
Het MOET een id zijn. Als je daar niet op controleerd, dan kan het voorkomen dat je SQL injection krijgt, waarmee iemand dingen met je database kan doen.
Input van "buitenaf" moet je nooit, maar dan ook nooit zomaar vertrouwen en in je database gooien!
Het verschil is dus dat die query niet wordt uitgevoerd, wanneer het geen nummer is dat is ingegeven als id. Je weet dan zeker dat er niet een text als ";DELETE FROM tabel" achter komt te staan, wat er (mogelijk) voor zou kunnen zorgen dat je tabel inene leeg is.
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
Robert_Deiman schreef op 06.11.2007 09:03:
Voor je vraag moet je een onclick functie maken. Wederom simpel te vinden via google. Javascript onclick form submit
Ik heb een voorbeeld van een form submit na een onchange van een select op mijn site staan. Die kun je ook bekijken.
maar moet ik dan die check over mijn gehele code zetten of alleen over mijn $_GET['id']?
edit:
@jan: ik ga even een kijkje op je voorbeeld nemen.
Gewijzigd op 01/01/1970 01:00:00 door simon
Die check alleen over $_GET id ;)
iemand die mij hulp kan bieden?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php
$con = mysql_connect('000','000','000');
mysql_select_db('000',$con);
if (ereg("^[0-9]+$", $_GET['id'])) {
$sql = 'SELECT *
FROM votes
WHERE id = "'.$_GET['id'].'"';
if (!$res = mysql_query($sql)) {
trigger_error (mysql_error ());
} else {
while($row = mysql_fetch_array($res)){
echo '<img src="'.$row['path'].'" />';
echo '<br/><br/>';
echo 'numbers voted for hot :'.$row['hot'].'<br/>';
$not = $row['totaal'] - $row['hot'];
echo 'numbers voted for not : '.$not.'<br/>';
echo 'total votes: '.$row['totaal'].'<br/>';
$gem = ($row['hot'] / $row['totaal']) * 100;
$afgerond = sprintf('%01.2f', $gem);
echo 'avarage score: '.$afgerond. '<br/><br/>';
}
$query = "SELECT COUNT(1) FROM votes";
if (!$result = mysql_query($query)) {
trigger_error (mysql_error ());
} else {
$row = mysql_fetch_row($result);
mysql_query('UPDATE votes SET hot WHERE id = '.$_GET['id'].'');
echo '<form action="#" method="post">';
echo '<input type="hidden" name="saveid" value="'.$id.'" />';
echo 'HOT: <a href="?id='.rand(1,$row[0]).'"><input type="radio" onclick="form.submit()" name="hot" value="1" /></a>';
echo 'NOT: <a href="?id='.rand(1,$row[0]).'"><input type="radio" onclick="form.submit()" name="not" value="0" /></a>';
echo '</form>';
}
if(is_numeric($_POST['saveid'])){
$i=6;
$sql =
"UPDATE votes
SET hot=????
WHERE id='".$_POST['saveid']."'";
if($rst = mysql_query($sql)){
echo "<p>Link saved</p>";
}else{
echo "<p>there was an error while saving your Link!</p>";
}
}
}
}else{
echo 'the ID must be an integer';
}
?>
$con = mysql_connect('000','000','000');
mysql_select_db('000',$con);
if (ereg("^[0-9]+$", $_GET['id'])) {
$sql = 'SELECT *
FROM votes
WHERE id = "'.$_GET['id'].'"';
if (!$res = mysql_query($sql)) {
trigger_error (mysql_error ());
} else {
while($row = mysql_fetch_array($res)){
echo '<img src="'.$row['path'].'" />';
echo '<br/><br/>';
echo 'numbers voted for hot :'.$row['hot'].'<br/>';
$not = $row['totaal'] - $row['hot'];
echo 'numbers voted for not : '.$not.'<br/>';
echo 'total votes: '.$row['totaal'].'<br/>';
$gem = ($row['hot'] / $row['totaal']) * 100;
$afgerond = sprintf('%01.2f', $gem);
echo 'avarage score: '.$afgerond. '<br/><br/>';
}
$query = "SELECT COUNT(1) FROM votes";
if (!$result = mysql_query($query)) {
trigger_error (mysql_error ());
} else {
$row = mysql_fetch_row($result);
mysql_query('UPDATE votes SET hot WHERE id = '.$_GET['id'].'');
echo '<form action="#" method="post">';
echo '<input type="hidden" name="saveid" value="'.$id.'" />';
echo 'HOT: <a href="?id='.rand(1,$row[0]).'"><input type="radio" onclick="form.submit()" name="hot" value="1" /></a>';
echo 'NOT: <a href="?id='.rand(1,$row[0]).'"><input type="radio" onclick="form.submit()" name="not" value="0" /></a>';
echo '</form>';
}
if(is_numeric($_POST['saveid'])){
$i=6;
$sql =
"UPDATE votes
SET hot=????
WHERE id='".$_POST['saveid']."'";
if($rst = mysql_query($sql)){
echo "<p>Link saved</p>";
}else{
echo "<p>there was an error while saving your Link!</p>";
}
}
}
}else{
echo 'the ID must be an integer';
}
?>
Gewijzigd op 01/01/1970 01:00:00 door simon
hij moet namelijk als er op hot word geklikt +1 aan hot toevoegen in de database. en als er op not word geklikt mag er niks bij worden opgeteld...
controlle functie bouwen op welke knop gedrukt is kan je met de functie isset() doen dan vervolgens de value opvragen en die in de plaats van hot=hot+1 doen. vergeet addslashes() niet bij het invoeren van een value in een query
ok het is gelukt pascal. ik ga even het script verder aanpassen en zal het posten als het af is als dank voor al de hulp die jullie me hebben geboden :).
De functie is_numeric() keurt hexadecimale getallen ook goed.
Ik gebruik onderstaande altijd om te controleren of een variabele een geheel getal is (dus 1 t/m oneindig):
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
if( empty($_GET['id']) || !ctype_digit((string)$_GET['id']) )
{
// $_GET['id'] bestaat niet of geen geheel getal.
}
?>
if( empty($_GET['id']) || !ctype_digit((string)$_GET['id']) )
{
// $_GET['id'] bestaat niet of geen geheel getal.
}
?>
Als je het formulier submit dan bestaat $_GET['id'] niet want het formulier is POST. Ik weet niet precies wat je wilt maar volgens mij klopt je formulier ook niet.
EDIT:
ik zal nu vast wel te horen krijgen dat ik raar ben.
Gewijzigd op 01/01/1970 01:00:00 door simon