Version complète: sur le forum Webmaster Hub : message d'erreur
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > SQL
webide
Bonsoir,
J'ais installé un script avec installation automatique de base de données. L'install s'est bien faite, le programme fonctionne mais lorsque je vais dans l'admin j'ais ce message d'erreur que je ne comprends pas:
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 'LIMIT 0, 10' at line 1
SQL
# Structure de la table `an_config`
#

CREATE TABLE an_config (
idconf char(1) NOT NULL default '1',
msg text NOT NULL,
new text NOT NULL,
msgm text NOT NULL,
mail varchar(10) NOT NULL default '',
mvalm enum('y','n') default NULL,
mvala enum('y','n') default NULL,
valida enum('y','n') default NULL,
validm enum('y','n') default NULL,
colonne char(3) NOT NULL default '',
emailserveur varchar(100) NOT NULL default '',
adressesite varchar(200) NOT NULL default ''
) TYPE=MyISAM;

#
# Contenu de la table `an_config`
#

INSERT INTO an_config VALUES ('1', 'Salut tous bonne visite sur le site.Un enregistrement vous donne droit à plusieurs annonces avec photo.Le site est entièrement gratuit.Je vous remercie à l\'avance de cette confiance.Bon surf à vous tous et bonne recherche sur les annonces. Ici, vous avez la possibilité de laisser un message ou un espace vide..', '<center>bonjour à tous</center>\r\njuste un petit mot pour vous prevenir qu\'il n\'est pas possible de passer une annonce sans faire d\'inscription.Affichage de la new à votre convenance. Le webmaster..', '<center>PETIT MESSAGE</center>\r\nBonjour à tous ,un simple petit mot du webmaster ,pour vous montrer un exemple de message qu\'il est possible de faire depuis la partie administrative.Merci de votre attention .\r\nle WEBMASTER..', 'mail', 'y', 'y', 'y', 'y', '3', '', '');



# Structure de la table `an_dept`
#

CREATE TABLE an_dept (
iddept int(11) NOT NULL auto_increment,
numdept varchar(4) NOT NULL default '',
dept varchar(40) NOT NULL default '',
KEY iddept (iddept)
) TYPE=MyISAM;

#
# Contenu de la table `an_dept`
#



# Structure de la table `an_membre`
#

CREATE TABLE an_membre (
idmembre int(11) NOT NULL auto_increment,
email varchar(40) NOT NULL default '',
pseudo varchar(40) NOT NULL default '',
passe varchar(10) NOT NULL default '',
sexe varchar(10) NOT NULL default '',
dept varchar(30) NOT NULL default '',
datem varchar(15) NOT NULL default '',
statut varchar(10) NOT NULL default '',
ville varchar(30) NOT NULL default '',
adr varchar(60) NOT NULL default '',
cp varchar(7) NOT NULL default '',
tel varchar(20) NOT NULL default '',
telp varchar(20) NOT NULL default '',
situf varchar(30) NOT NULL default '',
enf varchar(6) NOT NULL default '',
silh varchar(30) NOT NULL default '',
fum char(3) NOT NULL default '',
etude varchar(30) NOT NULL default '',
PRIMARY KEY (idmembre)
) TYPE=MyISAM;




# Structure de la table `an_menu`
#

CREATE TABLE an_menu (
idcat int(11) NOT NULL auto_increment,
cat varchar(40) NOT NULL default '',
ncat varchar(5) NOT NULL default '0',
UNIQUE KEY idcat (idcat)
) TYPE=MyISAM;

#
# Contenu de la table `an_menu`
#

INSERT INTO an_menu VALUES (1, 'h', '0');
INSERT INTO an_menu VALUES (7, 'homme pour homme', '0');
INSERT INTO an_menu VALUES (6, 'homme pour femme', '2');
INSERT INTO an_menu VALUES (8, 'homme pour couple', '1');
INSERT INTO an_menu VALUES (29, 'couple pour homme', '0');
INSERT INTO an_menu VALUES (28, 'femme pour couple', '1');
INSERT INTO an_menu VALUES (27, 'femme pour femme', '0');
INSERT INTO an_menu VALUES (26, 'femme pour homme', '0');
INSERT INTO an_menu VALUES (30, 'couple pour femme', '0');
INSERT INTO an_menu VALUES (31, 'couple pour couple', '0');

# Structure de la table `an_annonce`
#

CREATE TABLE an_annonce (
idannonce smallint(11) NOT NULL auto_increment,
sujet varchar(100) NOT NULL default '',
message text NOT NULL,
idmembre varchar(5) NOT NULL default '',
pseudo varchar(40) NOT NULL default '',
nomcat varchar(50) NOT NULL default '',
nsouscat varchar(4) NOT NULL default '',
nomsouscat varchar(40) NOT NULL default '',
email varchar(50) NOT NULL default '',
date varchar(15) NOT NULL default '',
photo varchar(50) NOT NULL default '',
vala enum('y','n') NOT NULL default 'y',
UNIQUE KEY idannonce (idannonce)
) TYPE=MyISAM;


Si quelqu'un pouvait éclairer ma lanterne.
Merci d'avance
Spidetra
Tu pourrais poster la requete qui pose pb ?
webide
Justement, je ne comprends pas ce que veut dire cette erreur et le code dans mon précédent message et la base de données qui fait tourner le script.
Voici le script qui je pense pose problème
CODE
<?php require_once('../Connections/connexion.php'); ?><?php
$maxRows_DetailRS1 = 10;
$pageNum_DetailRS1 = 0;
if (isset($_GET['pageNum_DetailRS1'])) {
 $pageNum_DetailRS1 = $_GET['pageNum_DetailRS1'];
}
$startRow_DetailRS1 = $pageNum_DetailRS1 * $maxRows_DetailRS1;

mysql_select_db($database_connexion, $connexion);
$recordID = $_GET['recordID'];
$query_DetailRS1 = "SELECT * FROM inscription  WHERE id_membre = $recordID";
$query_limit_DetailRS1 = sprintf("%s LIMIT %d, %d", $query_DetailRS1, $startRow_DetailRS1, $maxRows_DetailRS1);
$DetailRS1 = mysql_query($query_limit_DetailRS1, $connexion) or die(mysql_error());
$row_DetailRS1 = mysql_fetch_assoc($DetailRS1);

if (isset($_GET['totalRows_DetailRS1'])) {
 $totalRows_DetailRS1 = $_GET['totalRows_DetailRS1'];
} else {
 $all_DetailRS1 = mysql_query($query_DetailRS1);
 $totalRows_DetailRS1 = mysql_num_rows($all_DetailRS1);
}
$totalPages_DetailRS1 = ceil($totalRows_DetailRS1/$maxRows_DetailRS1)-1;
?>
petit-ourson
Dans ta table tu as un "idmembre" (attaché) et pas dans ta requête ("id_membre").
Spidetra
la requête porte sur la table inscription. Le champ auquel tu fait référence est dans la table an_membre.
Avec une erreur sur le champ l'erreur serait plutôt du type :
SQL
Unknown column 'idmembre' in 'field list'


en tout cas le bout de code php, ça sent fortement le pager automatique généré par dreamweaver angry.gif

si tu t'y connais en php tu pourrais peut-être afficher las requête sur ta page et nous la poster :
CODE
mysql_select_db($database_connexion, $connexion);
$recordID = $_GET['recordID'];
$query_DetailRS1 = "SELECT * FROM inscription  WHERE id_membre = $recordID";
$query_limit_DetailRS1 = sprintf("%s LIMIT %d, %d", $query_DetailRS1, $startRow_DetailRS1, $maxRows_DetailRS1);
$DetailRS1 = mysql_query($query_limit_DetailRS1, $connexion) or die(mysql_error());
$row_DetailRS1 = mysql_fetch_assoc($DetailRS1);

Il faut juste rajouter ce bout de code :
CODE
echo $query_limit_DetailRS1;


avant :
CODE
$DetailRS1 = mysql_query($query_limit_DetailRS1, $connexion) ....
webide
Maintenant il me marques: SELECT * FROM inscription WHERE id_membre = LIMIT 0, 10You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0, 10' at line 1 J'ais rajouté le bout de code et modifié id_membre
En passant par phpmyadmin j'ais repris l'idmembre et créer une source php, voici le résultat:
CODE
$sql = 'SELECT * FROM `an_membre` LIMIT 0, 30 ';
petit-ourson
Spidetra > Au temps pour moi, j'ai pas regarder assez attenticement ;o)


CITATION
SELECT * FROM inscription WHERE id_membre = LIMIT 0, 10


Donc il te manque l'id dans ta requête.
Spidetra
Ton pb n'est pas au niveau SQL mais bien au niveau Php :
CODE
$recordID = $_GET['recordID'];


La réception du paramêtre recordID n'est pas testé.
Je suis pas un spécialiste de l'injection SQL, mais j'ai pas l'impression que l'appli soit trés sécurisé.
Imaginons le bout de code suivant :
CODE
/lapage.php?recordID=1;DELETE * FROM inscription


=> Suppression de 10 enregistrement dans la table inscription.
webide
Excuse mon ignorance mais alors que dois je inscrire?
Spidetra
CITATION(webide @ jeudi 20 avril 2006, 13h25)
Excuse mon ignorance mais alors que dois je inscrire?
*


il faudrait tester ta variable RecordId pour t'assurer que le paramètre est bien passé.
Tu as un lien vers le script que tu utilises ?
Je jetterai un coup d'oeil
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.