input type radio keuze in mysql laten schrijven.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robert v Ommen

Robert v Ommen

13/01/2014 21:59:59
Quote Anchor link
Goedenavond. Ik loop weer tegen iets aan waar ik een tijdje mee aan het stoeien ben geweest. Ik kom er niet verder mee en daarom hier weer een vraag om hulp.


Ik heb mijn test script meegestuurd waar ongeveer instaat wat ik tot zover gedaan heb. Het werkt echter niet en ik weet sowieso niet of het wel op deze manier kan wat ik wil.
Allereerst haalt het script een paar waardes uit mijn mysql database. Deze worden getoond en afhankelijk van deze data wordt een inputtype radio voorkeur ja of voorkeur nee getoond.

Tot zover heb ik de code voor elkaar.

Maar nu wil ik dat wanneer de verzendenknop ingedrukt wordt, de keuze van de inputtype radio in de mysql geschreven wordt. Dat lukt me niet want ik kan de variabele $REGELING_KNOP om de een of andere reden niet aanroepen.

Kan dit wel op een of andere manier en hoe kan ik dit wel voor elkaar krijgen?

Alvast bedankt weer voor het meedenken!

mvg Robert

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
<?php

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// getdata from mysql

$query = "SELECT * FROM 'ja' ORDER BY DATETIME DESC LIMIT 1";
$result = mysql_query($query) or die ("Couldn't execute query.");

while ($row = mysql_fetch_array($result))
    {

    $DATETIME = $row['DATETIME'];
    $S1 = $row['S1'];
    $REGELING = $row['REGELING'];

    }

echo "Regeling  = " . $REGELING;
echo "<br>";
echo "Sensor1  = " . $S1;
echo "<br>";
echo "<br>";


if ($REGELING == "J")
{

    echo "
    Regeling aan of uit:<br />
    <input type='radio' name='REGELING_KNOP' value='J' checked> Regeling aan<br />
    <input type='radio' name='REGELING_KNOP' value='N' > Regeling uit
    "
;
}

else
{
        echo "
    Regeling aan of uit:<br />
    <input type='radio' name='REGELING_KNOP' value='J' > Regeling aan<br />
    <input type='radio' name='REGELING_KNOP' value='N' checked> Regeling uit
    "
;
}


if(isset($_POST['form_submit']))
{

        
        $sql="INSERT INTO $tbl_name(DATETIME, REGELING)VALUES('$today', '$REGELING_KNOP')";
        $result=mysql_query($sql)or die("cannot execute query2");
        
}

else
{

    echo"
        <form action='"
.$_SERVER['REQUEST_URI']."' method='POST'>
        
            Verzend de parameters naar de RPI<Br />
            
            <input type='submit' name='form_submit' value='Verzenden' />
        
        </form>
    "
;

}






?>
Gewijzigd op 13/01/2014 22:43:22 door Robert v Ommen
 
PHP hulp

PHP hulp

20/04/2024 01:36:22
 
- SanThe -

- SanThe -

13/01/2014 22:11:53
Quote Anchor link
Zet ze eens IN het formulier.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

13/01/2014 22:16:30
Quote Anchor link
Hoi Robert,

Even een paar dingen die mij opvallen:

- regel 9 levert een foutmelding op. Als je een beetje PHP editor gebruikt dan laat hij dat direct al zien.
Krijg je geen foutmelding te zien als je het script uitvoert? zet dan eens error_reporting(E_ALL); voor
in je script. Het is namelijk heel belangrijk dat je fouten te zien krijgt en gaat verhelpen.

- tevens op regel 9 gebruik je de term database waar je eigenlijk table bedoeld. Om het even te
verduidelijken: op je mysql server kun je verschillende databases aanmaken. Deze databases bestaan
meestal uit meerdere tabellen. $DATABASE zou dus $table moeten worden.

- Alhoewel niet per definitie fout schrijven de meeste programmeurs de variabelen in kleine letters.

- Op regel 26 ga je $KLEPBRON vergelijken. Maar waar wordt deze variabele voorzien van een waarde? Met andere woorden $KLEPBRON is een niet bestaande waarde.
Gewijzigd op 13/01/2014 22:19:24 door Frank Nietbelangrijk
 
Robert v Ommen

Robert v Ommen

13/01/2014 22:51:19
Quote Anchor link
Hallo Frank en SanThe. Bedankt voor de snele reacties.

@Frank, De foutjes die je aanhaalt zijn foutjes ontstaan doordat ik een gedeelte uit het script heb gecopieerd en aangepast om het duidelijker te maken. Excuus.
Zo is $DATABASE in werkelijkheid 'ja' (ik wist bij het opzetten van mijn eerste mysql database echt niet wat een table inhield, vandaar). De $KLEPBRON moest zijn $REGELING. Ik heb ze aangepast.
Ik programmeer nog gewoon in Notepad, en merk steeds meer dat dat eigenlijk geen doen is.

@SanThe, In het formulier daar bedoel je neem ik aan mee,

in dit gedeelte.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
echo"
        <form action='".$_SERVER['REQUEST_URI']."' method='POST'>
        
            Verzend de parameters naar de RPI<Br />
            
            <input type='submit' name='form_submit' value='Verzenden' />
        
        </form>
    ";


Wanneer ik onder de regel Verzend de pa.... de input type's neerzet werkt de hele pagina niet meer.

mvg Robert
Gewijzigd op 13/01/2014 22:52:22 door Robert v Ommen
 
- SanThe -

- SanThe -

13/01/2014 22:57:06
Quote Anchor link
Robert v Ommen op 13/01/2014 22:51:19:
.... werkt de hele pagina niet meer.


Let op de quotes.
Beste is de echo enkele en html dubbele.
 
Robert v Ommen

Robert v Ommen

13/01/2014 23:17:33
Quote Anchor link
Van de quotes en hoe en wanneer begrijp ik nog niet veel. Wanneer ik de input types in het formulier zet krijg ik een echo binnen een echo. Kan dat goed gaan?

mvg Robert
 
- SanThe -

- SanThe -

13/01/2014 23:36:10
 
Frank Nietbelangrijk

Frank Nietbelangrijk

14/01/2014 01:04:07
Quote Anchor link
Robert,

Hier wel een aardig light weight php editor:
http://www.software.akker-huis.nl/php-designer.php

of als je voor meer heavy wit gaan:
https://netbeans.org/features/php/index.html

Beiden zijn gratis.

Toevoeging op 14/01/2014 01:17:28:

Robert v Ommen op 13/01/2014 23:17:33:
Van de quotes en hoe en wanneer begrijp ik nog niet veel.


Bij dubbele quotes gaat php de inhoud scannen. een \n wordt dan een nieuwe regel en ook kun je dan variabelen in de tekst zetten (maar niet gebruiken!)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "Hallo $naam\nWelkom terug.";
?>


Bij enkele quotes heb je die mogelijkheden niet, maar is daarom ook iets sneller.

Variabelen kun je beter gewoon buiten de quotes laten en koppelen met de punt ( . )
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo 'Hallo ' . $naam;
?>


Een lastig punt is als je qoutes in de tekst wilt gebruiken. Ik doe een query om die reden tussen double quotes:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql
= "SELECT * FROM table WHERE id='1'";
?>

en HTML plaats ik weer tussen enkele quotes:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<div class="left"></div>';
?>

Soms moet je toch escapen omdat je zowel double quotes als single quotes in de tekst gebruikt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<div onclick="javascript:alert(\'Testje!\');"></div>';
?>
 
Ivo P

Ivo P

14/01/2014 09:39:08
Quote Anchor link
$query = "SELECT * FROM 'ja' ORDER BY DATETIME DESC LIMIT 1";

Het is FROM tabelnaam

En omdat mysql al weet dat je een tabelnaam bedoelt, hoort die niet tussen quotes te staan. Iets dat tussen quotes staat, moet de database letterlijk nemen. 'ja' is dus een string van 2 letters. En niet de naam van een tabel.

Die query moet dus mislukken, en je zou dus nooit voorbij de "or die()" op regel 10 mogen komen

Toevoeging op 14/01/2014 09:44:33:

er zitten nog een paar klassiek fouten in je script:

Je bouwt eerst een lap tekst op met radio buttons. Je doet dus eerst een select-query en stuurt info naar het scherm. Prima.

Maar op regel 43 bedenk je ineens, zou er een form gesubmit zijn.
Om dat moment doe je een poging om iets aan te passen in de database.
De informatie op je scherm zal echter niet meer veranderen: dat was de situatie in de database VOOR je INSERT query.

2e Fout:
Het is wel handig om je radio buttons op te nemen IN je <form>
die plaats je nu pas op regel 54

NB: <form action='' method='POST'> werkt ook
 
Robert v Ommen

Robert v Ommen

14/01/2014 15:38:18
Quote Anchor link
Hallo allemaal. Ik heb jEdit gedownloaded en probeer er mee te werken.

Verder heb ik ook alle aangedragen teksten gelezen over quotes. Ik weet er nu iets meer over. Wat wordt er bedoelt met soms moet je escapen?

Ik ben verder gegaan met mijn code en heb een stuk eruit geknipt wat de essentie van mijn vraag is. Waarom wordt bij het op verzenden drukken de variabele $VERW_KNOP (J of N)niet getoond?



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
<?php
if(isset($_POST['form_submit']))
{

        echo $VERW_KNOP;      
}

else
{
echo"
     <form action='"
.$_SERVER['REQUEST_URI']."' method='POST'>      
            <input type='submit' name='form_submit' value='Verzenden' />
            <input type='radio' name='VERW_KNOP' value='J' checked> Ja <br />
        <input type='radio' name='VERW_KNOP' value='N' > Nee
     </form>
    "
;
}

?>
Gewijzigd op 14/01/2014 15:39:00 door Robert v Ommen
 
- SanThe -

- SanThe -

14/01/2014 15:53:44
Quote Anchor link
Als je nou de dubbele en enkele quotes omwisselt heb je de juiste quotes voor html. Html heeft dubbele quotes namelijk.

Escapen doe je door een \ voor een character te zetten. Als je bijv. echo 'cafe's'; doet dan zitten er drie quotes in. De middelste hoort gewoon bij de tekst en die moet je dan dus escapen. Het wordt dan echo 'cafe\'s'; Doe je dat niet dan denkt php dat de echo klaar is na de tweede quote en geeft dan een error voor wat er nog achter komt.

En waar maak je $VERW_KNOP aan? Nergens, dus die bestaat niet. Wat jij zoekt is de POST-waarde en die zit in $_POST['VERW_KNOP'].
Gewijzigd op 14/01/2014 15:55:01 door - SanThe -
 
Robert v Ommen

Robert v Ommen

14/01/2014 16:35:19
Quote Anchor link
Hallo SanThe. Ik heb hem werkend. Bedankt voor al je uitleg tot nu toe.
Wat bedoel je met je eerste opmerking? Welk gedeelte is HTML in de code? Je ziet het, ik ben een totale beginner met deze talen.

@Ivo P

<form action='' method='POST'> werkt inderdaad prachtig, dank je.

$query = "SELECT * FROM `ja` ORDER BY DATETIME DESC LIMIT 1"; werkt wel. De waardes uit de database worden gewoon getoond. Als ik de quotes weghaal werkt de code ook!

mvg Robert
 
Ivo P

Ivo P

14/01/2014 16:52:15
Quote Anchor link
in de openingspost staat

$query = "SELECT * FROM 'ja' ORDER BY DATETIME DESC LIMIT 1";
nu zeg je
$query = "SELECT * FROM `ja` ORDER BY DATETIME DESC LIMIT 1";

Merk op dat dat andere quotes zijn

de bovenste is een single quote die een string afbakent.
De onderste heet backtic en geeft je in mysql de mogelijkheid om niet toegestane namen alsnog als kolom- of tabelnaam te gebruiken.
 
Robert v Ommen

Robert v Ommen

14/01/2014 22:11:56
Quote Anchor link
Ik zie nu wat je bedoelt inderdaad. ` is niet hetzelfde als ' Ik moet aan een bril denk ik.

Ik heb de input type radio werkend alleen de if() erbij lukt me nog niet.

Ik ben met de " en ' aan het proberen, maar hoe ik ze ook uitwissel, ik krijg deze niet werkend.

Kan iemand hier zijn licht nog eens over laten schijnen?

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
if(isset($_POST['form_submit']))
{
        echo $_POST['REGELING_KNOP'];
        
}
else
{
echo'
     <form action='' method='POST'>      
          
        if ($REGELING == "J") {        
            Regeling aan of uit:<br />
            <input type='radio' name='REGELING_KNOP' value='J' > Regeling aan<br />
            <input type='radio' name='REGELING_KNOP' value='N' checked> Regeling uit
    }    
        else {
                Regeling aan of uit:<br />
            <input type='radio' name='REGELING_KNOP' value='J' > Regeling aan<br />
            <input type='radio' name='REGELING_KNOP' value='N' checked> Regeling uit
            
        }
    
    
            <input type='submit' name='form_submit' value='Verzenden' />
            
     </form>
    ';
}
 
D B

D B

14/01/2014 22:15:45
Quote Anchor link
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
<?
if(isset($_POST['form_submit']))
{

        echo $_POST['REGELING_KNOP'];
        
}

else
{
    echo '<form action="" method="POST">';
    if ($REGELING == 'J') {        
        echo 'Regeling aan of uit:<br />';
        echo '<input type="radio" name="REGELING_KNOP" value="J" > Regeling aan<br />';
        echo '<input type="radio" name="REGELING_KNOP" value="N" checked> Regeling uit';
    }
    
    else {
        echo 'Regeling aan of uit:<br />';
        echo '<input type="radio" name="REGELING_KNOP" value="J" > Regeling aan<br />';
        echo '<input type="radio" name="REGELING_KNOP" value="N" checked> Regeling uit';
    }

    echo '<input type="submit" name="form_submit" value="Verzenden" />';
    echo '</form>';
}

?>
Gewijzigd op 14/01/2014 22:37:02 door D B
 
Robert v Ommen

Robert v Ommen

14/01/2014 22:20:38
Quote Anchor link
OK D B. Maar wanneer ik dat doe, werkt de code nog steeds niet.

Bedankt voor het meedenken!
mvg Robert
 
- SanThe -

- SanThe -

14/01/2014 22:31:02
Quote Anchor link
$REGELING zal niet bestaan in if ($REGELING == "J") {
 
D B

D B

14/01/2014 22:37:39
Quote Anchor link
Ik heb de code nog even wat aangepast, nu zou hij moeten werken....
 
Robert v Ommen

Robert v Ommen

15/01/2014 07:42:55
Quote Anchor link
Klopt helemaal! Dank je wel. Werd wel in verwarring gebracht maar dat kwam omdat checked bij allebij de opties bij nee staat, maar dat is ook gecorrigeerd.

Nogmaals dank allemaal, ik kan verder.

Groeten Robert.
 



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.