23-12-2008, 12:42 AM
(Modification du message : 23-12-2008, 01:23 AM par Sephi-Chan.)
Une table de relation n'a pas de clé primaire. Elle contient deux clés étrangères vers deux tables.
En fait, je remarque que tu as de grosses difficultés car tu ne formalise pas assez ton code. Les noms sont donnés un peu n'importe comment.
Si tu veux être plus efficace lors du debug, il faut que tu structures ton travail. Pour cela, tu peux te fixer des conventions de nommage. Tes lignes de code doivent être courtes pour être lisibles.
Voici un exemple de convention de nommage dans la base de données :
Quand tu écris tes requêtes, teste les petit à petit dans phpMyAdmin, avec des valeurs de test.
Ensuite, il faut que tu formalises tes requêtes.
Ici, je recopie le jeu de résultat renvoyé dans un tableau $villes, ça permet d'avoir un code source plus clair (au profit d'un peu de ressources système).
N'oublie pas de bien aérer ton code ! De plus, je te conseille de définir cette fonction et d'en abuser :
Voilà, ça t'aidera peut-être à faire la plus grosse partie du travail seul.
Sephi-Chan
En fait, je remarque que tu as de grosses difficultés car tu ne formalise pas assez ton code. Les noms sont donnés un peu n'importe comment.
Si tu veux être plus efficace lors du debug, il faut que tu structures ton travail. Pour cela, tu peux te fixer des conventions de nommage. Tes lignes de code doivent être courtes pour être lisibles.
Voici un exemple de convention de nommage dans la base de données :
- Tout est écrit en minuscule ;
- Les espaces sont représentés par des underscores _ ;
- On n'utilise pas d'abréviation (adieu le posx, soit c'est x, soit position_x) ;
- La table qui contient les villes s'appelle villes (au pluriel). Sa clé primaire s'appelle ville_id (le nom de la table au singulier suivi de _id). On fait de même pour la table qui contient les cases : cases avec case_id comme clé primaire ;
- Une table qui lie la table villes à la table cases s'appelle cases_villes. On met le nom des tables (séparé par un underscore) dans l'ordre alphabétique ;
- Cette table cases_villes contient au moins 2 colonnes : case_id et ville_id. Comme ça, les jointures t'apparaîtront naturellement ;
Quand tu écris tes requêtes, teste les petit à petit dans phpMyAdmin, avec des valeurs de test.
Ensuite, il faut que tu formalises tes requêtes.
- On encadre la requête de guillemets doubles ;
- Quand on insère une variable PHP dans le code, on l'encadre d'accolades ;
- On n'oublie pas que pour MySQL, seules les chaînes de caractères doivent être encadrées de guillemets simples : WHERE nom = '{$nom}' ;
- On donne aux variables des noms complets, non abrégés et appropriés (par exemple, mysql_query() renvoie une ressource) ;
- On commente le code, surtout la requête ;
- En cas d'erreur, on affiche la requête et l'erreur ;
// On récupère les villes d'après la position du joueur.
$sql = "
SELECT ville_id, position_x, position_y
FROM villes
WHERE position_x = {$joueur['position_x']}
AND position_y = {$joueur['position_y']}
";
$ressource = mysql_query($sql);
if($ressource === false){
echo '<pre>', $sql, '</pre>';
echo '<p>', mysql_error(), '</p>';
}
else {
$villes = array();
while($ville = mysql_fetch_assoc($ressource)){
$villes[] = $ville;
}
echo '<pre>', print_r($villes), '</pre>';
}
Ici, je recopie le jeu de résultat renvoyé dans un tableau $villes, ça permet d'avoir un code source plus clair (au profit d'un peu de ressources système).
N'oublie pas de bien aérer ton code ! De plus, je te conseille de définir cette fonction et d'en abuser :
function dump($variable){
// On pourra décommenter cette ligne quand le site sera opérationnel.
// return null;
if(is_scalar($var) === true){
echo '<pre>', var_dump($var), '</pre>';
}
else {
echo '<pre>', print_r($var), '</pre>';
}
}
Voilà, ça t'aidera peut-être à faire la plus grosse partie du travail seul.
Sephi-Chan