JeuWeb - Crée ton jeu par navigateur
[Résolu][xAjax] Problème de condition dans une fonction - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu][xAjax] Problème de condition dans une fonction (/showthread.php?tid=2653)



[Résolu][xAjax] Problème de condition dans une fonction - Seals - 06-06-2008




RE: [xAjax] Problème de condition dans une fonction - Shivaan Keldon - 06-06-2008

la première chose qui me vient à l'esprit quand je lis ton code, c'est ceci :

Code PHP :
<?php 
$temps_fichier
= filetime('./cache/maj_titres.cache');

il me semble que la fonction filetime n'existe pas en Php. ce serait plutôt filemtime. serait-ce donc une faute de frappe ?

voir ici pour plus d'infos


RE: [xAjax] Problème de condition dans une fonction - Seals - 06-06-2008

punaise....
alors là je suis vraiment désolé d'avoir fait un sujet juste pour une faute de frappe... (pourquoi mettre un M entre file et time aussi ! xDxD)

je te remercie Shivaan, mon script fonctionne maintenant ^_^"


RE: [reglé, faute de frappe] [xAjax] Problème de condition dans une fonction - Shivaan Keldon - 06-06-2008

je t'en prie Smile
c'est souvent le problème quand on a le nez dans le guidon. on ne remarque pas ce genre de petites fautes de frappes. et on passe des heures à chercher le bug
d'où l'intérêt de ce forum, j'imagine Smile


RE: [reglé, faute de frappe] [xAjax] Problème de condition dans une fonction - Seals - 06-06-2008




RE: [reglé, faute de frappe] [xAjax] Problème de condition dans une fonction - Shivaan Keldon - 06-06-2008

pfff, 4h du mat... vive les insomnies

je vais en profiter pour te donner quelques conseils, si tu me le permets. ils concernent le code que tu as montré, et ne sont peut-être pas valable si tu l'as modifié juste pour le mettre ici

1) Redondance
évite tant que possible de déclarer tes constantes MySql dans ta page, pour la simple et bonne raison que si un jour, tes identifiants changent, tu dois modifier toutes tes pages
procède plutôt comme ça :

Code PHP :
<?php
/* page constantes.php */
define(SQL_HOST, 'localhost');
define(SQL_USER, 'root');
define(SQL_MDP, '');
define(SQL_DB, 'dev_dev');
?>

<?php
/* les autres pages */
require_once "constantes.php";
?>

2) mysql_
bien que ce ne soit pas tout à fait le cas, on peut quand même dire que les fonctions mysql_* sont dépréciées. depuis Php5, il est vivement recommandé d'utiliser PDO.
les avantages :
- gestion des transactions (très utile en cas d'insert/update à la chaîne)
- meilleure gestion des connexions persistantes
- plus plein d'autre. pour la doc, voir ici

dans ton cas,
Code PHP :
<?php 
mysql_connect
(SQL_HOST, SQL_USER, SQL_MDP);
mysql_select_db(SQL_DB);
...
$cherche_liste = mysql_query('SELECT test_titre FROM dev_test ORDER BY test_id DESC LIMIT 5;');
$unArray = array();
while (
$liste = mysql_fetch_assoc($cherche_liste)) {
$unArray[] = $liste['test_titre'];
}
serait remplacé par
Code PHP :
<?php 
$dbh
= new PDO('mysql:host='.SQL_HOST.';dbname='.SQL_DB, SQL_USER, SQL_MDP);
...
$cherche_liste = $dbh->query('SELECT test_titre FROM dev_test ORDER BY test_id DESC LIMIT 5;');
$unArray = array();
while (
$liste = $cherche_liste->fetch(PDO::FETCH_NAMED)) {
$unArray[] = $liste['test_titre'];
}

3) simple quotes
d'une manière générale, je te conseillerai de ne pas utiliser de simples quotes (apostrophes) pour définir tes requêtes SQL. d'une part parce que les simple quotes, en Php, sont normalement réservés aux caractères (et non pas chaînes de caractères), et d'autre part parce que si tu as le malheur d'avoir un apostrophe dans les données de ta requête sans avoir fait d'AddSlashes() avant, tu vas te retrouver avec des données tronquées sans comprendre pourquoi

4) n tiers
pour plein de raisons qui seraient sans doute trop longues à expliquer (ou peut-être aussi que j'ai la flemme, vu l'heure Wink ), habitues-toi à développer selon une architecture n tiers (généralement 3 tiers).
en gros, sépares affichage, traitement et données.
prenons un exemple. demain, une nouvelle base de donnée sort, et tu voudrais y adapter ton code. ben là, tu dois te retaper toutes tes pages pour modifier les appels mySql par les appels de la nouvelle base. alors que si tu avais séparé ta partie base de données, tu n'aurais pas à toucher à l'affichage ni au traitements. tu comprends ?
je te file un bout de code dans le chapitre suivant Wink

5) POO
je sais qu'il n'est pas évident pour tout le monde de se mettre à la POO (Programmation Orientée Objet). mais c'est pourtant un gain de temps énorme, que ce soit dans le développement ou la maintenance. et c'est d'autant plus important pour l'aspect 3 tiers dont j'ai parlé ci-dessus.
voici un exemple d'objet connexion qui pourrait t'être utile :
Code PHP :
<?php 
fichier Connexion
.php
<?php
class Connexion {
private
$dbh;
public function
__construct() {
// rappelles toi la page constantes.php
try {
$this->dbh = new PDO('mysql:host='.$hote.';dbname='.$db, $user, $pass,
array(
PDO::ATTR_PERSISTENT => true));
}
catch (
Exception $e) {
echo
$e->getMessage();
}
}
public function
select($sql) {
try {
$res = $this->dbh->query($sql);
}
catch (
Exception $e) {
echo
"requete : $sql<br/>";
echo
$e->getMessage();
}
return
$res;
}
?>

un autre fichier
<?php
require_once "Connexion.php";
$con = new Connexion();
$res = $con->select("select * from matable");
on pourrait même aller plus loin puisque PDO permet de préparer des requêtes SQL à l'avance en ne modifiant que des paramètres. il n'y aurait plus qu'à lui préciser quelle requête exécuter sans l'écrire en dur dans la page. mais je ne vais ptet pas pousser le bouchon trop loin. si déjà tu arrives à assimiler tout ça, tu verras que le développement prend une toute autre dimension ^^

voilà, je vais m'arrêter là. je voulais juste te donner quelques petits conseils, en espérant qu'ils te simplifieront la vie, si jamais tu décides de les suivre Smile


RE: [reglé, faute de frappe] [xAjax] Problème de condition dans une fonction - Seals - 06-06-2008

Je te remercie d'avoir pris le temps de m'expliquer tous ça Wink

La PDO, je ne connaissais pas, je vais allez lire de suite la doc à ce sujet, ça me semble intéressant !
La POO en revanche je connais, je vais bientôt lire un tuto sur le siteduzero qui concerne la POO. Smile