[RESOLU] SOUCIS REQUETE

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] SOUCIS REQUETE

Re: SOUCIS REQUETE

par two3d » 09 déc. 2024, 21:27

;) passe en résolu si c'est bon pour toi

Re: SOUCIS REQUETE

par nestor94 » 09 déc. 2024, 19:25

La requête fonctionne à présent en appelant la table "satellites" plutot que la map de jeu (galaxie) car sur cette dernière, il y avait plusieurs 'nom_lieu' différents...
$pdostat = $bdd->prepare ("SELECT nom FROM satellites LEFT JOIN membres ON satellites.pos_x BETWEEN membres.pos_x - 10 AND membres.pos_x + 10   AND satellites.pos_y BETWEEN membres.pos_y - 10 AND membres.pos_y + 10 WHERE membres.id =:id");
$pdostat->bindvalue(':id',$idMembreSession ,PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch(); 
if (!empty($membreSession)) { 
$nom= $membreSession['nom'];
}
if ($nom !='SAT-')
{
	header('Location:radio_hs.php');
	exit;
}

Re: SOUCIS REQUETE

par two3d » 02 déc. 2024, 20:06

A toi de jouer, débug au mieux chef ! :D

Lors d'un débug, on ne met pas de redirections, seulement des infos concernant les résultats de la requête, tu peux utiliser var_dump() ou print_r().

Re: SOUCIS REQUETE

par or 1 » 02 déc. 2024, 20:06

debugger, c'est exécuter la requête dans phpmyadmin. car tant qu'elle ne retourne pas ce qui est attendu dans phpmyadmin, cela ne fonctionnera pas dans une page web.

Re: SOUCIS REQUETE

par nestor94 » 02 déc. 2024, 19:19

$pdostat = $bdd->prepare("SELECT nom_lieu FROM galaxie LEFT JOIN membres ON galaxie.pos_x BETWEEN (membres.pos_x - 50 AND membres.pos_x + 50 )   AND   galaxie.pos_y BETWEEN (membres.pos_y - 50 AND membres.pos_y + 50) )  WHERE membres.id = :id");
$pdostat->bindvalue(':id',$idMembreSession ,PDO::PARAM_INT);
$membreSession = $pdostat->fetch(); 
$nom_lieu= $membreSession['nom_lieu'];
if ($nom_lieu !='SATELLITE')
{
	header('Location:radio_hs.php');
	exit;
}
nom_lieu est OK, j'ai positionné le joueur "test" une case juste à coté et cela renvoie à chaque fois vers le header. :?

Re: SOUCIS REQUETE

par two3d » 27 nov. 2024, 23:38

Il se peut que tu n'ai aucun enregistrement dans la base de données.

Essaye en augmentant les pos_y et pos_x pour filtrer large.

nom_lieu existe ? Vérifie l'orthographe, fait des tests sans BETWEEN pour t'assurer que ta des résultats, puis filter ensuite.

C'est parti pour un debugging :D

Re: SOUCIS REQUETE

par nestor94 » 27 nov. 2024, 21:49

Les deux requètes ne retournent pas d'erreur mais ne font pas le job :?

Re: SOUCIS REQUETE

par two3d » 27 nov. 2024, 02:56

Ta syntaxe "BETWEEN" est incorrecte : galaxie.pos_x= membres.pos_x BETWEEN

Lien doc SQL BETWEEN (sql.sh)

Ça devrait résoudre le problème, à tester :
$pdostat = $bdd->prepare("
    SELECT nom_lieu 
    FROM galaxie 
    LEFT JOIN membres ON (
        galaxie.pos_x BETWEEN membres.pos_x - 50 AND membres.pos_x + 50 
        AND galaxie.pos_y BETWEEN membres.pos_y - 50 AND membres.pos_y + 50
    ) 
    WHERE membres.id = :id
");
Ou en isolant les conditions AND :
$pdostat = $bdd->prepare("
    SELECT nom_lieu 
    FROM galaxie 
    LEFT JOIN membres ON (
        galaxie.pos_x BETWEEN (membres.pos_x - 50 AND membres.pos_x + 50 )
        AND
        galaxie.pos_y BETWEEN (membres.pos_y - 50 AND membres.pos_y + 50)
    ) 
    WHERE membres.id = :id
");

SOUCIS REQUETE

par nestor94 » 27 nov. 2024, 02:20

Bonjour,

je souhaiterai que ma requète teste si une donnée est présente entre "plusieurs positions"
<?php
$pdostat = $bdd->prepare("SELECT nom_lieu FROM galaxie LEFT JOIN membres ON galaxie.pos_x= membres.pos_x BETWEEN membres.pos_x+50  AND galaxie.pos_y= membres.pos_y BETWEEN membres.pos_y+50 WHERE membres.id=:id");
$pdostat->bindvalue(':id',$idMembreSession ,PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch(); 
$nom_lieu= $membreSession['nom_lieu'];
if($nom_lieu !=' bla bla bla')
{
bla bla bla...
}
?>