pj27
Messages postés12Date d'inscriptionjeudi 16 février 2006StatutMembreDernière intervention 7 juillet 2008
-
20 juin 2008 à 20:08
barroidrissa
Messages postés3Date d'inscriptionvendredi 10 avril 2009StatutMembreDernière intervention 4 novembre 2010
-
4 nov. 2010 à 00:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
barroidrissa
Messages postés3Date d'inscriptionvendredi 10 avril 2009StatutMembreDernière intervention 4 novembre 2010 4 nov. 2010 à 00:13
Salut aKheNathOn,
d'abord ton code il est pure,facile a comprendre pour nous les debutants en ajax et facilement adaptable!!!
je mets 10/10 pour ne pas dire 11/10 si ça existait!!!
alors j'ai essayer d'enregistrer les produits saisis dans une base de données,la modification ainsi que la suppression,tout passe nikel.
mais quand j'essai de selectionner les produits dans la bdd pour les afficher avec la fonction refreshPannier() au demarage de la page,je n'obtient pas de resultat ou bien ce n'est pas possible!comme je l'ai dit je suis debutant en ajax!!
voici ce que j'ai fait:
function getProduits() {
if (isset($_SESSION['pannier'])) {
$req=mysql_query("select * from produit");
if($req!=false){
while($affiche=mysql_fetch_row($req)){
$_SESSION['pannier'][$ref]->ref=$affiche['ref'];
$_SESSION['pannier'][$ref]->titre=$affiche['titre'];
$_SESSION['pannier'][$ref]->pu=$affiche['pu'];
$_SESSION['pannier'][$ref]->qte=$affiche['qte'];
}
return $_SESSION['pannier'];
}
} else return array();
}
es-ce le bon emplacement ou ai-je fais des erreurs?
encore une fois de plus ton code est propre(10/10)!!!
merci pour ce toolkit bien codé!!a+
gigamaster
Messages postés13Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention15 juin 2009 15 déc. 2008 à 10:43
Merci, je m'en vais tester cette approche qui semble bien pratique ^^
je te confirme comme quoi c'est OK. Ptite astuce pour éviter ce genre d'erreur :
Si votre fichier PHP est fait sous windows ou provient d'une base de données avec le charset par défaut, il faut effectivement rajoutter dans le Content-type le charset iso-8859-1 / si vous êtes sous linux ou sous une IDE qui vous enregistre les fichiers en UTF-8 faites la modif en conséquence.
Afin de gérer le charset dans tous les cas de figures il faudrait du code supplémentaire - tout upgrade sur le code est bien venu en MP.
bonne prog et a+,
akh
steph_dev_o
Messages postés7Date d'inscriptionlundi 19 mars 2007StatutMembreDernière intervention18 novembre 2009 17 août 2008 à 20:08
Bonjour,
J'ai intégré les scripts dans un projet, et ça marche nickel donc j'en profite pour noter ...
Toutefois, j'ai eu un problème que je pense avoir résolu (car je suis totalement nouveau en ce qui concerne Ajax).
Ma page envoie la requête pour récupérer un nom. Ce nom contient des accents. Il est retourné avec des "?" qui remplacent ces accents ...
J'ai donc mis en place un envoi de header supplémentaire placé dans le code de Ajaxify.class.php au niveau des fonction : render_js() et render_response($value).
Voici ces fonctions :
function render_js() {
header('Content-type: application/x-javascript');
header('Content-type: text/html; charset=iso-8859-1'); /* <<<< nouveau code */
header("Cache-Control: no-cache");
....
et
function render_response($value) {
header('Content-type: text/html; charset=iso-8859-1'); /* <<<< nouveau code */
header("Cache-Control: no-cache");
echo 'var globalRet = ';
....
Comme je ne maitrise pas tout, pouvez vous me dire si c'est OK comme modif ...
Merci d'avance et encore merci pour ce toolkit bien pratique
Stéphane
michelsto
Messages postés27Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention12 avril 2009 25 juin 2008 à 20:56
Ca fonction nikel maintenant.
Encore merci pour ce super code. 10/10
Michel
Ok, je monte un IIS avec PHP - en message privé tu peux me donner les versions de PHP, IIS et IE.
michelsto
Messages postés27Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention12 avril 2009 24 juin 2008 à 10:22
Je viens de faire la modification ça fonctionne maintenant dans Firefox sans problème et c'est super, mais avec IE il ne donne plus de message d'erreur http, mais une erreur javascript.
Exemple j'essaie le panier je tape des '1' dans les zones je clique 'ajout' et il me donne l'erreur javascript suivante:
Ligne:22 Car 4
Erreur:Cet objet ne gère pas cette propriété ou cette méthode
Code:0
URL:http://localhost/test/ajaxify/demo_panier.php
Dans le fichier lib/js_template.php remplace la ligne 3 par celle-ci :
uri = 'http://<?php echo $_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].$_SERVER['SCRIPT_NAME'].'?js='.$_GET['js']; ?>';
Merci de confirmer si ça fonctionne.
michelsto
Messages postés27Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention12 avril 2009 24 juin 2008 à 06:53
Salut AkheNathOn,
Je viens d'éssayer le code sur une autre machine aussi avec IIS et là encore plus bizare il me dit que 'The page cannot be found' comme ci la page n'existait pas sur le serveur.
Alors que le fichier test.php que j'ai placé juste à côté fonctionne.
Il me semble que les superglobals ne sont pas les mêmes sous IIS et Apache - cad $_SERVER n'a pas les mêmes valeurs. Du coup ligne 3 du fichier lib/js_template.php ne doit pas être compatible IIS. En tout cas le pb vient du côté PHP / IIS que du côté compatibilité navigateur / JS.
Dans un fichier 'test.php' dans le même repertoire que tes scripts écris <?php print_r($_SERVER); ?> puis envoies-moi en MP le résultat, je vais voir ce qui ne passe pas et publierais un patch en fonction.
Sodams, tes remarques sont justes, tu utilises un style plutôt "compact" ce qui peut avoir son effet - diminuer les temps de parsing du script - perso j'aime bien mais malheureusement c'est peu lisible, voire pas lisible (en comparaison à une syntaxe plus classique).
Perso tu ne me verras jamais écrire comme ça car mon but est que le débutant de base arrive à intégrer et comprendre mes codes - enfin je l'espére et j'essaye de lui en faciliter la tâche. Mais bon après sur du CORE framework c'est tout autre chose - en tout cas ta remarque est pertinente.
michelsto
Messages postés27Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention12 avril 2009 23 juin 2008 à 13:07
Bonjour, cet outil à l'air super. j'ai essayé de le tester en local sur mon IIS et il me dit Error code 405 : Error to connect to http://localhost:80. J'ai juste copié les source dans un répertoire en gardent la structure des dossier et j'ai exécuté demo_account ou demo_pannier et quand je clique soit pour ajouter un article ou pour simuler un login, j'ai le message. J'ai éssayé avec IE et Firefox idem.
Mon serveur fonctionne bien avec d'autre application web. Y compris les requête HTTPRequest
Qu'ai je fais ou pas fais de bien ?
Mich
cs_Sodams
Messages postés57Date d'inscriptionmercredi 11 juin 2008StatutMembreDernière intervention18 novembre 2009 22 juin 2008 à 13:26
J'aurai même fais return (isset($_SESSION['pannier']))? ($_SESSION['pannier'] : (array());
Encore une fois ce n'est pas une critique. :-)
winwarrior
Messages postés654Date d'inscriptionjeudi 3 avril 2003StatutMembreDernière intervention10 février 20091 22 juin 2008 à 10:58
A mon avis, il voulait juste dire "enlever le else", pas la ligne entiere.
function getProduits() {
if (isset($_SESSION['pannier'])) {
return $_SESSION['pannier'];
}
return array();
}
Moi j'aurais meme dit "enleve les accolades" , mais bon, chacun sa façon de coder =)
Coucou a tout à fait raison, le résultat doit être un tableau, s'il est vide on boucle pas mais s'il ne l'est pas on boucle dessus pour traiter son contenu. Sans vérif du type on peut tomber sur des erreurs lors de l'utilisation du résultat - exemple : Array.length passe sur un tableau, mais si on retourne null et qu'on cherche sa property length il va pas aimer.
djlghoul, je viens de regarder ton site, c'est un peu le bazard tu mélanges tutos PHP, videos voitures, et téléchargements de films - conclusion manque de ligne directrice ou je ne l'ai pas saisie. Autre question, pourquoi avoir fait le choix de Joomla! ? Il te faudra maîtrise leur framework CORE pour y intégrer des lib et modifier leurs modules - leur système est loin d'être intuitif.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 22 juin 2008 à 00:06
si son else est utile pour le typage, tu peux avoir des notices sans ce else.
cs_Sodams
Messages postés57Date d'inscriptionmercredi 11 juin 2008StatutMembreDernière intervention18 novembre 2009 21 juin 2008 à 23:31
Voila le vote. ^^
cs_Sodams
Messages postés57Date d'inscriptionmercredi 11 juin 2008StatutMembreDernière intervention18 novembre 2009 21 juin 2008 à 23:29
Voilà quelque chose de bien coder et utile.
Un 10 pour monsieur.
Au fait :
# function getProduits() {
# if (isset($_SESSION['pannier'])) {
# return $_SESSION['pannier'];
# } else return array();
# }
Pas besoin du else :-)
djlghoul
Messages postés6Date d'inscriptionsamedi 8 décembre 2007StatutMembreDernière intervention21 juin 2008 21 juin 2008 à 20:08
j'ai un site web mais j'aimerai bien l'organiser parceque il est totalement riche en tout les modules et les composants parmi eux moteur de recherche AJAX si quelqu'un a une idée ou quelque chose
vous pouvez vister le site puis me laisser des solutions ou des idée www.sami.10gbfreehost.com
En plus d'être compatible PHP 4, mon code HTML est en 3.2 (lol). Pour la partie démo c'est du bloc notes du coup j'ai fait simple.
Vu c'est une lib, je me suis dit que tant qu'à faire qu'elle soit compatible si je ne dois pas sacrifier les perfs - mais rien ne vous empêche de faire vos classes en PHP5. Quand PHP 6 arrivera je n'en ferrais plus ...
Les résultats des executions (retour de vos fonctions) peuvent être des tableaux ou des objets, ou les deux - voir getProduits -> tableau contenant des objets de classe produit. Le tout est sérialisé en JSON. pour la partie sérialisation des classes js gérant les requettes AJAX c'est du pseudo JSON au niveau syntaxe - quant aux exemple c'est des fonctions afin de ne pas allourdir la lecture pour les novices.
Merci pour vos encouragements, ça fait chaud au coeur :)
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 21 juin 2008 à 04:22
il te manque un tbody dans ta table, c'est nul, 1/10, et c'est parce-que je peux pas mettre 0 !
bon allez, j'arrete d'essayer de faire de l'humour, j'y arrive pas, 10/10, et je te pose quand meme quelques questions :
pourquoi tu fais pas du json ?
<script language="javascript"> => <script type="text/javascript">
et sacrifie php4 pour php5 serieux...
pj27
Messages postés12Date d'inscriptionjeudi 16 février 2006StatutMembreDernière intervention 7 juillet 2008 20 juin 2008 à 20:08
Bien codé, bien pensé, et rien que pour le système et l'idée de ce projet, je mets 10.
4 nov. 2010 à 00:13
d'abord ton code il est pure,facile a comprendre pour nous les debutants en ajax et facilement adaptable!!!
je mets 10/10 pour ne pas dire 11/10 si ça existait!!!
alors j'ai essayer d'enregistrer les produits saisis dans une base de données,la modification ainsi que la suppression,tout passe nikel.
mais quand j'essai de selectionner les produits dans la bdd pour les afficher avec la fonction refreshPannier() au demarage de la page,je n'obtient pas de resultat ou bien ce n'est pas possible!comme je l'ai dit je suis debutant en ajax!!
voici ce que j'ai fait:
function getProduits() {
if (isset($_SESSION['pannier'])) {
$req=mysql_query("select * from produit");
if($req!=false){
while($affiche=mysql_fetch_row($req)){
$_SESSION['pannier'][$ref]->ref=$affiche['ref'];
$_SESSION['pannier'][$ref]->titre=$affiche['titre'];
$_SESSION['pannier'][$ref]->pu=$affiche['pu'];
$_SESSION['pannier'][$ref]->qte=$affiche['qte'];
}
return $_SESSION['pannier'];
}
} else return array();
}
es-ce le bon emplacement ou ai-je fais des erreurs?
encore une fois de plus ton code est propre(10/10)!!!
merci pour ce toolkit bien codé!!a+
15 déc. 2008 à 10:43
22 août 2008 à 16:34
je te confirme comme quoi c'est OK. Ptite astuce pour éviter ce genre d'erreur :
Si votre fichier PHP est fait sous windows ou provient d'une base de données avec le charset par défaut, il faut effectivement rajoutter dans le Content-type le charset iso-8859-1 / si vous êtes sous linux ou sous une IDE qui vous enregistre les fichiers en UTF-8 faites la modif en conséquence.
Afin de gérer le charset dans tous les cas de figures il faudrait du code supplémentaire - tout upgrade sur le code est bien venu en MP.
bonne prog et a+,
akh
17 août 2008 à 20:08
J'ai intégré les scripts dans un projet, et ça marche nickel donc j'en profite pour noter ...
Toutefois, j'ai eu un problème que je pense avoir résolu (car je suis totalement nouveau en ce qui concerne Ajax).
Ma page envoie la requête pour récupérer un nom. Ce nom contient des accents. Il est retourné avec des "?" qui remplacent ces accents ...
J'ai donc mis en place un envoi de header supplémentaire placé dans le code de Ajaxify.class.php au niveau des fonction : render_js() et render_response($value).
Voici ces fonctions :
function render_js() {
header('Content-type: application/x-javascript');
header('Content-type: text/html; charset=iso-8859-1'); /* <<<< nouveau code */
header("Cache-Control: no-cache");
....
et
function render_response($value) {
header('Content-type: text/html; charset=iso-8859-1'); /* <<<< nouveau code */
header("Cache-Control: no-cache");
echo 'var globalRet = ';
....
Comme je ne maitrise pas tout, pouvez vous me dire si c'est OK comme modif ...
Merci d'avance et encore merci pour ce toolkit bien pratique
Stéphane
25 juin 2008 à 20:56
Encore merci pour ce super code. 10/10
Michel
25 juin 2008 à 16:37
24 juin 2008 à 10:32
24 juin 2008 à 10:22
Exemple j'essaie le panier je tape des '1' dans les zones je clique 'ajout' et il me donne l'erreur javascript suivante:
Ligne:22 Car 4
Erreur:Cet objet ne gère pas cette propriété ou cette méthode
Code:0
URL:http://localhost/test/ajaxify/demo_panier.php
24 juin 2008 à 10:09
uri = 'http://<?php echo $_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].$_SERVER['SCRIPT_NAME'].'?js='.$_GET['js']; ?>';
Merci de confirmer si ça fonctionne.
24 juin 2008 à 06:53
Je viens d'éssayer le code sur une autre machine aussi avec IIS et là encore plus bizare il me dit que 'The page cannot be found' comme ci la page n'existait pas sur le serveur.
Alors que le fichier test.php que j'ai placé juste à côté fonctionne.
Voici le contenu de $_SERVER:
Array ( [ALLUSERSPROFILE] => C:\Documents and Settings\All Users [CLASSPATH] => .;C:\Program Files\Java\jre1.5.0_12\lib\ext\QTJava.zip [CommonProgramFiles] => C:\Program Files\Common Files [COMPUTERNAME] => MICHEL2 [ComSpec] => C:\WINDOWS\system32\cmd.exe [CONTENT_LENGTH] => 0 [FP_NO_HOST_CHECK] => NO [GATEWAY_INTERFACE] => CGI/1.1 [HTTP_ACCEPT] => */* [HTTP_ACCEPT_LANGUAGE] => fr-be [HTTP_CONNECTION] => Keep-Alive [HTTP_HOST] => localhost [HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; OfficeLiveConnector.1.1) [HTTP_COOKIE] => name=sfsdf; first_name=sdf; organisation=sdfsdfsd; email=michel%40iif.be; email_conf=michel%40iif.be [HTTP_ACCEPT_ENCODING] => gzip, deflate [HTTPS] => off [INSTANCE_ID] => 1 [LOCAL_ADDR] => 127.0.0.1 [NUMBER_OF_PROCESSORS] => 2 [OS] => Windows_NT [Path] => C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\QuickTime\QTSystem\ [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH [PROCESSOR_ARCHITECTURE] => x86 [PROCESSOR_IDENTIFIER] => x86 Family 6 Model 15 Stepping 6, GenuineIntel [PROCESSOR_LEVEL] => 6 [PROCESSOR_REVISION] => 0f06 [ProgramFiles] => C:\Program Files [QTJAVA] => C:\Program Files\Java\jre1.5.0_12\lib\ext\QTJava.zip [REMOTE_ADDR] => 127.0.0.1 [REMOTE_HOST] => 127.0.0.1 [REQUEST_METHOD] => GET [SCRIPT_NAME] => /ajaxify/test.php [SERVER_NAME] => localhost [SERVER_PORT] => 80 [SERVER_PORT_SECURE] => 0 [SERVER_PROTOCOL] => HTTP/1.1 [SERVER_SOFTWARE] => Microsoft-IIS/5.1 [SystemDrive] => C: [SystemRoot] => C:\WINDOWS [TEMP] => C:\WINDOWS\TEMP [TMP] => C:\WINDOWS\TEMP [USERPROFILE] => C:\Documents and Settings\LocalService [windir] => C:\WINDOWS [ORIG_PATH_TRANSLATED] => C:\USER\DATA\wwwroot\ajaxify\test.php [ORIG_PATH_INFO] => /ajaxify/test.php [ORIG_SCRIPT_NAME] => /ajaxify/test.php [SCRIPT_FILENAME] => C:\USER\DATA\wwwroot\ajaxify\test.php [PHP_SELF] => /ajaxify/test.php [argv] => Array ( ) [argc] => 0 )
Merci pour ton aide.
Mich.
24 juin 2008 à 00:42
Il me semble que les superglobals ne sont pas les mêmes sous IIS et Apache - cad $_SERVER n'a pas les mêmes valeurs. Du coup ligne 3 du fichier lib/js_template.php ne doit pas être compatible IIS. En tout cas le pb vient du côté PHP / IIS que du côté compatibilité navigateur / JS.
Dans un fichier 'test.php' dans le même repertoire que tes scripts écris <?php print_r($_SERVER); ?> puis envoies-moi en MP le résultat, je vais voir ce qui ne passe pas et publierais un patch en fonction.
Sodams, tes remarques sont justes, tu utilises un style plutôt "compact" ce qui peut avoir son effet - diminuer les temps de parsing du script - perso j'aime bien mais malheureusement c'est peu lisible, voire pas lisible (en comparaison à une syntaxe plus classique).
Perso tu ne me verras jamais écrire comme ça car mon but est que le débutant de base arrive à intégrer et comprendre mes codes - enfin je l'espére et j'essaye de lui en faciliter la tâche. Mais bon après sur du CORE framework c'est tout autre chose - en tout cas ta remarque est pertinente.
23 juin 2008 à 13:07
J'ai juste copié les source dans un répertoire en gardent la structure des dossier et j'ai exécuté demo_account ou demo_pannier et quand je clique soit pour ajouter un article ou pour simuler un login, j'ai le message. J'ai éssayé avec IE et Firefox idem.
Mon serveur fonctionne bien avec d'autre application web. Y compris les requête HTTPRequest
Qu'ai je fais ou pas fais de bien ?
Mich
22 juin 2008 à 13:26
Encore une fois ce n'est pas une critique. :-)
22 juin 2008 à 10:58
function getProduits() {
if (isset($_SESSION['pannier'])) {
return $_SESSION['pannier'];
}
return array();
}
Moi j'aurais meme dit "enleve les accolades" , mais bon, chacun sa façon de coder =)
22 juin 2008 à 01:03
djlghoul, je viens de regarder ton site, c'est un peu le bazard tu mélanges tutos PHP, videos voitures, et téléchargements de films - conclusion manque de ligne directrice ou je ne l'ai pas saisie. Autre question, pourquoi avoir fait le choix de Joomla! ? Il te faudra maîtrise leur framework CORE pour y intégrer des lib et modifier leurs modules - leur système est loin d'être intuitif.
22 juin 2008 à 00:06
21 juin 2008 à 23:31
21 juin 2008 à 23:29
Un 10 pour monsieur.
Au fait :
# function getProduits() {
# if (isset($_SESSION['pannier'])) {
# return $_SESSION['pannier'];
# } else return array();
# }
Pas besoin du else :-)
21 juin 2008 à 20:08
vous pouvez vister le site puis me laisser des solutions ou des idée www.sami.10gbfreehost.com
21 juin 2008 à 06:19
Vu c'est une lib, je me suis dit que tant qu'à faire qu'elle soit compatible si je ne dois pas sacrifier les perfs - mais rien ne vous empêche de faire vos classes en PHP5. Quand PHP 6 arrivera je n'en ferrais plus ...
Les résultats des executions (retour de vos fonctions) peuvent être des tableaux ou des objets, ou les deux - voir getProduits -> tableau contenant des objets de classe produit. Le tout est sérialisé en JSON. pour la partie sérialisation des classes js gérant les requettes AJAX c'est du pseudo JSON au niveau syntaxe - quant aux exemple c'est des fonctions afin de ne pas allourdir la lecture pour les novices.
Merci pour vos encouragements, ça fait chaud au coeur :)
21 juin 2008 à 04:22
bon allez, j'arrete d'essayer de faire de l'humour, j'y arrive pas, 10/10, et je te pose quand meme quelques questions :
pourquoi tu fais pas du json ?
<script language="javascript"> => <script type="text/javascript">
et sacrifie php4 pour php5 serieux...
20 juin 2008 à 20:08