Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1547 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  langage WAP desoler pour le mauvais emplacement de post

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

langage WAP desoler pour le mauvais emplacement de post

n°972522
Badze
Aime les frites
Posté le 05-02-2005 à 00:16:00  profilanswer
 

Bonjour, voila, j'ai crée un site php qui marche tres bien d'ailleur, mais le souci est que je voudrai qu'il soit accessible sur portable Wap.
Mon ami arrive a acceder sur le site sans probleme mais par contre quand il s'agit de se connecter dans le formulaire, ca pose probleme. il n'arrive pas a valider les information rentrer par :
 
<FORM action="_inscription.php" method="post">
......
<input type="text" name="login">
......
<input type="submit" value ="envoyer">
</form>
 
il ne peut pas selectionner le bouton submit pour valider.
Donc je voulais savoir si vous connaissiez le language du wap et que l'on puisse me donnez le truc pour que le bouton soi accessible.
 
Merci

mood
Publicité
Posté le 05-02-2005 à 00:16:00  profilanswer
 

n°972609
Berceker U​nited
PSN : berceker_united
Posté le 05-02-2005 à 01:05:05  profilanswer
 

il faut regarder sur un site qui traite du language.  
http://www.commentcamarche.net/wap/wapintro.php3 je crois qu'il parle de ça.


Message édité par Berceker United le 05-02-2005 à 01:05:52
n°972682
Badze
Aime les frites
Posté le 05-02-2005 à 11:54:01  profilanswer
 

Je viens de faire le tour, mais il n'y a pas d'aide pour mon cas, il explique ce qu'est le wap mais pas le language Wml

n°972687
Berceker U​nited
PSN : berceker_united
Posté le 05-02-2005 à 12:03:41  profilanswer
 

badze a écrit :

Je viens de faire le tour, mais il n'y a pas d'aide pour mon cas, il explique ce qu'est le wap mais pas le language Wml


Je sais qu'il y a peut de site qui traite de la syntaxe du language de façon approfondie je comprend le problème. Je devais m'y interesser aussi mais c'est pas prioritaire et j'avais l'intention d'acheter un livre qui traite de cela mais il y a qu'un livre qui traite de cela de façon entiere.
http://www.amazon.fr/exec/obidos/A [...] 46-0988140
http://images-eu.amazon.com/images/P/2212091745.08.LZZZZZZZ.jpg

n°972720
Mr Mala
Posté le 05-02-2005 à 12:47:22  profilanswer
 

badze a écrit :

Je viens de faire le tour, mais il n'y a pas d'aide pour mon cas, il explique ce qu'est le wap mais pas le language Wml


 
http://www.w3schools.com/wap/
http://www.wirelessdevnet.com/chan [...] g/wml.html
http://developer.openwave.com/htmldoc/41/wmlref/
http://www.zvon.org/xxl/WMLTutoria [...] index.html
 
Je continue ou vous serez capables de continuer la recherche vous même ?
:heink:


Message édité par Mr Mala le 05-02-2005 à 13:05:36
n°972734
Berceker U​nited
PSN : berceker_united
Posté le 05-02-2005 à 13:13:48  profilanswer
 


Et en deutch tu as trouvé aussi parce que peut être qu'il le comprend. ;)

n°972784
Badze
Aime les frites
Posté le 05-02-2005 à 14:08:13  profilanswer
 

En effet, l'anglais, on va dire que c'est pas mon trippe.
Merci quand meme de ton aide mais si tu avait carrement une aide francaise, cela mirai comme un gand.  
J'ai fait de recherche et a chaque fois, on me donne que des petit bout de code. Donc pas genial pour tout bien capté

n°972788
benou
Posté le 05-02-2005 à 14:26:01  profilanswer
 

c'est du wap1 (wml) que tu veux faire ou du wap2 (xhtml mp) ?
parce que si c'est du wap1, y a pas de balise form ... et si c'est du wap2, ben il faut que tes balises soient fermées : le XHTML c'est du XML.
 
 
et google est ton amis : http://www.google.fr/search?hl=fr& [...] %3Dlang_fr

n°972790
Mr Mala
Posté le 05-02-2005 à 14:28:16  profilanswer
 

badze a écrit :

En effet, l'anglais, on va dire que c'est pas mon trippe.


 
:heink: génial ...
 

badze a écrit :


Merci quand meme de ton aide mais si tu avait carrement une aide francaise, cela mirai comme un gand.


 
Ha ben oui .. mettre "rechercher dans pages en français", c'est trop compliqué !
 

badze a écrit :

 
J'ai fait de recherche et a chaque fois, on me donne que des petit bout de code. Donc pas genial pour tout bien capté


 
Ouais ben ton moteur de recherche, tu le prends, tu le plies en 4 et tu le fouts à la poubelle !!! Ou tu envois un mail au webmaster pour dire que son moteur de recherche c'est de la merde !
 
http://www.allhtml.com/wml/index.php
http://francewml.ovh.org/
http://www.ccim.be/ccim328/wap/
http://www.wapidus.com/wml.html
http://www.u-picardie.fr/~ferment/wap/wap.html
http://www.webmaster-hub.com/publi [...] cle42.html
http://pagesperso.accesinternet.la [...] ndex.phtml
 
Ca ira là ?  
 
[message subbliminal]
APPRENNEZ L'ANGLAIS !
[/message subbliminal]


Message édité par Mr Mala le 05-02-2005 à 14:29:12
n°972805
T509
$job-&gt;GetJob(now)
Posté le 05-02-2005 à 14:41:09  profilanswer
 

un exemple de formulaire là :
 
http://wap2004.tf1.fr/goodies_sonn [...] a889335225
 
Attention wmlbrowser needed ou Opéra

mood
Publicité
Posté le 05-02-2005 à 14:41:09  profilanswer
 

n°972932
Badze
Aime les frites
Posté le 05-02-2005 à 19:41:36  profilanswer
 

bon Mr Mala, si c'est pour me criez dessus , ce n'est pas la peine de venir poster ici, meme venir poster tout cours. C'est un forum d'aide, par pour se faire charier.
Merci quand meme pour les adresses.
 
pour benou, en faite, je veux que mon site php soi accessible par internet et sur portable, donc je crois que cela doit etre le Wap2 a mon avis.
 
Enfin bon merci a vous, moi je vais taté les site de monsieur Mala
 

n°972934
Badze
Aime les frites
Posté le 05-02-2005 à 19:43:44  profilanswer
 

En fait je simplement pouvoir valider mon formulaire sur un postable sachant que le input type="submit" est impossible a selectionner.

n°972937
Mr Mala
Posté le 05-02-2005 à 19:48:32  profilanswer
 

Ouais ben on est là pour aider ceux qui cherchent un minimum !
Dire "j'ai cherché et j'ai rien trouvé" alors qu'en 10 secondes j'avais trouvé une chiée de liens sur le WML, faut pas pousser ! :heink:
 
De plus, wap et wap2, c'est pas pareil ...
Il faut savoir quel type de portables tu vises; tout ceux qui supportent le WAP ou uniquement les plus modernes ?
Les plus modernes supportent en général le xhtml avec images couleurs etc etc ( effectivement, je pense que c'est ça qu'on appelle le wap2 ... )
Si tu veux qu'il soit accesible par même les vieux mobiles WAP , il faut faire du wml ... mais c'est galère ...
 

n°972940
Badze
Aime les frites
Posté le 05-02-2005 à 19:56:06  profilanswer
 

Non ba en fait c'est pas un vieux mobile Wap, il est meme recent d'il y a un an. Mais alors pourquoi il ne prend pas
<input type="submit" value ="envoyer">.
 
je ne comprend pas , et je ne sais pas du tout quel language prendre alors. Apprement ce ne serait pas du WML. Xhtml marche avec <input type="submit" value ="envoyer">
 
Mais que vais je faire donc,  

n°972945
cerel
Posté le 05-02-2005 à 20:04:43  profilanswer
 

Tu as fait valider ta page xhtml ??
Juste histoire d'etre sur que ce soit pas des erreurs dans ton code...

n°972946
Mr Mala
Posté le 05-02-2005 à 20:11:05  profilanswer
 

heuuuu il ne te manquerait pas un attribut name="submit" dans ton input type="submit" ???

n°972951
Badze
Aime les frites
Posté le 05-02-2005 à 20:19:50  profilanswer
 

Non non, je n'est pas du tout d'erreur de code, mon site php html est en parfait état de fonctionnement sur PC,
sur portable, il marche tres bien aussi sauf quand il s'agit de valider un formulaire.
Vraiment tout bizarre ca.
 
name="submit" n'est pas utile dans ce cas present, et je ne pense pas qu'il engeandre des erreurs pour le portable sachant que je n'est pas de soucis avec mon PC.
 
Autrement pour me simplifié la tache, je recherche un émulateur wap qui lise les page .php car dans ce cas, mon code wml serait confondu avec mon html et php.

n°972952
Badze
Aime les frites
Posté le 05-02-2005 à 20:20:36  profilanswer
 

précesion, j'ai trouver des emulateur Wap, mais ne me permette pas pour mettre du php. Et oui j'ai chercher ;)

n°972957
esox_ch
Posté le 05-02-2005 à 20:35:57  profilanswer
 

Badze, t'a valider ton code xhtml ? #2


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°972966
Mr Mala
Posté le 05-02-2005 à 20:57:25  profilanswer
 

badze a écrit :

précesion, j'ai trouver des emulateur Wap, mais ne me permette pas pour mettre du php. Et oui j'ai chercher ;)


 
Maiheuuuuuuu !!!!!!! :heink:
php = langage script interprété ... par un serveur !
Tu as un serveur local ? Tu as l'interpréteur php installé ? mmmh ?
 
 

n°972968
kaloskagat​os
Posté le 05-02-2005 à 21:06:57  profilanswer
 


 :heink: Dans google on devrait avoir le choix entre anglais, français, et langage SMS ...
 
Ca m'étonne pas que tu veuilles faire un accès wap pour tous tes congénères :D
 
 
 
ps: comment vous faites pour inverser exactement les é et les er entre participes passés et infinitifs :??:

n°972981
T509
$job-&gt;GetJob(now)
Posté le 05-02-2005 à 22:25:35  profilanswer
 

Si tu regardes le code de la page donnée en lien, c'est le moteur de recherche TF1 Sonnerie :
 

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
  3. <wml><card id="titre" title="tf1 sonneries">
  4. <p align="center"><img src="/imgGoodies.php?f=1992&amp;g=330" alt="Tous les th&#232;mes"/></p>
  5. <p>
  6. </p>
  7. <p align="center"><img src="/imgGoodies.php?f=2001&amp;g=330" alt="Recherche"/></p>
  8. <p><input name="keyword" value="" emptyok="true"/>
  9. <anchor title="rechercher">OK <go href="" method="get">
  10. <postfield name="keyword" value="$(keyword)"/>
  11. <postfield name="u" value="103"/>
  12. <postfield name="s" value="7"/>
  13. <postfield name="tick" value="1ab7275b86ed2787d3788978a6caca4c"/>
  14. <postfield name="pg" value="recherche"/>
  15. </go></anchor><br/>
  16. ------------<br/>
  17. <a href="?pg=home&amp;u=103&amp;tick=1ab7275b86ed2787d3788978a6caca4c&amp;s=7">&lt;Retour</a><br/>
  18. <a href="?pg=home&amp;tick=1ab7275b86ed2787d3788978a6caca4c&amp;s=7">&lt;Accueil tf1 sonneries</a><br/>
  19. <a href="http://www.orange.fr/0/accueil/Retour?SA=GEKIOSQUE">&lt;Accueil Gallery</a>
  20. </p>
  21. <do type="prev" label="Retour"><prev/></do></card></wml>


 
Clique sur le lien !!!


Message édité par T509 le 05-02-2005 à 22:25:50
n°973029
Badze
Aime les frites
Posté le 06-02-2005 à 01:16:25  profilanswer
 

le truc qui m'intrigue vraiment est que. Il faut que le site soi accessible principalement par le gens sur le NET par leur PC et par leur PORTABLE.
 
Ce qui veux donc dire que je doit confondre les 2 langages dans mon formualaire soit :  
 
"<FORM action="_inscription.php" method="post">
......
<input type="text" name="login">
......
<input type="submit" value ="envoyer">
</form> "      =====> pour les gens qui veule valider sur leur pc
 
 
et par portable  
 
 
 
"<anchor title="rechercher">OK <go href="" method="get">
....... un nouveau formualaire.....
</go></anchor>"
 
Ca fait pas tres propre davoir 2 formulaires sur une page.
Si vous voyer ce que je veux dire bien sur.
 
 
 

n°973078
Mr Mala
Posté le 06-02-2005 à 04:46:38  profilanswer
 

Ben t'as pas trop le choix alors, il faut que ta page qui contient le formulaire soit aussi une page .php où tu vérifieras le USER_AGENT pour savoir si le client qui appelle cette page est un pc ou un téléphone et afficher le formulaire correspondant ...

n°973138
benou
Posté le 06-02-2005 à 12:07:14  profilanswer
 

bon.
 
1) tu ne peux pas avoir le même site pour les PC et les portables. Même si tu y arriverais, soit ton site serait très moche sur PC, soit il serait quasi inutilisable sur portable (et encore, c'est si tu a la chance qu'il fonctionne) => soit tu gères le fait que chacune de tes pages vérifies le user-agent pour avoyer la version web ou la version PC, soit tu fais carément 2 version de sites (ce que je te conseille grandement !!)
 
2) pour développper un site sur un portable tu as 2 langages : WML (wap1) et XHTML MP (wap2). Dans les 2 cas, ce n'est pas du simple HTML. Il faut quand même ajoutre que la plupart des navigateurs WAP2 sont fait pour être souple, c'est à dire ne pas s'arrêter à la moindre erreur du XHTML => tu peux plus ou moins arriver à consulte run site HTML "simple" sur certains téléphones, mais y a rien de garanti !
3) si tu veux faire un site qui marche sur ton portable, tu ne vas pas y couper, il va falloir que tu te document sur le WML ou le XHTMLMP. pour le WML on t'as déjà fillé pas mal de lien. Pour le XHTML MP je te conseille d'aller sur la partie développeur dur site d'openwave, y a pas mal de bonnes doc.
 
 
maintenant, si tu penses que c'est facile de développer pour un téléphone portable, et que tu vas pouvoir le faire quasiment sans effort, tu te trompes. ca nécessite pas mal de connnaissances ... bref, y a du boulot !

n°973142
benou
Posté le 06-02-2005 à 12:09:16  profilanswer
 

badze a écrit :


 
Ca fait pas tres propre davoir 2 formulaires sur une page.
Si vous voyer ce que je veux dire bien sur.


bha non mais faut pas que ce soit la même page [:kiki]
 
faut pas mélanger du WML et du HTML dans la même page ...
 
 
est-ce que tu sais ce que c'est qu'une DTD ? et plus généralement le XML ?

n°973146
T509
$job-&gt;GetJob(now)
Posté le 06-02-2005 à 12:19:31  profilanswer
 

je ne voudrais pas mettre mon grain de sel mais il y a aussi le cHTML pour I-Mode   :D

n°973148
T509
$job-&gt;GetJob(now)
Posté le 06-02-2005 à 12:21:45  profilanswer
 

Perso je conseille 3 versions :
 

  • Une version XHTML PC
  • Une version WML pour les téléphones WAP
  • Une version cHTML pour les téléphones I-Mode.


A cela il faut ajouter une URL d'accès très simple pour les téléphones vu la lourdeur de la saisie.

n°973263
Berceker U​nited
PSN : berceker_united
Posté le 06-02-2005 à 14:27:46  profilanswer
 

Je crois que tous est résumé ici il y a pas photo. [:chewyy]  
Le compte est bon [:aloy]

n°973318
benou
Posté le 06-02-2005 à 16:25:08  profilanswer
 

T509 a écrit :

je ne voudrais pas mettre mon grain de sel mais il y a aussi le cHTML pour I-Mode   :D


ouais, enfin le cHTML c'est quand même vachement plus facile que le WML ou le XHTML MP : les téléphones sont agréés par l'opérateur => ils respectent correctement le langage. Ce qui est loin d'être le cas des téléphones WAP2 par exemple :/
 
sinon pour ton histoire d'url simple, en ce qui concerne l'i-mode y a pas de problême : tu peux envoyer un mail avec l'adresse du site, elle sera cliquable. Ca marche aussi avec des SMS pour certains téléphones WAP, mais pas tous ...

n°973367
T509
$job-&gt;GetJob(now)
Posté le 06-02-2005 à 17:49:07  profilanswer
 

En effet, cela s'apelle Push-mail sur UID pour I-Mode et Wap-push sur les téléphones Wap. Coût d'un SMS dans le second cas. C'est pour cela que je préfère les sous domaines pour les URL comme wap.ton-domaine.ext que www.ton-domaine.ext/site/wap/ par exemple.
 
Et c'est vrai que cHTML est largement plus simple que WML et XHTML-MP.
Par contre, il vaut mieux se concentrer sur WML et avoir quelque chose qui fonctionne sur beaucoup de portables que du XHTML-MP que l'on ne pourra pas tester correctement car tous les téléphones ont une implémentation différentes. Et avoir tous les téléphones en test est une mission compliquée.

n°973374
benou
Posté le 06-02-2005 à 17:57:02  profilanswer
 

t509> je suis bien d'accord.
 
je parlais pas des pushwap, je parlais d'un bête SMS texte cliquable. En tant que particulier, ca doit pas être évident d'envoyer un pushwap :/
 
sinon pour l'imode, t'es pas obligé de passer par l'uid : un simple mail vers l'adresse du gars et c'est bon. Pour avoir l'uid, faut être un site officiel, ce qui a coup sûr n'est pas le cas de notre ami ;)


Message édité par benou le 06-02-2005 à 17:57:33
n°973414
T509
$job-&gt;GetJob(now)
Posté le 06-02-2005 à 19:17:08  profilanswer
 

Tout à fait exact. c'est vrai que j'oubliais le num.tel@imode.fr
 
Depuis un script php, envoyer un wap-push ou un sms, c'est pareil. le premier est en binaire, le second en texte. Après il faut l'interface ad hoc....
Et puis les téléphones capables de faire de l'extraction URL à partir d'un SMS, il n'y en a pas des tonnes. je sais que cela fonctionne avec les Sagem.


Message édité par T509 le 06-02-2005 à 19:17:35
n°973521
Badze
Aime les frites
Posté le 06-02-2005 à 20:28:39  profilanswer
 

on viens de me parler de USER_AGENT.
Mais peut on l'utilisé:
 
if (USER_AGENT== ??????)
header ('location:????.wml')
 
if (USER_AGENT== ??????)
header ('location:????.php')
 
je n'ai pas les connaissance de cette fonction qui n'existe pas dans mes recherches ;) . De plus, cette fonction doit permettre de differencier la version du browser utilisé.
seulmeent je ne connais pas non plus comment on nomme "si on passe par un pc" ou "si on passe par un portable". ??????
 
Mon histoire commence a s'éclaircir petit a petit :)

n°973528
glod 2
Votre trajet, notre projet.
Posté le 06-02-2005 à 20:40:11  profilanswer
 

Le ;) après "dans mes recherches" ça veut dire "après les recherches que vous allez faire pour moi car chuis un gros flemmard" ? :D

n°973530
T509
$job-&gt;GetJob(now)
Posté le 06-02-2005 à 20:41:23  profilanswer
 

En sachant que chaque téléphone possède un User-Agent différent et que parfois, il change même entre différentes version d'un même téléphone suivant son firmware, c'est une galère de bien reconnaitre le visiteur.
 
De plus certains téléphones ne répondent pas corrctement au résultat de la fonction header()
 
Tu peux tout à fait garder des pages php quelque soit le terminal du visiteur. Le tout est d'envoyer le bon content-type.

n°973532
T509
$job-&gt;GetJob(now)
Posté le 06-02-2005 à 20:42:25  profilanswer
 
n°973539
Badze
Aime les frites
Posté le 06-02-2005 à 20:55:14  profilanswer
 

c'est bon, apres mes recherche intempestive, j'ai trouver ca.
 
<?php
$pageimode = "imode/index.htm";
$pagehtml = "index.inc";
$USER_AGENT = getenv("HTTP_USER_AGENT" );
if ( eregi("portalmmm", $USER_AGENT) ) require($pageimode);
else if ( eregi("SmartPhone", $USER_AGENT) ) require($pageimode);
else if ( eregi("PocketPC", $USER_AGENT) ) require($pageimode);
else if ( eregi("WinCE", $USER_AGENT) ) require($pageimode);
else if ( eregi("Windows CE", $USER_AGENT) ) require($pageimode);
else if ( eregi("Palm", $USER_AGENT) ) require($pageimode);
else if ( eregi("Alcatel", $USER_AGENT) ) require($pageimode);
else if ( eregi("Ericsson", $USER_AGENT) ) require($pageimode);
else if ( eregi("Fujitsu", $USER_AGENT) ) require($pageimode);
else if ( eregi("Kokusai", $USER_AGENT) ) require($pageimode);
else if ( eregi("LG", $USER_AGENT) ) require($pageimode);
else if ( eregi("Matsushita", $USER_AGENT) ) require($pageimode);
else if ( eregi("Mitsubishi", $USER_AGENT) ) require($pageimode);
else if ( eregi("Motorola", $USER_AGENT) ) require($pageimode);
else if ( eregi("NEC", $USER_AGENT) ) require($pageimode);
else if ( eregi("Nokia", $USER_AGENT) ) require($pageimode);
else if ( eregi("Panasonic", $USER_AGENT) ) require($pageimode);
else if ( eregi("Philips", $USER_AGENT) ) require($pageimode);
else if ( eregi("Sagem", $USER_AGENT) ) require($pageimode);
else if ( eregi("Samsung", $USER_AGENT) ) require($pageimode);
else if ( eregi("Sendos", $USER_AGENT) ) require($pageimode);
else if ( eregi("Sharp", $USER_AGENT) ) require($pageimode);
else if ( eregi("Siemens", $USER_AGENT) ) require($pageimode);
else if ( eregi("Sony", $USER_AGENT) ) require($pageimode);
else if ( eregi("Toshiba", $USER_AGENT) ) require($pageimode);
else require("$pagehtml" );
?>
 
C'est deja du bon. Je vais tester tout ca et je vous redonerai des nouvelles ;)

n°973639
esox_ch
Posté le 06-02-2005 à 22:55:01  profilanswer
 

Eventuellement faire ca d'une maniere plus lisible avec un switch ?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°973670
cerel
Posté le 06-02-2005 à 23:56:16  profilanswer
 

Je pencherais plus pour un petit tableau couple a un in_array :

Code :
  1. <?php
  2. $pageimode = "imode/index.htm";
  3. $pagehtml = "index.inc";
  4. $USER_AGENT = getenv("HTTP_USER_AGENT" );
  5. $portables = array();
  6. $portables[] = "portalmmm";
  7. $portables[] = "SmartPhone";
  8. $portables[] = "PocketPC";
  9. $portables[] = "WinCE";
  10. $portables[] = "Windows CE";
  11. $portables[] = "Palm";
  12. // ...
  13. if (in_array($USER_AGENT,$portables)) {
  14.   require($pageimode);
  15. } else {
  16.   require("$pagehtml" );
  17. }
  18. ?>


Message édité par cerel le 06-02-2005 à 23:58:52
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  langage WAP desoler pour le mauvais emplacement de post

 

Sujets relatifs
recherche site langage html livre d'or compteur etcQuel est votre langage préféré ?
http_row_post_data inconnu!HTTP_POST_VARS
[J2ME] un POST httpip et date lors du post d'un message ds une base access
quel est pour vous le meilleur langage?Afficher une page web dans un post sur un forum phpbb2
inserer [ IMaGe ] dans un post pleaseVariable $_POST qui marche pas avec l'attribut ID
Plus de sujets relatifs à : langage WAP desoler pour le mauvais emplacement de post


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR