Invoer via "digitaal" toetsenbord op touchscreen.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marc

Marc

12/09/2007 21:20:00
Quote Anchor link
Hoi Allemaal,

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)
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
<?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";

?>



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?
 
PHP hulp

PHP hulp

27/11/2024 07:22:09
 
Leroy Boerefijn

Leroy Boerefijn

12/09/2007 21:33:00
Quote Anchor link
bedoel je een letter verwijderen of de cursor positie veranderen?
 
Marc

Marc

12/09/2007 21:35:00
Quote Anchor link
Hoi Leroy,

Ik bedoel een letter verwijderen, na bijvoorbeeld een typfout...
 
Jan Koehoorn

Jan Koehoorn

12/09/2007 21:36:00
Quote Anchor link
Als je per letter een hyperlink hebt, betekent dat dan een page refresh voor elke keer dat iemand een letter aantikt?
 
Marc

Marc

12/09/2007 21:39:00
Quote Anchor link
Hoi Jan,

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?
 
Jacco Engel

Jacco Engel

12/09/2007 21:40:00
Quote Anchor link
The force tells me u want javascript.

Of gewoon een gespecialiceerd computer programma
 
Marc

Marc

12/09/2007 22:05:00
Quote Anchor link
Ik zat meer te denken aan een moelijkheid het aantal asterisks te tellen... Dat is geen probleem

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$letter_count
=  substr_count($woord, '*');
?>


Daar haal je er vervolgens één (beter gezegd twee... Ook de asterisk zelf) vanaf... Ook geen probleem...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$max
= ($letter_count - 2);
?>


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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
for($w = 0; $w <= $max; $w++)
{

echo"$leesverder[$w]" ;
}

?>


Dus wil ik voorlopig nog niet aan Javascript beginnen...
Gewijzigd op 01/01/1970 01:00:00 door Marc
 
Jan Koehoorn

Jan Koehoorn

12/09/2007 22:36:00
Quote Anchor link
Even een voorbeeld met JavaScript, zodat je kunt zien wat ik bedoel.
 
Jacco Engel

Jacco Engel

12/09/2007 22:38:00
Quote Anchor link
ik klik a b c

in het invoerveld krijg ik :
undefinedundefinedundefined
 
Jan Koehoorn

Jan Koehoorn

12/09/2007 22:43:00
Quote Anchor link
Zal IE wel weer zijn die moeilijk doet.
Edit:
IE bug verwijderd
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Jacco Engel

Jacco Engel

12/09/2007 22:44:00
Quote Anchor link
Yep IE 6.0

Edit:
Nee hoor
Edit:
Cache probleem, dus toch opgelost

Gewijzigd op 01/01/1970 01:00:00 door Jacco Engel
 
Jan Koehoorn

Jan Koehoorn

12/09/2007 22:48:00
Quote Anchor link
@ Jacco: ga je me nu echt vertellen dat je standaard met IE6 surft?
Edit:
Cash probleem kan ik me voorstellen, cache probleem nog veel meer LOL
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Frank -

Frank -

12/09/2007 22:50:00
Quote Anchor link
Jan Koehoorn schreef op 12.09.2007 22:43:
Zal IE wel weer zijn die moeilijk doet.
Edit:
IE bug verwijderd
Had je hem er dan eerst (met opzet?) ingezet?

Wel een leuke toepassing, zet hem in m'n bookmarks!
 
Jacco Engel

Jacco Engel

12/09/2007 22:52:00
Quote Anchor link
@Jan

Ja op mijn werk word het me door mn strot geduwd

Thuis standaard FF2 of Opera
 
Jan Koehoorn

Jan Koehoorn

12/09/2007 22:52:00
Quote Anchor link
@ Frank: nee, geen opzet, hahaha. IE heeft in sommige situaties moeite met het keyword 'this' in JavaScript. Dat moest ik even verhelpen.
 
Kalle P

Kalle P

12/09/2007 23:39:00
Quote Anchor link
IE6 rulezz!
 
Jan Koehoorn

Jan Koehoorn

12/09/2007 23:50:00
Quote Anchor link
Voor wat de statistieken betreft heb je gelijk. Maar je hebt nog altijd kwantiteit versus kwaliteit.
 
M Ypma

M Ypma

13/09/2007 00:12:00
Quote Anchor link
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...
 
Jacco Engel

Jacco Engel

13/09/2007 01:02:00
Quote Anchor link
c# :P

ff wat in elkaar flansen
 
Marc

Marc

13/09/2007 09:36:00
Quote Anchor link
Hoi Allemaal,

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)
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
<?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>";
?>


Dan ga ik nu proberen om e.e.a. met Javascript te combineren...
Gewijzigd op 01/01/1970 01:00:00 door Marc
 



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.