Requete sql dans php
Tatoo
-
Tatoo -
Tatoo -
Bonjour,
je suis en train de crée un site pour un ami en php j'utilise wamp server pour le visualiser et tout fonctionne parfaitement mais lorsque j'ai voulus le mettre sur internet via webhost mon menu ne fonctionne plus.
Normalement lorsque je clic sur une catégorie dans mon menu il ne devrait m'afficher que les sujets qui concerne cette catégorie pour cela j'ai crée une base de donnée avec une table categories qui contient les champs id, href, intitule et title
et une table wb_article qui contient les champs id,titre,img,chapeau,texte,visible,date et categorie
le champ href de la table categories contient le même terme que le champ categorie de la table wb_article dans mon code php j'ai du code qui permet de voir si on a cliqué sur le titre de l'article ou sur une catégorie si on clic sur le titre sa renvoi dans l'adresse l'id de l'article et si on clic sur une catégorie sa renvoi le href
comme je l'ai dis sur mon pc en local via wamp server afficher uniquement l'article sélectionner (via id) fonctionne parfaitement et afficher uniquement la catégorie sélectionnée (via href) fonctionne tout aussi bien mais dès que je passe par webhost afficher l'article grâce à l'id fonctionne mais affiché la catégorie grâce à href ne fonctionne pas voici le message d'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 'WHERE visible=1 AND categorie=\'roman\'' at line 1
pourtant il me renvoi exactement la même chose dans l'adresse
https://www.000webhost.com/migrate?static=true
Je ne sais pas si j'ai vraiment été claire c'est claire dans ma tete mais j'ai toujours du mal à déveloper ^^ si quelqu'un peut m'expliquer mon erreur ca m'aiderai vraiment car ca fait un moment que je cherche
Merci d'avance
je suis en train de crée un site pour un ami en php j'utilise wamp server pour le visualiser et tout fonctionne parfaitement mais lorsque j'ai voulus le mettre sur internet via webhost mon menu ne fonctionne plus.
Normalement lorsque je clic sur une catégorie dans mon menu il ne devrait m'afficher que les sujets qui concerne cette catégorie pour cela j'ai crée une base de donnée avec une table categories qui contient les champs id, href, intitule et title
et une table wb_article qui contient les champs id,titre,img,chapeau,texte,visible,date et categorie
le champ href de la table categories contient le même terme que le champ categorie de la table wb_article dans mon code php j'ai du code qui permet de voir si on a cliqué sur le titre de l'article ou sur une catégorie si on clic sur le titre sa renvoi dans l'adresse l'id de l'article et si on clic sur une catégorie sa renvoi le href
if(isset($_GET['id'])){ if(is_numeric($_GET['id'])){ $sqlA="SELECT id,titre,date,texte,categorie,img FROM wb_article WHERE visible=1 AND id=".$_GET['id'] ; } else { $sqlA="SELECT id,titre,chapeau,date,categorie,img FROM wb_article WHERE visible=1 AND id<10 ORDER BY date DESC "; } }else{ $sqlA="SELECT id,titre,chapeau,date,categorie,img FROM wb_article WHERE visible=1 AND id<10 ORDER BY date DESC"; } if(isset($_GET['href'])){ $sqlA="SELECT id,titre,chapeau,date,categorie,img FROM wb_article ORDER BY date DESC WHERE visible=1 AND categorie=".$_GET['href']; } $sqlC="SELECT id,intitule,href,title FROM categories"; $cate = fetchAll($sqlC); $articles = fetchAll($sqlA); function fetchAll($sql){ $res=mysql_query($sql) or die(mysql_error()); while($tuple=mysql_fetch_assoc($res)){ $tuples[]=$tuple; } return $tuples; } <div id="menu"> <ul id="cat"> <li class="titremenu"> Catégories </li> <li class="itemmenu"> <a href="index.php" title="retour vers la page d'accueil" class="lienmenu" > Page Principale </a> </li> <?php foreach($cate as $cat) { ?> <li class="itemmenu"> <a href="?href='<?php echo ($cat['href']); ?>'" title="<?php echo $cat['title'];?>" class="lienmenu" > <?php echo $cat['intitule']; ?> </a> </li> <?php } ?> </ul> </div> <!-- fin menu --> <div id="corps"> <?php foreach ($articles as $article){ ?> <ul class="article"> <li class="titre"> <a href="?id=<?php echo $article['id']; ?>" class="titre" title="Permet de voir l'articles en entier" > <?php echo $article['titre']; ?> </a> </li> <li class="image"> <a href="?id=<?php echo $article['id']; ?>" class="titre" title="Permet de voir l'articles en entier" > <img <?php echo $article['img']; ?>/> </a> </li> <li class="date"> <p> Edité <?php echo strftime('en %Y',strtotime($article['date'])); ?> </p> </li> <li class="chapeau"> <?php echo($article['chapeau']); ?> </li> <li class="texte"> <?php echo($article['texte']); ?> </li> <li class="vide"> </li> </ul> <?php } ?> </div>
comme je l'ai dis sur mon pc en local via wamp server afficher uniquement l'article sélectionner (via id) fonctionne parfaitement et afficher uniquement la catégorie sélectionnée (via href) fonctionne tout aussi bien mais dès que je passe par webhost afficher l'article grâce à l'id fonctionne mais affiché la catégorie grâce à href ne fonctionne pas voici le message d'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 'WHERE visible=1 AND categorie=\'roman\'' at line 1
pourtant il me renvoi exactement la même chose dans l'adresse
https://www.000webhost.com/migrate?static=true
Je ne sais pas si j'ai vraiment été claire c'est claire dans ma tete mais j'ai toujours du mal à déveloper ^^ si quelqu'un peut m'expliquer mon erreur ca m'aiderai vraiment car ca fait un moment que je cherche
Merci d'avance
A voir également:
- Requete sql dans php
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Logiciel sql - Télécharger - Bases de données
- Jointure sql ✓ - Forum MySQL
- Alert php ✓ - Forum PHP
13 réponses
il faurdait que tu entoure le nom de ta catégorie par ' ', exemple :
$sqlA="SELECT id,titre,chapeau,date,categorie,img FROM wb_article ORDER BY date DESC WHERE visible=1 AND categorie='".$_GET['href']."'";
Essai ça:
$sqlA='SELECT id,titre,chapeau,date,categorie,img FROM wb_article WHERE visible="1" AND categorie="'.mysql_real_escape_string($_GET['href']).'" ORDER BY date DESC;
Non par contre j'ai surtout interverti le ORDER BY avec le WHERE et rajouté la fonction mysql_real_escape_string()
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
et bien si j'essaie
$sqlA="SELECT id,titre,chapeau,date,categorie,img FROM wb_article ORDER BY date DESC WHERE visible=1 AND categorie='".$_GET['href']."'";
je garde exactement le même problème qu'il ne veut pas aller dans ma categorie mais pour cette erreur ci cette fois
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 'WHERE visible=1 AND categorie='\'roman\''' at line 1
et si j'essaie celui ci
$sqlA='SELECT id,titre,chapeau,date,categorie,img FROM wb_article WHERE visible="1" AND categorie="'.mysql_real_escape_string($_GET['href']).'" ORDER BY date DESC;
et bien il ne m'affiche même plus ma page j'ai directement droit à ceci
PHP Error Message
Parse error: syntax error, unexpected T_STRING in /home/a1568083/public_html/index.php on line 27
Free Web Hosting
mais j'ai quand meme teste en tapant moi meme dans l'url https://www.000webhost.com/migrate?static=true
et il m'affiche ca
Parse error: syntax error, unexpected T_STRING in /home/a1568083/public_html/index.php on line 27
je pense que la premiere requete je l'avais deja essayer mais le mysql_real_escape_string je ne connaissais pas
$sqlA="SELECT id,titre,chapeau,date,categorie,img FROM wb_article ORDER BY date DESC WHERE visible=1 AND categorie='".$_GET['href']."'";
je garde exactement le même problème qu'il ne veut pas aller dans ma categorie mais pour cette erreur ci cette fois
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 'WHERE visible=1 AND categorie='\'roman\''' at line 1
et si j'essaie celui ci
$sqlA='SELECT id,titre,chapeau,date,categorie,img FROM wb_article WHERE visible="1" AND categorie="'.mysql_real_escape_string($_GET['href']).'" ORDER BY date DESC;
et bien il ne m'affiche même plus ma page j'ai directement droit à ceci
PHP Error Message
Parse error: syntax error, unexpected T_STRING in /home/a1568083/public_html/index.php on line 27
Free Web Hosting
mais j'ai quand meme teste en tapant moi meme dans l'url https://www.000webhost.com/migrate?static=true
et il m'affiche ca
Parse error: syntax error, unexpected T_STRING in /home/a1568083/public_html/index.php on line 27
je pense que la premiere requete je l'avais deja essayer mais le mysql_real_escape_string je ne connaissais pas
non ca ne change rien mais normalement php ne fait pas de différence entre ' et " juste qu'il faut refermer avec le même et encore la plupart du temps il accepte la fermeture même si on n'utilise pas le même
en fait mon code est rangé sur plusieurs page j'ai donc ma page index avec tout ce qui est php et une page vue.php ou est noté tout ce qui s'affichera à l'écran de l'utilisateur et à la ligne 27 de mon index j'ai juste un include ('vue.php');
C'est par ce que j'ai regroupé tout sinon il y a aussi une page config avec tout ce qui est utile à la connection à la base de donnée, une page screen pour le css et la fonction fetchall se trouve sur une page modele.php ou je regroupe mes fonction c'est le systeme que personne n'aime mais avec lequel j'ai apris a coder j'avais un prof qui aimait rangé tout pour que ca reste claire ^^
Après réflexion mon problème est qu'il me rajoute des \ de chaque côté de ma catégorie vu l'avertissement y a t-il une facon de codé qui utilise les \ peut etre pour prendre en compte les ""
Pff encore moi j'ai cru que j'avais trouvé la solution un ami viens de m'apprendre que c'était parce que le serveur utilise une version de php plus récente que la mienne et dans les nouvelles version lorsqu'on fait un $_GET['href'] par exemple et bien il crée de lui même une variable nommée $href de ce fait j'ai directement mis dans ma requete sql la variable
$sqlA="SELECT id,titre,chapeau,date,categorie,img FROM wb_article WHERE visible='1' AND categorie='$href'" ;
mais j'ai maintenant droit à une erreur php lorsque je vais sur une page de catégorie
Warning: Invalid argument supplied for foreach() in /home/a1568083/public_html/vue.php on line 48
cette erreu me signale qu'une des éléments de mon tableau qui est parcouru par ma boucle foreach n'est pas valide j'ai donc vérifié toute mes table et j'ai fini par mettre la verifier ma requete sql par phpmyadmin en remplacant bien entendu $href par le nom d'une catégorie et il me trouve effectivement tout les éléments demandé donc je passe d'un problème à l'autre juste pour m'amuser un peu ^^
$sqlA="SELECT id,titre,chapeau,date,categorie,img FROM wb_article WHERE visible='1' AND categorie='$href'" ;
mais j'ai maintenant droit à une erreur php lorsque je vais sur une page de catégorie
Warning: Invalid argument supplied for foreach() in /home/a1568083/public_html/vue.php on line 48
cette erreu me signale qu'une des éléments de mon tableau qui est parcouru par ma boucle foreach n'est pas valide j'ai donc vérifié toute mes table et j'ai fini par mettre la verifier ma requete sql par phpmyadmin en remplacant bien entendu $href par le nom d'une catégorie et il me trouve effectivement tout les éléments demandé donc je passe d'un problème à l'autre juste pour m'amuser un peu ^^
je vais donc faire un long message
vue.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-BE" lang="fr-BE">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title><?php echo (TITRE.' - '.$soustitre); ?></title>
<link rel="stylesheet" type="text/css" href="screen.css" media="screen" title="Normal"/>
</head>
<body>
<div id="conteneur">
<div id="entete">
<h1>
<a href="index.php" title="lien vers la page principal" class="lienlogo" >
<img src="logoplein.png" title="Logo de Richard Faymonville" alt="erreur au chargement du logo" id="logo" height="121px" width="159px"/>
</a>
</h1>
</div> <!-- fin en tete -->
<div id="contenu">
<div id="menu">
<ul id="cat">
<li class="titremenu">
Catégories
</li>
<li class="itemmenu">
<a href="index.php" title="retour vers la page d'accueil" class="lienmenu" >
Page Principale
</a>
</li>
<?php
foreach($cate as $cat) {
?>
<li class="itemmenu">
<a href="?href='<?php echo ($cat['href']); ?>'" title="<?php echo $cat['title'];?>" class="lienmenu" >
<?php echo $cat['intitule']; ?>
</a>
</li>
<?php
}
?>
</ul>
</div> <!-- fin menu -->
<div id="corps">
<?php
foreach ($articles as $article){
?>
<ul class="article">
<li class="titre">
<h2>
<a href="?id=<?php echo $article['id']; ?>" class="titre" title="Permet de voir l'articles en entier" >
<?php echo $article['titre']; ?>
</a>
</h2>
</li>
<li class="image">
<a href="?id=<?php echo $article['id']; ?>" class="titre" title="Permet de voir l'articles en entier" >
<img <?php echo $article['img']; ?>/>
</a>
</li>
<li class="date">
<p>
Edité <?php echo strftime('en %Y',strtotime($article['date'])); ?>
</p>
</li>
<li class="chapeau">
<?php echo($article['chapeau']); ?>
</li>
<li class="texte">
<?php echo($article['texte']); ?>
</li>
<li class="vide">
</li>
</ul>
<?php
}
?>
</div><!-- fin corps -->
</div> <!-- fin contenu -->
<div id="pieddepage">
<p class="layout">
<a href="https://www.000webhost.com/migrate?static=true" title="lien vers le portfolio de Tatiana Faymonville" class="lien" >
Layout created by Tatiana
</a>
</p>
</div> <!-- fin pied de page -->
</div> <!-- fin conteneur -->
</body>
</html>
Index.php
<?php
include ('config.php');
include ('modele.php');
mysql_connect(HOST,USER,PASS) or die(mysql_error());
mysql_select_db(DBNAME) or die(mysql_error());
if(isset($_GET['id'])){
if(is_numeric($_GET['id'])){
$sqlA="SELECT id,titre,date,texte,categorie,img FROM wb_article WHERE visible='1' AND id=".$_GET['id'] ;
} else {
$sqlA="SELECT id,titre,chapeau,date,categorie,img FROM wb_article WHERE visible='1' AND id='1' ";
}
}else{
$sqlA="SELECT id,titre,chapeau,date,categorie,img FROM wb_article WHERE visible='1' AND id='1' ORDER BY date DESC";
}
if(isset($_GET['href'])){
$sqlA="SELECT id,titre,chapeau,date,categorie,img FROM wb_article WHERE visible='1' AND categorie=".$_GET['href'] ;
}
$sqlC="SELECT id,intitule,href,title FROM categories";
$cate = fetchAll($sqlC);
$articles = fetchAll($sqlA);
include ('vue.php');
?>
modele.php
<?php
define('TITRE','Formateur Richard Faymonville');
$soustitre = 'Formateur' ;
//$sqlA='SELECT id,titre,texte,chapeau,date FROM wb_article';
//$sqlC='SELECT id,auteurcom,datecom,adresse,site,com FROM commentaires ORDER BY datecom DESC';
function fetchAll($sql){
$res=mysql_query($sql) or die(mysql_error());
while($tuple=mysql_fetch_assoc($res)){
$tuples[]=$tuple;
}
return $tuples;
}
?>
config.php
<?php
define('HOST','localhost');
define('USER','root');
define('PASS','');
define('DBNAME','richard');
?>
Base de donnée
table wb_article
id, titre, chapeau, texte, date, img, cotegorie, visible
exemple:
id= 1
titre = L'academie
chapeau = dans l'academie...
texte = dans l'academie de mon village on apprend la musique
date= 10/03/2010
img = src="" title=""
categorie = roman
visible = 1
table categories
id, intitule, href,title
exemple:
id = 1
intitule = Roman
href = roman
title = lien vers la page des roman
vue.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-BE" lang="fr-BE">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title><?php echo (TITRE.' - '.$soustitre); ?></title>
<link rel="stylesheet" type="text/css" href="screen.css" media="screen" title="Normal"/>
</head>
<body>
<div id="conteneur">
<div id="entete">
<h1>
<a href="index.php" title="lien vers la page principal" class="lienlogo" >
<img src="logoplein.png" title="Logo de Richard Faymonville" alt="erreur au chargement du logo" id="logo" height="121px" width="159px"/>
</a>
</h1>
</div> <!-- fin en tete -->
<div id="contenu">
<div id="menu">
<ul id="cat">
<li class="titremenu">
Catégories
</li>
<li class="itemmenu">
<a href="index.php" title="retour vers la page d'accueil" class="lienmenu" >
Page Principale
</a>
</li>
<?php
foreach($cate as $cat) {
?>
<li class="itemmenu">
<a href="?href='<?php echo ($cat['href']); ?>'" title="<?php echo $cat['title'];?>" class="lienmenu" >
<?php echo $cat['intitule']; ?>
</a>
</li>
<?php
}
?>
</ul>
</div> <!-- fin menu -->
<div id="corps">
<?php
foreach ($articles as $article){
?>
<ul class="article">
<li class="titre">
<h2>
<a href="?id=<?php echo $article['id']; ?>" class="titre" title="Permet de voir l'articles en entier" >
<?php echo $article['titre']; ?>
</a>
</h2>
</li>
<li class="image">
<a href="?id=<?php echo $article['id']; ?>" class="titre" title="Permet de voir l'articles en entier" >
<img <?php echo $article['img']; ?>/>
</a>
</li>
<li class="date">
<p>
Edité <?php echo strftime('en %Y',strtotime($article['date'])); ?>
</p>
</li>
<li class="chapeau">
<?php echo($article['chapeau']); ?>
</li>
<li class="texte">
<?php echo($article['texte']); ?>
</li>
<li class="vide">
</li>
</ul>
<?php
}
?>
</div><!-- fin corps -->
</div> <!-- fin contenu -->
<div id="pieddepage">
<p class="layout">
<a href="https://www.000webhost.com/migrate?static=true" title="lien vers le portfolio de Tatiana Faymonville" class="lien" >
Layout created by Tatiana
</a>
</p>
</div> <!-- fin pied de page -->
</div> <!-- fin conteneur -->
</body>
</html>
Index.php
<?php
include ('config.php');
include ('modele.php');
mysql_connect(HOST,USER,PASS) or die(mysql_error());
mysql_select_db(DBNAME) or die(mysql_error());
if(isset($_GET['id'])){
if(is_numeric($_GET['id'])){
$sqlA="SELECT id,titre,date,texte,categorie,img FROM wb_article WHERE visible='1' AND id=".$_GET['id'] ;
} else {
$sqlA="SELECT id,titre,chapeau,date,categorie,img FROM wb_article WHERE visible='1' AND id='1' ";
}
}else{
$sqlA="SELECT id,titre,chapeau,date,categorie,img FROM wb_article WHERE visible='1' AND id='1' ORDER BY date DESC";
}
if(isset($_GET['href'])){
$sqlA="SELECT id,titre,chapeau,date,categorie,img FROM wb_article WHERE visible='1' AND categorie=".$_GET['href'] ;
}
$sqlC="SELECT id,intitule,href,title FROM categories";
$cate = fetchAll($sqlC);
$articles = fetchAll($sqlA);
include ('vue.php');
?>
modele.php
<?php
define('TITRE','Formateur Richard Faymonville');
$soustitre = 'Formateur' ;
//$sqlA='SELECT id,titre,texte,chapeau,date FROM wb_article';
//$sqlC='SELECT id,auteurcom,datecom,adresse,site,com FROM commentaires ORDER BY datecom DESC';
function fetchAll($sql){
$res=mysql_query($sql) or die(mysql_error());
while($tuple=mysql_fetch_assoc($res)){
$tuples[]=$tuple;
}
return $tuples;
}
?>
config.php
<?php
define('HOST','localhost');
define('USER','root');
define('PASS','');
define('DBNAME','richard');
?>
Base de donnée
table wb_article
id, titre, chapeau, texte, date, img, cotegorie, visible
exemple:
id= 1
titre = L'academie
chapeau = dans l'academie...
texte = dans l'academie de mon village on apprend la musique
date= 10/03/2010
img = src="" title=""
categorie = roman
visible = 1
table categories
id, intitule, href,title
exemple:
id = 1
intitule = Roman
href = roman
title = lien vers la page des roman