Php erreur de syntax

sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   -  
sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

voici mon erreur:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AND (f.y BETWEEN 0 AND ) AND f.atteris=0)' at line 7

le problème devrais être là:
$pose1 = mysql_query ("SELECT j.id_joueur,j.pseudonyme,j.avatar,f.x,f.y,nom,f.sonde,f.defense,f.defbase,f.type,f.evitement,s.xp_classement
FROM flotte AS f
LEFT JOIN joueur AS j
ON f.id_joueur=j.id_joueur
LEFT JOIN stat AS s
ON s.id_joueur=j.id_joueur
WHERE f.id_joueur=".$_SESSION['id_joueur']." OR ((f.x BETWEEN " . $xmin . " AND " . $xmax . ")
AND (f.y BETWEEN " . $ymin . " AND " . $ymax . ") AND f.atteris=0) ") or die(mysql_error());
while ( $pose = mysql_fetch_assoc($pose1) ){

ou

$j = mysql_query ("SELECT point_action FROM joueur WHERE id_joueur=".$_SESSION["id_joueur"]."") or die (mysql_error());
$j = mysql_fetch_assoc ($j);
$f = mysql_query ("SELECT f.id_joueur,f.x,f.y,f.evitement,f.evitbase,f.radar,f.atteris,f.propulseur,j.point_action FROM flotte as f LEFT JOIN joueur as j ON j.id_joueur=f.id_joueur WHERE f.id_joueur=".$_SESSION["id_joueur"]." || ( f.x='".$_GET["x"]."' AND f.y='".$_GET["y"]."') AND f.atteris=0 ")or die (mysql_error());
$f = mysql_fetch_assoc ($f);

J'aimerais bien vôtre aide.

Sirdiablo11

22 réponses

Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   37
 
fais un var_dump( $xmax ) ; juste avant et dis nous ce que ca te dis :)
0
sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   9
 
Je le place de quel manière juste avant le $xmax celui du premier ou je sais pas sinon avant tout le commande ça donne NULL.
0
Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   37
 
Place le juste avant $pose1 = ....
0
sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   9
 
alkaaran ça donne ça:

NULL You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AND (f.y BETWEEN 0 AND ) AND f.atteris=0)' at line 7

---> NULL <---
0
Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   37 > sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
 
Et donc $xmax devrait être égal à quoi ? Vérifie que cette variable est bien initialisée..
0
sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   9 > Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention  
 
voir dans phpmyadmin c'est bien ça?

donc là:

-- --------------------------------------------------------

--
-- Structure de la table `flotte`
--

CREATE TABLE `flotte` (
`id_joueur` smallint(5) unsigned NOT NULL default '0',
`nom` varchar(150) NOT NULL default '',
`x` tinyint(3) unsigned NOT NULL default '0',
`y` tinyint(3) unsigned NOT NULL default '0',
`atteris` tinyint(1) unsigned NOT NULL default '0',
`attaque` smallint(4) unsigned NOT NULL default '0',
`bombardement` smallint(4) unsigned NOT NULL default '0',
`defense` smallint(4) unsigned NOT NULL default '0',
`evitement` smallint(4) unsigned NOT NULL default '0',
`radar` smallint(4) unsigned NOT NULL default '0',
`attbase` smallint(4) unsigned NOT NULL default '0',
`bombardebase` smallint(5) unsigned NOT NULL default '0',
`defbase` smallint(4) unsigned NOT NULL default '0',
`evitbase` smallint(4) unsigned NOT NULL default '0',
`radarbase` smallint(4) unsigned NOT NULL default '0',
`sonde` smallint(4) unsigned NOT NULL default '0',
`outsider` tinyint(2) unsigned NOT NULL default '0',
`doublelaser` tinyint(1) unsigned NOT NULL default '0',
`reflectron` tinyint(2) unsigned NOT NULL default '0',
`snipeur` tinyint(3) unsigned NOT NULL default '0',
`genesis` tinyint(1) unsigned NOT NULL default '0',
`destructor` tinyint(3) unsigned NOT NULL default '0',
`type` tinyint(3) unsigned NOT NULL default '0',
`propulseur` tinyint(3) unsigned NOT NULL default '1',
KEY `x` (`x`,`y`),
KEY `y` (`y`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0;

-- --------------------------------------------------------
0
Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   37 > sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
 
Non... Là ta requete selectionne en fonction d'une position maxi (xmax et ymax) et d'une position mini (xmin et ymin) Mais dans le code php, ou definie tu ces valeurs maxi et mini ?
0
sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   9 > Alkaaran Messages postés 285 Date d'inscription   Statut Membre Dernière intervention  
 
c'est bien ça:

$a = mysql_query ("SELECT x,y,ecartplanete FROM admin") or die (mysql_error());
$a = mysql_fetch_assoc($a);
//Calcul des valeurs max et min de x et y (selon la portée radar)
$xmax = min($fj["x"] + $fj["radar"],$a["x"]);
$xmin = max($fj["x"] - $fj["radar"],0);
$ymax = min($fj["y"] + $fj["radar"],$a["y"]);
$ymin = max($fj["y"] - $fj["radar"],0);
0

 
AND (f.y BETWEEN 0 AND ) AND f.atteris=0) 


tu as un AND et une parenthèse qui se ferme juste après. BETWEEN 0 AND ? )
En gros, vérifie que ymax et xmax sont bien des entiers.
0
croy Messages postés 453 Date d'inscription   Statut Membre Dernière intervention   114
 
Bonjour,

Je vois deux erreurs potentielles :

1. $fj n'est pas initialisée : j'intuite que c'est le résultat de ta requête
2. radar ne fait pas partie du select et ne se retrouvera donc pas dans $fj['radar'] : ajoutons)le

On arrive au code suivant :
$a = mysql_query ("SELECT x,y,ecartplanete,radar FROM admin") or die (mysql_error());   // ajout de radar
$fj = mysql_fetch_assoc($a);     // $fj = au lieu de $a =
//Calcul des valeurs max et min de x et y (selon la portée radar)
$xmax = min($fj["x"] + $fj["radar"],$a["x"]);
$xmin = max($fj["x"] - $fj["radar"],0);
$ymax = min($fj["y"] + $fj["radar"],$a["y"]);
$ymin = max($fj["y"] - $fj["radar"],0);
0
sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   9
 
Champ 'radar' inconnu dans field list

Je vais devoir chercher un peu.

---> la peux être? un indice?

<?php
if ( round($fj["radar"]/$fj["radarbase"]*100) < 100 ){
echo "<div align=\"center\"><font color=\"red\">Warning ==> Radar fontionnel à ".(round($fj["radar"]/$fj["radarbase"]*100))." % <== Warning</font></div>";
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
croy Messages postés 453 Date d'inscription   Statut Membre Dernière intervention   114
 
As-tu essayé mes deux suggestions de modifs ?
0
sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   9
 
on touche plus à rien j'ai juste changé le a à fj...

$a = mysql_query ("SELECT x,y,ecartplanete FROM admin") or die (mysql_error());
$fj = mysql_fetch_assoc($a);
//Calcul des valeurs max et min de x et y (selon la portée radar)
$xmax = min($fj["x"] + $fj["radar"],$a["x"]);
$xmin = max($fj["x"] - $fj["radar"],0);
$ymax = min($fj["y"] + $fj["radar"],$a["y"]);
$ymin = max($fj["y"] - $fj["radar"],0);

Je vais quand même ajouté le commentaire.

Merci.
0
croy Messages postés 453 Date d'inscription   Statut Membre Dernière intervention   114
 
Il te manque toujours $fj[ "radar" ] : si tu ne l'ajoutes pas dans le SELECT il n'y a aucune chance qu'il existe dans le tableau $fj.

Encore un petit effort.
0
sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   9
 
ça donne ça: Unknown column 'radar' in 'field list'

pour avoir ajouté ,radar
0
croy Messages postés 453 Date d'inscription   Statut Membre Dernière intervention   114
 
Alors d'où vient la valeur "radar" que tu veux utiliser pour déterminer $xmin, $xmax... ?
0
sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   9
 
J'ai ça:

Champ Type Interclassement Attributs Null Défaut Extra Action
maintenance tinyint(3) UNSIGNED Non 0 Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
x tinyint(3) UNSIGNED Non 0 Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
y tinyint(3) UNSIGNED Non 0 Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
ecartplanete tinyint(3) UNSIGNED Non 0 Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier

Il manque le radar.

--
-- Structure de la table `admin`
--

CREATE TABLE `admin` (
`maintenance` tinyint(3) unsigned NOT NULL default '0',
`x` tinyint(3) unsigned NOT NULL default '0',
`y` tinyint(3) unsigned NOT NULL default '0',
`ecartplanete` tinyint(3) unsigned NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
0
croy Messages postés 453 Date d'inscription   Statut Membre Dernière intervention   114
 
Tu dois donc trouver où est "radar" et comprendre que je ne peux pas le faire car je ne connais pas ton application.
0
sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   9
 
c'est dans phpmyadmin Je dois le créée puisqu'il y a pas la radar.
0
sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   9
 
Maintenant il fait plus le message d'erreur mais je peux pas grandir la carte pas encore ça reste à 0.
0
sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   9
 
Il me reste juste à trouver comment agrandir la carte.
0
croy Messages postés 453 Date d'inscription   Statut Membre Dernière intervention   114
 
Tu ne nous as pas dit ce que tu faisais des $xmin, $xmax, ... ni comment tu as programmé l'agrandissement de la carte
0
sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   9
 
J'avais oublié c'est là:

<?php
$a = mysql_query ("SELECT x,y FROM admin") or die(mysql_error());
$a = mysql_fetch_assoc($a);
?>
<form name="form1" method="post" action="index.php?page=carte&prog=carte"><table align="center" width="300" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="image/espace.gif" width="150" height="1"></td>
<td><img src="image/espace.gif" width="150" height="1"></td>
</tr>
<tr>
<td colspan="2" class="marron_noir">La taille de la carte</td>
</tr>
<tr>
<td colspan="2" class="cadre">
<span style="position:relative;left:-40px;">X </span>
<span style="position:relative;left:40px;">Y</span>
<br>
<span style="position:relative;left:-25px;"><input type="text" name="x" size="3" value="<?=$a["x"]?>"></span>
<span style="position:relative;left:25px;"><input type="text" name="y" size="3" value="<?=$a["y"]?>"></span>
<br><br>
<input type="submit" name="Submit" value="Envoyer"> </td>
</tr>
</table>
</form>

0
sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   9
 
le message apparait bien mais pas pour agrandir la carte:


<?php
if ( isset($_POST["x"]) && isset($_POST["y"]) && is_numeric($_POST["x"]) && is_numeric($_POST["y"]) ){
mysql_query("UPDATE admin SET x=".$_POST["x"].",y=".$_POST["y"]."") or die(mysql_error());
$message = "Bonjour,<br><br>Suite à l'agrandissement du nombre de joueur, je décide d'agrandir votre univers.<br>Vous pouvez désormais voyager jusqu'en X : ".$_POST["x"]." et Y : ".$_POST["y"];
mysql_query("INSERT INTO instantane SET id_joueur=0,message='$message',heure=".(time())."") or die(mysql_error());
echo "<div class=\"mess\">Modification effectuée</div>";
}
?>
0
croy Messages postés 453 Date d'inscription   Statut Membre Dernière intervention   114
 
Tu dis "le message apparait bien" mais tu ne précises pas quel message.

Par ailleurs, l'extrait de code que tu nous donnes contient :
- une erreur de syntaxe PHP (examine bien le second mysql_query
- une erreur de syntaxe PHP (la requête du second mysql_query)

Analyse et trouve ces deux erreurs et donne-nous le message
0
sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   9
 
pas un message d'erreur mais un message normal pour dire qu'il a été agrandit...

Je vais regarder.

Si je met le echo la :

$message = "Bonjour,<br><br>Suite à l'agrandissement du nombre de joueur, je décide d'agrandir votre univers.<br>Vous pouvez désormais voyager jusqu'en X : ".$_POST["x"]." et Y : ".$_POST["y"];

Il donne le message normal correct.

un autre echo pas de message d'erreur non plus :

mysql_query("UPDATE admin SET x=".$_POST["x"].",y=".$_POST["­y"]."") or die(mysql_error());
0
sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   9
 
comment mettre la valeur qui manque:

// Tableau Tflotte pour afficher la carte
$pose1 = mysql_query ("SELECT j.id_joueur,j.pseudonyme,j.avatar,f.x,f.y,nom,f.sonde,f.defense,f.defbase,f.type,f.evitement,s.xp_classement
FROM flotte AS f
LEFT JOIN joueur AS j
ON f.id_joueur=j.id_joueur
LEFT JOIN stat AS s
ON s.id_joueur=j.id_joueur
WHERE f.id_joueur=".$_SESSION['id_joueur']." OR ((f.x BETWEEN " . $xmin . " AND " . $xmax . ")
AND (f.y BETWEEN " . $ymin . " AND " . $ymax . ") AND f.atteris=0) ") or die(mysql_error());

Le message d'erreur qu'il fait pour afficher la carte manuellement:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AND (f.y BETWEEN 15 AND ) AND f.atteris=0)' at line 7

ici
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention  
 
je vois une erreur par là:

WHERE f.id_joueur=".$_SESSION['id_joueur']." OR ((f.x BETWEEN " . $xmin . " AND " . $xmax . ")
AND (f.y BETWEEN " . $ymin . " AND " . $ymax . ") AND f.atteris=0) ") or die(mysql_error());


il faut mettre ='.........' pour les conditions

WHERE f.id_joueur='".$_SESSION['id_joueur']."' OR ((f.x BETWEEN '" . $xmin . "' AND '" . $xmax . "')
AND (f.y BETWEEN '" . $ymin . "' AND '" . $ymax . "') AND f.atteris='0') ") or die(mysql_error()); 
0
sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   9
 
JE re puisque le site affiche le message 404 quand je veux aller sauf le mien.
0
sirdiablo11 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   9
 
C'est bon pas message d'erreur mais la carte reste invisible. il faut t'il mettre une fonction dans phpmyadmin comme ASCII, CHAR...

pour qu'il donne 1 case 1*1 mais qu'il soif 15*15 par exemple avec un vaisseau.
0