Problème syntaxe ET traitement donnée sur jointure de table
Résolu
nestor94
Messages postés
74
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
A voir également:
- Problème syntaxe ET traitement donnée sur jointure de table
- Table ascii - Guide
- Table des matières word - Guide
- Traitement de texte gratuit - Guide
- Ce traitement de texte gratuit et léger est parfait pour remplacer Word, même sur un vieux PC - Guide
- Traitement de texte gratuit open office - Télécharger - Suite bureautique
11 réponses
Bonjour,
Première requête ... tu as oublié le FROM
Lignes 9 et 10 ... faut retirer les 'map.'
Lignes 12 et 13, tu dois, soit faire de la concaténation ... soit utiliser des doubles quotes. Sinon les variables php ne sont pas interprétées.
Première requête ... tu as oublié le FROM
Lignes 9 et 10 ... faut retirer les 'map.'
Lignes 12 et 13, tu dois, soit faire de la concaténation ... soit utiliser des doubles quotes. Sinon les variables php ne sont pas interprétées.
jordane45
Messages postés
38483
Date d'inscription
Statut
Modérateur
Dernière intervention
4 746
Lignes 12 et 13, .. faut retirer les crochets .. sinon il considère ta variable comme un array
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 583
bonjour, je pense que l'accolade fermante en ligne 25 devrait être déplacée après la ligne 42.
Voici les modifications apportées et le code complet.
Il reste un soucis de variable et je ne sais pas quoi mettre pour les déclarer.
Undefined variable: pos_y in C:\wamp64\www\map_debut.php on line 20
Undefined variable: pos_x in C:\wamp64\www\map_debut.php on line 26
le var_dump de pos_x et pos_y est OK....
Il reste un soucis de variable et je ne sais pas quoi mettre pour les déclarer.
<?php session_start(); ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); require_once 'config.php'; $id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL; try{ $sql = "SELECT map.pos_x, map.pos_y FROM map LEFT JOIN membres ON membres.pos_x = map.pos_x AND membres.pos_y = map.pos_y WHERE membres.id=:id"; $pdostat = $bdd->prepare($sql); $pdostat->bindvalue(':id',$id ,PDO::PARAM_INT); $pdostat->execute(); $resultat = $pdostat->fetch(); }catch(Exception $e){ echo "Erreur : " . $e->getMessage(); } if (!empty($resultat )) { //On déclare les variables de positionnement carte $compteurY = "$pos_y + 6"; $finY = "$pos_y - 6"; // on definit la taille de la carte $largeur = 5; $hauteur = 5; // On calcule l'aire de la mini-map $compteurX = $pos_x - 6; $compteurY = $pos_y + 6; $finX = $pos_x + 6; $finY = $pos_y - 6; $debutX = $pos_x - 6; while($compteurY >= $finY) { echo' <div class="container">'; echo '<div class="row"> '; echo ' <div class="col-md-offset-2 col-md-8"> '; echo ' <div id="map" style="width:660px; height:660px"></div>'; echo ' </div> </div> </div> '; echo '</div>', "\n"; $compteurX++; echo '</div>', "\n"; $compteurX = $debutX; $compteurY--; } } ?>
Undefined variable: pos_y in C:\wamp64\www\map_debut.php on line 20
Undefined variable: pos_x in C:\wamp64\www\map_debut.php on line 26
le var_dump de pos_x et pos_y est OK....
<?php session_start(); ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); require_once 'config.php'; $id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL; try{ $sql = "SELECT map.pos_x, map.pos_y FROM map LEFT JOIN membres ON membres.pos_x = map.pos_x AND membres.pos_y = map.pos_y WHERE membres.id=:id"; $pdostat = $bdd->prepare($sql); $pdostat->bindvalue(':id',$id ,PDO::PARAM_INT); $pdostat->execute(); $resultat = $pdostat->fetch(); }catch(Exception $e){ echo "Erreur : " . $e->getMessage(); } if (!empty($resultat )) { //On déclare les variables de positionnement carte $pos_x = $resultat ['pos_x']; $pos_y = $resultat ['pos_y']; $compteurY = "$pos_y + 6"; $finY = "$pos_y - 6"; // on definit la taille de la carte $largeur = 5; $hauteur = 5; // On calcule l'aire de la mini-map $compteurX = $pos_x - 6; $compteurY = $pos_y + 6; $finX = $pos_x + 6; $finY = $pos_y - 6; $debutX = $pos_x - 6; while($compteurY >= $finY) { echo' <div class="container">'; echo '<div class="row"> '; echo ' <div class="col-md-offset-2 col-md-8"> '; echo ' <div id="map" style="width:660px; height:660px"></div>'; echo ' </div> </div> </div> '; echo '</div>', "\n"; $compteurX++; echo '</div>', "\n"; $compteurX = $debutX; $compteurY--; } } ?>
ca affiche une page blanche...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
j'ai fait les var_dump suivants:
ligne 20 var_dump($resultat);
ligne 21 var_dump($pos_x);
ligne 22 var_dump($pos_y);
C:\wamp64\www\map_debut.php:20:
array (size=4)
'pos_x' => string '7' (length=1)
0 => string '7' (length=1)
'pos_y' => string '7' (length=1)
1 => string '7' (length=1)
( ! ) Notice: Undefined variable: pos_x in C:\wamp64\www\map_debut.php on line 21
C:\wamp64\www\map_debut.php:21:null
( ! ) Notice: Undefined variable: pos_y in C:\wamp64\www\map_debut.php on line 22
C:\wamp64\www\map_debut.php:22:null
ligne 20 var_dump($resultat);
ligne 21 var_dump($pos_x);
ligne 22 var_dump($pos_y);
C:\wamp64\www\map_debut.php:20:
array (size=4)
'pos_x' => string '7' (length=1)
0 => string '7' (length=1)
'pos_y' => string '7' (length=1)
1 => string '7' (length=1)
( ! ) Notice: Undefined variable: pos_x in C:\wamp64\www\map_debut.php on line 21
C:\wamp64\www\map_debut.php:21:null
( ! ) Notice: Undefined variable: pos_y in C:\wamp64\www\map_debut.php on line 22
C:\wamp64\www\map_debut.php:22:null
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 583
peux-tu partager le code source HTML de la page affichée?
<div class="container"><div class="row"> <div class="col-md-offset-2 col-md-8"> <div id="map" style="width:660px; height:660px"></div> </div> </div> </div> </div> </div> <div class="container"><div class="row"> <div class="col-md-offset-2 col-md-8"> <div id="map" style="width:660px; height:660px"></div> </div> </div> </div> </div> </div> <div class="container"><div class="row"> <div class="col-md-offset-2 col-md-8"> <div id="map" style="width:660px; height:660px"></div> </div> </div> </div> </div> </div> <div class="container"><div class="row"> <div class="col-md-offset-2 col-md-8"> <div id="map" style="width:660px; height:660px"></div> </div> </div> </div> </div> </div> <div class="container"><div class="row"> <div class="col-md-offset-2 col-md-8"> <div id="map" style="width:660px; height:660px"></div> </div> </div> </div> </div> </div> <div class="container"><div class="row"> <div class="col-md-offset-2 col-md-8"> <div id="map" style="width:660px; height:660px"></div> </div> </div> </div> </div> </div> <div class="container"><div class="row"> <div class="col-md-offset-2 col-md-8"> <div id="map" style="width:660px; height:660px"></div> </div> </div> </div> </div> </div> <div class="container"><div class="row"> <div class="col-md-offset-2 col-md-8"> <div id="map" style="width:660px; height:660px"></div> </div> </div> </div> </div> </div> <div class="container"><div class="row"> <div class="col-md-offset-2 col-md-8"> <div id="map" style="width:660px; height:660px"></div> </div> </div> </div> </div> </div> <div class="container"><div class="row"> <div class="col-md-offset-2 col-md-8"> <div id="map" style="width:660px; height:660px"></div> </div> </div> </div> </div> </div> <div class="container"><div class="row"> <div class="col-md-offset-2 col-md-8"> <div id="map" style="width:660px; height:660px"></div> </div> </div> </div> </div> </div> <div class="container"><div class="row"> <div class="col-md-offset-2 col-md-8"> <div id="map" style="width:660px; height:660px"></div> </div> </div> </div> </div> </div> <div class="container"><div class="row"> <div class="col-md-offset-2 col-md-8"> <div id="map" style="width:660px; height:660px"></div> </div> </div> </div> </div> </div>
J'entends bien et c'est là que le bat blesse. Comment je mets le résultat de la requete dans mes div? cette fin de script ne semble pas valable...
while($compteurY >= $finY) { echo '<div class="case_map">'; echo' <div class="container">'; echo '<div class="row"> '; echo ' <div class="col-md-offset-2 col-md-8"> '; echo ' <div id="map" style="width:60px; height:60px"></div>'; echo ' </div> </div> </div> '; echo '</div>', "\n"; $compteurX++; echo '</div>', "\n"; $compteurX = $debutX; $compteurY--; }
je veux afficher
avec 5 positions autour.....
faudrait-il partir d'une autre base telle que:
$pos_x = $resultat ['pos_x']; $pos_y = $resultat ['pos_y'];
avec 5 positions autour.....
faudrait-il partir d'une autre base telle que:
$sql = "SELECT tile FROM map LEFT JOIN membres ON map.pos_x = membres.pos_x AND map.pos_y = membres.pos_y WHERE membres.id=:id"; $pdostat = $bdd->prepare($sql); $pdostat->bindvalue(':id',$id ,PDO::PARAM_INT); $pdostat->execute(); $resultat = $pdostat->fetch(); if (!empty($resultat )) { $tile = $resultat['tile']; echo '<img src=" '.$tile.' ">'; }
je crois deviner que tu veux afficher un carré de 11 * 11 positions, centré sur la position du joueur (position extraite de table membres).
Chaque case du carré doit afficher une image, extraite de la table map.
Est-ce exact?
si oui, tu dois faire deux boucles imbriquées, une avec $compteurY (pour chaque ligne du carré), l'autre avec $compteurX (pour chaque colonne du tableau).
pour chaque case du carré, faire une requête SQL telle que:
Chaque case du carré doit afficher une image, extraite de la table map.
Est-ce exact?
si oui, tu dois faire deux boucles imbriquées, une avec $compteurY (pour chaque ligne du carré), l'autre avec $compteurX (pour chaque colonne du tableau).
pour chaque case du carré, faire une requête SQL telle que:
SELECT tile FROM map WHERE pos_x = $compteurX AND pos_y = $compteurY
C'est exactement cela. Je vais tenter de m'y atteler... heu, la (ou les) requetes, c'est à positionner avant ou dans la boucle? Merci!
J'ai abandonné les boucles et suis parti sur un affichage direct dans un tableau.
puis pour affichage sur chaque case (en modifiant à chaque fois pos_x et pos_y !)
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL; // affichage de la position du joueur depuis table membres $sql = "SELECT id, pos_x, pos_y FROM membres WHERE id=:id"; $pdostat = $bdd->prepare($sql); $pdostat->bindvalue(':id',$id ,PDO::PARAM_INT); $pdostat->execute(); $resultat = $pdostat->fetch(); if (!empty($resultat )) { $pos_x = $resultat['pos_x']; $pos_y = $resultat['pos_y'];
puis pour affichage sur chaque case (en modifiant à chaque fois pos_x et pos_y !)
<td style="width:60px; height:60px;"><?php $sql = "SELECT tile FROM map LEFT JOIN membres ON map.pos_x = membres.pos_x+1 AND map.pos_y = membres.pos_y-1 WHERE membres.id=:id"; $pdostat = $bdd->prepare($sql); $pdostat->bindvalue(':id',$id ,PDO::PARAM_INT); $pdostat->execute(); $resultat = $pdostat->fetch(); if (!empty($resultat )) { $tile = $resultat['tile']; } echo '<img src='.$tile.'>'?></td>