[hulp gevraagd]submit met radio

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Simon

simon

06/11/2007 08:18:00
Quote Anchor link
hallo allemaal,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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> ' ;

?>
Gewijzigd op 01/01/1970 01:00:00 door Simon
 
PHP hulp

PHP hulp

24/11/2024 18:34:42
 
Jan Koehoorn

Jan Koehoorn

06/11/2007 08:55:00
Quote Anchor link
Ik heb de ergste fouten even aangeduid voor je:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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> ' ;
        }
    }

?>
 
Simon

simon

06/11/2007 08:58:00
Quote Anchor link
ik moet zeker $id = $_GET['id'] doen en hem dan als $id aanroepen...
Gewijzigd op 01/01/1970 01:00:00 door simon
 
Robert Deiman

Robert Deiman

06/11/2007 09:03:00
Quote Anchor link
@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
 
Simon

simon

06/11/2007 09:08:00
Quote Anchor link
@robert: ik snap niet wat je bedoeld met die integer. zou je me daar wat meer informatie over kunnen geven waarom ik dat zou moeten doen? wat is er onveilig aan?

EDIT:

en kan ik javascript zonder moeite in een .php bestand stoppen?
Gewijzigd op 01/01/1970 01:00:00 door simon
 
Robert Deiman

Robert Deiman

06/11/2007 09:24:00
Quote Anchor link
Ik leg dat toch duidelijk uit al in mijn vorige post. Een quote daaruit:

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
 
Simon

simon

06/11/2007 09:28:00
Quote Anchor link
@robert: ik snap wel dat het een getal moest zijn maar ik snap alleen niet waarom het onveilig is. en wat word het verschil als je die check op het id zet?

(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.)
 
Robert Deiman

Robert Deiman

06/11/2007 09:34:00
Quote Anchor link
@Simon

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
 
Jan Koehoorn

Jan Koehoorn

06/11/2007 09:39:00
Quote Anchor link
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.
 
Simon

simon

06/11/2007 09:40:00
Quote Anchor link
ok bedankt voor de uitleg dit zorgt voor een stuk duidelijkheid.

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
 
Robert Deiman

Robert Deiman

06/11/2007 09:46:00
Quote Anchor link
@simon

Die check alleen over $_GET id ;)
 

06/11/2007 10:16:00
 
Simon

simon

06/11/2007 11:01:00
Quote Anchor link
ik heb nu de volgende code hij is nu dus bijna klaar voor gebruik alleen ik weet niet hoe ik de value elke keer 1 omhoog kan laten gaan...

iemand die mij hulp kan bieden?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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';
}

?>
Gewijzigd op 01/01/1970 01:00:00 door simon
 
Jan Koehoorn

Jan Koehoorn

06/11/2007 11:05:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SET hot=????

moet worden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SET hot = hot + 1
 

06/11/2007 11:07:00
Quote Anchor link
geloof dat je dit bedoelt?


[linebreak]Code (php) 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 &lt;?phperror_reporting(E_ALL);$con = mysql_connect(000,000,000);&nbsp;&nbsp;&nbsp;&nbsp;mysql_select_db(000,$con);(is_numeric($_GET[id]) ? $n_id=$_GET[id] : die($_GET[id].&quot; bevat geen numerieke waarde&quot;));$sql = SELECT * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM votes &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE&nbsp;&nbsp;&nbsp;&nbsp;id = &quot;.$n_id.&quot;;if (!$res = mysql_query($sql)) {&nbsp;&nbsp;&nbsp;&nbsp;trigger_error (mysql_error ());} else {&nbsp;&nbsp;&nbsp;&nbsp;while($row = mysql_fetch_array($res)){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &lt;img src=&quot;.$row[path].&quot; /&gt;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &lt;br/&gt;&lt;br/&gt;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo numbers voted for hot :.$row[hot].&lt;br/&gt;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$not = $row[totaal] - $row[hot];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo numbers voted for not : .$not.&lt;br/&gt;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo total votes: .$row[totaal].&lt;br/&gt;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$gem = ($row[hot] / $row[totaal]) * 100;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$afgerond = sprintf(%01.2f, $gem);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo avarage score: .$afgerond. &lt;br/&gt;&lt;br/&gt;;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$query = &quot;SELECT COUNT(1) FROM votes&quot;;&nbsp;&nbsp;&nbsp;&nbsp;if (!$result = mysql_query($query)) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trigger_error (mysql_error ());&nbsp;&nbsp;&nbsp;&nbsp;} else {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$row = mysql_fetch_row($result);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_query(UPDATE votes SET hot WHERE id = .$n_id.);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &lt;form action=&quot;#&quot; method=&quot;post&quot;&gt;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo &lt;input type=&quot;hidden&quot; name=&quot;saveid&quot; value=&quot;.$id.&quot; /&gt;; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo HOT: &lt;a href=&quot;?id=.rand(1,$row[0]).&quot;&gt;&lt;input type=&quot;radio&quot; onclick=&quot;form.submit()&quot; name=&quot;hot&quot; value=&quot;1&quot; /&gt;&lt;/a&gt;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo NOT: &lt;a href=&quot;?id=.rand(1,$row[0]).&quot;&gt;&lt;input type=&quot;radio&quot; onclick=&quot;form.submit()&quot; name=&quot;not&quot; value=&quot;0&quot; /&gt;&lt;/a&gt;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &lt;/form&gt;;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(is_numeric($_POST[saveid])){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$i=6;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sql = &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;UPDATE votes &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SET hot=hot+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE id=&quot;.$_POST[saveid].&quot;&quot;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($rst = mysql_query($sql)){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;&lt;p&gt;Link saved&lt;/p&gt;&quot;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;&lt;p&gt;there was an error while saving your Link!&lt;/p&gt;&quot;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}}?&gt; [linebreak]
 
Simon

simon

06/11/2007 11:08:00
Quote Anchor link
ja maar hoe kan ik dat getal uit de value halen die in het formulier staat?

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...
 

06/11/2007 11:12:00
Quote Anchor link
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
 
Simon

simon

06/11/2007 11:19:00
Quote Anchor link
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 :).
 
Martijn B

Martijn B

06/11/2007 11:20:00
Quote Anchor link
Nog even over de controle of $_GET['id'] wel een nummer is.
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if( empty($_GET['id']) || !ctype_digit((string)$_GET['id']) )
{

  // $_GET['id'] bestaat niet of geen geheel getal.
}
?>
 
- SanThe -

- SanThe -

06/11/2007 11:26:00
Quote Anchor link
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.
 
Simon

simon

06/11/2007 11:46:00
Quote Anchor link
@santhe: ik haal het id op met een GET en daarna POST ik het formulier. dat kan toch gewoon? (zou het raar vinden als het niet kan want bij mij werkt het)

EDIT:

ik zal nu vast wel te horen krijgen dat ik raar ben.
Gewijzigd op 01/01/1970 01:00:00 door simon
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.