input type radio keuze in mysql laten schrijven.
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)
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
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>
";
}
?>
// 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
Zet ze eens IN het formulier.
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
@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)
1
2
3
4
5
6
7
8
9
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>
";
<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
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.
mvg 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!)
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 ( . )
Een lastig punt is als je qoutes in de tekst wilt gebruiken. Ik doe een query om die reden tussen double quotes:
en HTML plaats ik weer tussen enkele quotes:
Soms moet je toch escapen omdat je zowel double quotes als single quotes in de tekst gebruikt:
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
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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>
";
}
?>
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
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 -
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
$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.
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)
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
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>
';
}
{
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>
';
}
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
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>';
}
?>
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
Bedankt voor het meedenken!
mvg Robert
$REGELING zal niet bestaan in if ($REGELING == "J") {
Ik heb de code nog even wat aangepast, nu zou hij moeten werken....
Nogmaals dank allemaal, ik kan verder.
Groeten Robert.