Invoer via "digitaal" toetsenbord op touchscreen.
Voor een soort van informatiezuil die op een openbare plaats komt te staan kunnen bezoekers gegevens zoeken. Bij de zuil wil ik geen toetsenbord hangen, ivm misbruik. De invoer en besturing wil ik alleen door middel van een webbased omgeving en touchscreen laten doen.
Ik heb dus een toetsenbord in photoshop gemaakt dat op het scherm komt. door op de knoppen te klikken moet dan in een tekstblokje erboven de aangeklikte letters verschijnen.
Dit doe ik door gebruik van een hyperlink per letter, zoals bijvoorbeeld:
invoer.php?letter=A
In het bestand invoer.php staat dit stukje code:
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
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
<?php
// verbinding met db maken
include ("database.php");
// de huidige zoekterm ophalen
$res = mysql_query("SELECT * FROM `zoekwoorden` LIMIT 1");
$row = mysql_fetch_array($res);
// variabele toekennen
$woord = $row['woord'] ;
// Wanneer op de knop wissen wordt gedrukt wordt de inhoud weer leeg gemaakt
if ($_GET['actie'] == 'wis') {
mysql_query("UPDATE `zoekwoorden` SET `woord` = ''");
}
// Hier kom ik dus niet aan uit... Ik wil een backspace toets maken...
if ($_GET['actie'] == 'back') {
$letter_count = substr_count($woord, '*');
$leesverder = explode("*", $string);
$max = ($letter_count - 2);
for($w = 0; $w <= $max; $w++)
{
echo"$leesverder[$w]" ;
}
}
// De ingetoetste letter wordt opgehaald
$letter = $_GET['letter'] ;
// Deze letter wordt toegevoegd aan de reeds bestaande letters, met na iedere letter een Asterisk om het exploden gemakkelijker te maken.
$totaal = ("$woord" . "$letter". "*") ;
// Het nieuwe woord wordt in de db gezet
mysql_query("UPDATE `zoekwoorden` SET `woord` = '$totaal'");
// Ik voeg een _ als spatie toe en zet dat hier om...
$show = str_replace("_", " " , $totaal) ;
// Hier laat ik alle Asterisks vervallen
$show1 = str_replace("*", "" , $show) ;
// Het resultaat op het scherm
echo "$show1";
?>
// verbinding met db maken
include ("database.php");
// de huidige zoekterm ophalen
$res = mysql_query("SELECT * FROM `zoekwoorden` LIMIT 1");
$row = mysql_fetch_array($res);
// variabele toekennen
$woord = $row['woord'] ;
// Wanneer op de knop wissen wordt gedrukt wordt de inhoud weer leeg gemaakt
if ($_GET['actie'] == 'wis') {
mysql_query("UPDATE `zoekwoorden` SET `woord` = ''");
}
// Hier kom ik dus niet aan uit... Ik wil een backspace toets maken...
if ($_GET['actie'] == 'back') {
$letter_count = substr_count($woord, '*');
$leesverder = explode("*", $string);
$max = ($letter_count - 2);
for($w = 0; $w <= $max; $w++)
{
echo"$leesverder[$w]" ;
}
}
// De ingetoetste letter wordt opgehaald
$letter = $_GET['letter'] ;
// Deze letter wordt toegevoegd aan de reeds bestaande letters, met na iedere letter een Asterisk om het exploden gemakkelijker te maken.
$totaal = ("$woord" . "$letter". "*") ;
// Het nieuwe woord wordt in de db gezet
mysql_query("UPDATE `zoekwoorden` SET `woord` = '$totaal'");
// Ik voeg een _ als spatie toe en zet dat hier om...
$show = str_replace("_", " " , $totaal) ;
// Hier laat ik alle Asterisks vervallen
$show1 = str_replace("*", "" , $show) ;
// Het resultaat op het scherm
echo "$show1";
?>
Het systeem werkt prima, alleen zoek ik nu een manier om per letter een stap terug te gaan. De zgn Backspace toets...
Kan iemand me hierbij helpen?
bedoel je een letter verwijderen of de cursor positie veranderen?
Ik bedoel een letter verwijderen, na bijvoorbeeld een typfout...
Als je per letter een hyperlink hebt, betekent dat dan een page refresh voor elke keer dat iemand een letter aantikt?
Dat klopt idd... Overigens staat de pagina die wordt gerefreshed in een iframe, zodat de rest niet opnieuw hoeft worden opgebouwd...
Of heb je andere sugesties?
Of gewoon een gespecialiceerd computer programma
Daar haal je er vervolgens één (beter gezegd twee... Ook de asterisk zelf) vanaf... Ook geen probleem...
Alleen zou ik de for-next lus als variabele moeten kunnen opslaan.... En dat lukt me niet... Zichtbaar krijg ik hem namelijk wel minus het laatste symbool:
Dus wil ik voorlopig nog niet aan Javascript beginnen...
Gewijzigd op 01/01/1970 01:00:00 door Marc
voorbeeld met JavaScript, zodat je kunt zien wat ik bedoel.
Even een in het invoerveld krijg ik :
undefinedundefinedundefined
Edit:
Nee hoor
Edit:
Cache probleem, dus toch opgelost
Gewijzigd op 01/01/1970 01:00:00 door Jacco Engel
Edit:
Cash probleem kan ik me voorstellen, cache probleem nog veel meer LOL
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Jan Koehoorn schreef op 12.09.2007 22:43:
Had je hem er dan eerst (met opzet?) ingezet?Zal IE wel weer zijn die moeilijk doet.
Edit:
IE bug verwijderd
Wel een leuke toepassing, zet hem in m'n bookmarks!
Ja op mijn werk word het me door mn strot geduwd
Thuis standaard FF2 of Opera
@ Frank: nee, geen opzet, hahaha. IE heeft in sommige situaties moeite met het keyword 'this' in JavaScript. Dat moest ik even verhelpen.
IE6 rulezz!
statistieken betreft heb je gelijk. Maar je hebt nog altijd kwantiteit versus kwaliteit.
Voor wat de Ik snap niet echt waarom je het op deze manier aanpakt? waarom heb je voor deze manier gekozen en niet voor bijvoorbeeld een flash applicatie? of html/javascript... van alle mogelijkheden heb je in mijn ogen toch wel de slechtste gekozen...
ff wat in elkaar flansen
Ik ben eruit! Aangezien ik beter thuis ben in PHP dan in Javascript heb ik de functie strlen gebruikt. Aangezien het digitaal toetsenbord in Flash is gemaakt, wil ik het mezelf niet moeilijker maken door in Flash met Javascript te gaan werken :-)
Hieronder mijn script met werkende backspace functie. Wellicht wat omslachtig, maar het werkt!:
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
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
<?php
// verbinding met db maken
include ("database.php");
// de huidige zoekterm ophalen
$res = mysql_query("SELECT * FROM `zoekwoorden` LIMIT 1");
$row = mysql_fetch_array($res);
// variabele toekennen
$woord = strtoupper($row['woord']) ;
// Aantal sterretjes tellen x2 omdat de letters er ook bij staan
$letter_count = (substr_count($woord, '*')*2);
// Wanneer op de knop wissen wordt gedrukt wordt de inhoud weer leeg gemaakt
if ($_GET['actie'] == 'wis') {
mysql_query("UPDATE `zoekwoorden` SET `woord` = ''");
exit();
}
// Hier kom ik dus niet aan uit... Ik wil een backspace toets maken...
if ($_GET['actie'] == 'back') {
// Elke keer dat de knop back wordt ingedrukt moeten er twee tekens (de letter en de Asterisk) verdwijnen
$wissen = ($letter_count - 2);
// Nieuw woord zonder de twee laatste tekens
$rest = substr ("$woord", 0, $wissen);
// In de DB zetten.
mysql_query("UPDATE `zoekwoorden` SET `woord` = '$rest'");
// Ik voeg een _ als spatie toe en zet dat hier om...
$show = str_replace("_", " " , $rest) ;
// Hier laat ik alle Asterisks vervallen
$show1 = str_replace("*", "" , $show) ;
// Het resultaat op het scherm na het wissen.
echo "$show1<br>";
exit();
}
// De ingetoetste letter wordt opgehaald
$letter = strtoupper($_GET['letter']) ;
// Deze letter wordt toegevoegd aan de reeds bestaande letters, met na iedere letter een Asterisk om het exploden gemakkelijker te maken.
$totaal = ("$woord" . "$letter". "*") ;
// Het nieuwe woord wordt in de db gezet
mysql_query("UPDATE `zoekwoorden` SET `woord` = '$totaal'");
// Ik voeg een _ als spatie toe en zet dat hier om...
$show = str_replace("_", " " , $totaal) ;
// Hier laat ik alle Asterisks vervallen
$show1 = str_replace("*", "" , $show) ;
// Het resultaat op het scherm
echo "$show1<br>";
?>
// verbinding met db maken
include ("database.php");
// de huidige zoekterm ophalen
$res = mysql_query("SELECT * FROM `zoekwoorden` LIMIT 1");
$row = mysql_fetch_array($res);
// variabele toekennen
$woord = strtoupper($row['woord']) ;
// Aantal sterretjes tellen x2 omdat de letters er ook bij staan
$letter_count = (substr_count($woord, '*')*2);
// Wanneer op de knop wissen wordt gedrukt wordt de inhoud weer leeg gemaakt
if ($_GET['actie'] == 'wis') {
mysql_query("UPDATE `zoekwoorden` SET `woord` = ''");
exit();
}
// Hier kom ik dus niet aan uit... Ik wil een backspace toets maken...
if ($_GET['actie'] == 'back') {
// Elke keer dat de knop back wordt ingedrukt moeten er twee tekens (de letter en de Asterisk) verdwijnen
$wissen = ($letter_count - 2);
// Nieuw woord zonder de twee laatste tekens
$rest = substr ("$woord", 0, $wissen);
// In de DB zetten.
mysql_query("UPDATE `zoekwoorden` SET `woord` = '$rest'");
// Ik voeg een _ als spatie toe en zet dat hier om...
$show = str_replace("_", " " , $rest) ;
// Hier laat ik alle Asterisks vervallen
$show1 = str_replace("*", "" , $show) ;
// Het resultaat op het scherm na het wissen.
echo "$show1<br>";
exit();
}
// De ingetoetste letter wordt opgehaald
$letter = strtoupper($_GET['letter']) ;
// Deze letter wordt toegevoegd aan de reeds bestaande letters, met na iedere letter een Asterisk om het exploden gemakkelijker te maken.
$totaal = ("$woord" . "$letter". "*") ;
// Het nieuwe woord wordt in de db gezet
mysql_query("UPDATE `zoekwoorden` SET `woord` = '$totaal'");
// Ik voeg een _ als spatie toe en zet dat hier om...
$show = str_replace("_", " " , $totaal) ;
// Hier laat ik alle Asterisks vervallen
$show1 = str_replace("*", "" , $show) ;
// Het resultaat op het scherm
echo "$show1<br>";
?>
Dan ga ik nu proberen om e.e.a. met Javascript te combineren...
Gewijzigd op 01/01/1970 01:00:00 door Marc