Problème syntaxe ET traitement donnée sur jointure de table
Résolu/Fermé
nestor94
Messages postés
74
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
14 octobre 2021
-
31 mars 2021 à 22:50
yg_be Messages postés 23309 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 novembre 2024 - 8 avril 2021 à 13:52
yg_be Messages postés 23309 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 novembre 2024 - 8 avril 2021 à 13:52
A voir également:
- Problème syntaxe ET traitement donnée sur jointure de table
- Table ascii - Guide
- Table des matières word - Guide
- Colis en traitement sur le site logistique de destination ✓ - Forum Consommation & Internet
- &Quot;Colis en cours d'acheminement vers sa destination" laposte - Forum Consommation & Internet
- Traitement de texte gratuit - Guide
11 réponses
jordane45
Messages postés
38269
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 novembre 2024
4 694
31 mars 2021 à 22:56
31 mars 2021 à 22:56
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.
yg_be
Messages postés
23309
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 novembre 2024
Ambassadeur
1 551
31 mars 2021 à 23:02
31 mars 2021 à 23:02
bonjour, je pense que l'accolade fermante en ligne 25 devrait être déplacée après la ligne 42.
nestor94
Messages postés
74
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
14 octobre 2021
Modifié le 1 avril 2021 à 09:46
Modifié le 1 avril 2021 à 09:46
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....
jordane45
Messages postés
38269
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 novembre 2024
4 694
1 avril 2021 à 09:55
1 avril 2021 à 09:55
tes lignes 9 et 10 ont disparues.
Il ne fallait pas les retirer... juste les corriger en retirant les map. qui se trouvaient dedans
Il ne fallait pas les retirer... juste les corriger en retirant les map. qui se trouvaient dedans
nestor94
Messages postés
74
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
14 octobre 2021
1 avril 2021 à 11:12
1 avril 2021 à 11:12
<?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...
jordane45
Messages postés
38269
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 novembre 2024
4 694
Modifié le 1 avril 2021 à 11:36
Modifié le 1 avril 2021 à 11:36
Fais un var_dump de la variable résultat et regarde si elle contient des choses il se peut que ta roquette ne retourne rien
yg_be
Messages postés
23309
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 novembre 2024
1 551
1 avril 2021 à 12:23
1 avril 2021 à 12:23
ce serait bien d'ajouter un
elseà if
(!empty($resultat ))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
nestor94
Messages postés
74
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
14 octobre 2021
1 avril 2021 à 17:50
1 avril 2021 à 17:50
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
23309
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 novembre 2024
Ambassadeur
1 551
1 avril 2021 à 17:54
1 avril 2021 à 17:54
peux-tu partager le code source HTML de la page affichée?
nestor94
Messages postés
74
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
14 octobre 2021
1 avril 2021 à 21:46
1 avril 2021 à 21:46
<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>
jordane45
Messages postés
38269
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 novembre 2024
4 694
>
nestor94
Messages postés
74
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
14 octobre 2021
1 avril 2021 à 21:50
1 avril 2021 à 21:50
Et bien
Visiblement ton code PHP génère bien ce que tu lui as demandé
Visiblement ton code PHP génère bien ce que tu lui as demandé
nestor94
Messages postés
74
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
14 octobre 2021
2 avril 2021 à 09:41
2 avril 2021 à 09:41
Ben oui, mais ca doit etre la suite qui déconne. J'ai toujours une page blanche à l'affichage.
jordane45
Messages postés
38269
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 novembre 2024
4 694
2 avril 2021 à 10:00
2 avril 2021 à 10:00
La suite ? Quelle suite ?
C'est normal que tu ne vois rien puisque que des balises HTML ne contiennent aucun texte....
C'est normal que tu ne vois rien puisque que des balises HTML ne contiennent aucun texte....
nestor94
Messages postés
74
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
14 octobre 2021
2 avril 2021 à 19:26
2 avril 2021 à 19:26
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--; }
jordane45
Messages postés
38269
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 novembre 2024
4 694
2 avril 2021 à 20:10
2 avril 2021 à 20:10
C'est quoi que tu veux afficher provenant du résultat de ta requête au juste ?
Autrement dit... que penses tu ( veux tu... ) obtenir exactement ??
Autrement dit... que penses tu ( veux tu... ) obtenir exactement ??
yg_be
Messages postés
23309
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 novembre 2024
1 551
2 avril 2021 à 20:12
2 avril 2021 à 20:12
commence par comprendre ce que tu veux obtenir en html. ensuite, tu réfléchiras à la programmation php.
nestor94
Messages postés
74
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
14 octobre 2021
3 avril 2021 à 10:57
3 avril 2021 à 10:57
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.' ">'; }
jordane45
Messages postés
38269
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 novembre 2024
4 694
3 avril 2021 à 13:08
3 avril 2021 à 13:08
Tu pourrais nous représenter, manuellement, ce que tu aimerais obtenir ?
car là.. on ne comprend pas ce que tu cherches à avoir...
car là.. on ne comprend pas ce que tu cherches à avoir...
yg_be
Messages postés
23309
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 novembre 2024
1 551
3 avril 2021 à 13:39
3 avril 2021 à 13:39
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
nestor94
Messages postés
74
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
14 octobre 2021
Modifié le 3 avril 2021 à 18:00
Modifié le 3 avril 2021 à 18:00
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!
yg_be
Messages postés
23309
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 novembre 2024
1 551
8 avril 2021 à 13:52
8 avril 2021 à 13:52
la requête doit être dans la boucle.
nestor94
Messages postés
74
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
14 octobre 2021
8 avril 2021 à 13:11
8 avril 2021 à 13:11
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>
31 mars 2021 à 23:05