8791 sujets

Développement web côté serveur, CMS

Bonjour, je viens d'essayer d'incruster dans ma page d'accueil un module de news (php/Mysql)
et j ai ce message d'erreur qui apparaît:

"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 '-3,3' at line 1"

Voici mes codes:

index.php


<?php
// ***************************************************************
// ADMIN NEWS : IDENTIFICATION
// ***************************************************************
// Protection de page index ADMIN
   include_once('news_ADMIN/_protect.php');
// **************************************
// CONFIGURATION de la NEWS
	include_once('news_config.php');
// **************************************
// Accès autorisé si identifié
if (isset($_SESSION['news_ADMIN/news_SESSION']) && $_SESSION['news_ADMIN/news_SESSION']==true)
{  
   // Redirection vers la page d administration
   header("Location: news_ADMIN/news_admin.php");
   exit;
}
// ------------------------------------------------------
// sinon affichage du formulaire d'identification
?>

<?php
// ***************************************************************
// LISTING des NEWS - avec RESUME des NEWS
// ***************************************************************
// Parametres de CONFIGURATION de la NEWS
	include_once('news_config.php');
// **************************************
// Parametres de Connexion a la BD
	include_once('_connexion.php');
// ***************************************************************
// CONFIGURATION des PARAMETRES du LISTING des NEWS avec RESUME
// ***************************************************************
// NOM de cette page
// (car ce script peut etre integre dans une autre page !)
$nomPage = 'news_liste.php';
// **************************************
// fonction de RESUME du "newsContenu"
// ==> CHOISIR de la mise en forme du résumé (brut ou formaté)
// (l un ou l autre, mais pas les 2)
// texte brut :
	include_once('fct_resume_brut.php');
// (OU) texte formaté (html) :
//	include_once('fct_resume_html.php');
// **************************************
// ==> Taille maxi du RESUME (en nombre de caractères)
$resumeNbreCaracteres = 80;
// -------------------------
// ==> Taille des PETITES photos (en pixels)
// $taillePicto = ' style="width:100px;" ';
// ou : 
$taillePicto = ' style="height:50px;" ';
// -------------------------
// PAGINATION :
// ==> Nombre de News par page
$nbreParPage = 3;
// -------------------------
// ==> on ne veut prendre en compte que les xxx plus récentes (ex : les 30 dernieres)
$nbreTotalOk = 30;
// ***************************************************************
// liens vers chacune des pages
if (isset($_GET['page']))
{
	// On recupere le numero de la page dans l'URL
	$page = $_GET['page'];
}
else // si c'est la premiere fois qu'on charge la page
{
	$page = 1; // On se met sur la page 1 (par defaut)
}
// -------------------------
// nombre total de messages dans la BD
$nbreTotal_query = "SELECT COUNT(*) AS nbre_total FROM ".$table;
$nbreTotal_result = mysql_query($nbreTotal_query) or die('Erreur SQL :<br />'.$nbreTotal_query.'<br />'.mysql_error());
$nbreTotal_row = mysql_fetch_array($nbreTotal_result);
$nbreTotal = $nbreTotal_row['nbre_total'];
// -------------------------
// on ne prend en compte que les xxx plus récentes
if ($nbreTotal > $nbreTotalOk) {
	$nbreTotal = $nbreTotalOk;
}
// nombre de pages a creer
$nombrePages = ceil($nbreTotal / $nbreParPage);
// -------------------------
?>

<?php
// ***************************************************************
// NEWS - FICHE DETAILLEE
// ***************************************************************
// Parametres de CONFIGURATION de la NEWS
	include_once('news_config.php');
// **************************************
// Parametres de Connexion a la BD
	include_once('_connexion.php');
// **************************************
// On recupere l URL de la page d'origine
	$nomPage = $_SERVER["HTTP_REFERER"];
// -------------------------
if (isset($_GET['id']) && $_GET['id']!='')
{
	// On recupere l id de la fiche dans l'URL
	$id = mysql_real_escape_string($_GET['id']);
}
else
{
	// recuperation de id en selectionnant LA DERNIERE fiche cree
	$result_maxid = mysql_query("SELECT MAX(id) AS idmax FROM ".$table);
	$val_maxid = mysql_fetch_array($result_maxid);
	$id = $val_maxid['idmax'];
}
// -------------------------
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html lang="fr">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

	<title> Marbella Surf Club - Biarritz </title>

	<link rel="stylesheet" media="screen" href="css/marbella.css">
	<link href="marbella.css" type="text/css" rel="stylesheet">
	<script type="text/javascript" src="swfobject.js"></script>
  
	<script type="text/javascript">
    swfobject.registerObject("MarbellaSurfClub", "9.0.0", "expressInstall.swf");
	</script>

	<script type="text/javascript">
		function mouseOver1()
		{
		document.b1.src ="fond/accueil2.jpg";
		}
		function mouseOut1()
		{
		document.b1.src ="fond/accueil.jpg";
		}
		function mouseOver2()
		{
		document.b2.src ="fond/marbelliens2.jpg";
		}
		function mouseOut2()
		{
		document.b2.src ="fond/marbelliens.jpg";
		}
		function mouseOver3()
		{
		document.b3.src ="fond/photos2.jpg";
		}
		function mouseOut3()
		{
		document.b3.src ="fond/photos.jpg";
		}
		function mouseOver4()
		{
		document.b4.src ="fond/contact2.jpg";
		}
		function mouseOut4()
		{
		document.b4.src ="fond/contact.jpg";
		}
		function mouseOver5()
		{
		document.b5.src ="fond/liens2.jpg";
		}
		function mouseOut5()
		{
		document.b5.src ="fond/liens.jpg";
		}
	</script>
  
</head>
<body>
  <div id="content">
  
    	<div id="banniere1">
   		 <img src="fond/banniere1.jpg" alt="Marbella petite plage situ&eacute;e au sud de Biarritz, le surf club a &eacute;t&eacute; cr&eacute;&eacute; en 1987 par un groupe de copains avec &agrave; leurs t&#65533;tes Alexandre Romero. Aupa Marbella et Aupa les Marbelliens!!!" title="Marbella Surf Club">
    	</div>
    	
    	<div id="banniere2">
			<object id="MarbellaSurfClub" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="1000" height="250">
			<param name="movie" value="fond/banniere.swf" >
			<!--[if !IE]>-->
			<object type="application/x-shockwave-flash" data="fond/banniere.swf" width="1000" height="250">
			<!--<![endif]-->
			<p><img src="fond/banniere_alternatif.jpg" alt="Marbella Surf Club. Marbella petite plage situ&eacute;e au sud de Biarritz. Aupa Marbella et Aupa les Marbelliens!!!" title="Si cette image apparait c'est que vous n'avez pas install&#65533; le Flash Player"></p>
			<!--[if !IE]>-->
			</object>
			<!--<![endif]-->
			</object>
		</div>
	
		<div id="menu">
        	<hr>
			<ul>
				<li><img src="fond/basque.jpg" alt="Gora Euskadi" title="Gora Euskadi"></li>
				<li><a href="index.php?page=accueil" onmouseover="mouseOver1()" onmouseout="mouseOut1()"><img src="fond/accueil.jpg" alt="" title="" name="b1"></a></li>
				<li><a href="index.php?page=marbelliens" onmouseover="mouseOver2()" onmouseout="mouseOut2()"><img src="fond/marbelliens.jpg" alt="" title="" name="b2"></a></li>
				<li><a href="index.php?page=photos" onmouseover="mouseOver3()" onmouseout="mouseOut3()"><img src="fond/photos.jpg" alt="" title="" name="b3"></a></li>
				<li><a href="index.php?page=contact" onmouseover="mouseOver4()" onmouseout="mouseOut4()"><img src="fond/contact.jpg" alt="" title=""name="b4"></a></li>
				<li><a href="index.php?page=liens" onmouseover="mouseOver5()" onmouseout="mouseOut5()"><img src="fond/liens.jpg" alt="" title="" name="b5"></a></li>
				<li><img src="fond/rasta.jpg" alt="Jah Rastafari" title="Jah Rastafari"></li>
			</ul>
            </hr>
		</div>
	
		<div id="pages">
        
			<?php 
					if (isset($_GET["page"]))
						$page=$_GET["page"];
					else
						$page="";
					 if ($page=="accueil") {include('accueil/accueil.php');}
					 elseif ($page=="marbelliens") {include('marbelliens/marbelliens.php');}
					 elseif ($page=="photos") {include('photos/photos.php');}
					 elseif ($page=="liens") {include('liens.php');}
					 elseif ($page=="contact") {include('contact.php');}
					 elseif ($page=="liens") {include('liens.php');}
					 else {include('accueil/accueil.php');}
			?>
            
  		</div>
        
        <div id="coordonnees">
**Marbella Surf Club Centre de Glisse de la milady, Plage de la Milady, 64200 Biarritz |  http://www.marbellasurfclub.com  | marbellasurfclub@gmail.com | TTK 12/2010**
		</div>
  </div>
  	
</body>

</html>


Accueil.php

<div id="accueil">
	<h1>Bienvenue sur le site du Marbella Surf Club</h1>
        	
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.<br>
            
	<h1>Les news du Marbella Surf Club</h1>
		<?php
		include('news_liste.php');
		?>    
    
		<!-- Panneau connexion administration news --> 
    
		<?php
		include('news_ADMIN/index.php');
		?>
</div>


Merci d'avance.

http://www.marbellasurfclub.com/test/
Modifié par tintin_btz (06 Dec 2010 - 15:44)
salut...

l'erreur ressemble à une mauvaise écriture d'un LIMIT en mysql le prob c'est que je ne vois pas de requète comportant ce genre d'élément dans ce que tu nous as mis...

++
Salut,

C'est ballot, la requête qui foire n'est pas dans le code que tu nous montres. A toi de trouver la requête en question dans tous tes fichiers.
Merci de votre aide

Voici ce que j importe donc je pense que la requète qui ne marche pas doit être la dedans.
Je suis un novice j ai essayé d'adapter un module à mon site (de le personnaliser).
Mais bon pour l instant je n'y arrive pas trop.


<center>

<div class="news_liens">
<?php
// -------------------------
// ecriture des liens vers chacune des pages
// -------------------------
echo '-';
for ($i = 1 ; $i <= $nombrePages ; $i++)
{
	if ($i == $page) { echo ' <b>'.$i.'</b> -'; }
	else { echo ' <a href="'.$nomPage.'?page='.$i.'">'.$i.'</a> -'; }
}
?>
</div>
<br />
<?php
// -------------------------
// Affichage d un RESUME des News
// Petite photo + titre + date + résumé du contenu + lien [suite]
// -------------------------
// On calcule le numero du premier message qu on prend pour le LIMIT de MySQL (pagination)
$num_debut = ($page - 1) * $nbreParPage;
$news_query = "SELECT * FROM ".$table." ORDER BY id DESC LIMIT ".$num_debut.",".$nbreParPage;
$news_result = mysql_query($news_query) or die(mysql_error());
while ($news_row = mysql_fetch_array($news_result))
{
	echo '
	<div class="news_liste">
		<div class="news_entete">
			<span class="news_newsTitre">'.stripslashes($news_row['titre']).'</span>
			<span class="news_date"> le '.date('d/m/Y &#224; H\hi', $news_row['timestamp']).'</span>
		</div>
		<div class="news_contenu">
	'."\n";
    		if ($news_row['photo'] != ''){
	echo '			<img src="'.$cheminphoto.$news_row['photo'].'" '.$taillePicto.' alt="" class="imageG" />'."\n";
			}
			// Editeur WYSIWYG : on doit indiquer correctement le chemin vers le dossier
			// (pour affichage correct des "smyleys", par exemple)
			$newsContenu = str_replace('../'.$EditeurWysiwyg,$EditeurWysiwyg,$news_row['contenu']);
			// on affiche un resume du newsContenu
	echo '			 '.texte_resume(stripslashes($newsContenu),$resumeNbreCaracteres)."\n";
			// on ajoute ... + un lien [suite]
	echo ' ... <a href="news_fiche.php?id='.$news_row['id'].'">[lire la suite]</a>
		 </div>
	 </div><br />
	'."\n";
} // (fin du while)
?>

<br />
</center>


Modifié par tintin_btz (06 Dec 2010 - 16:01)
Change ces lignes là :

$news_query = "SELECT * FROM ".$table." ORDER BY id DESC LIMIT ".$num_debut.",".$nbreParPage;

$news_result = mysql_query($news_query) or die(mysql_error());


En :

$news_query = "SELECT * FROM ".$table." ORDER BY id DESC LIMIT ".$num_debut.",".$nbreParPage;

$news_result = mysql_query($news_query) or die($news_query.'<br />'.mysql_error());


Et montre-nous la requête.
Voila ce qui apparait maintenant:

SELECT * FROM news_table ORDER BY id DESC LIMIT -3,3
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 '-3,3' at line 1
Et rien ne te choque ? La limite ne peut pas commencer par -3.
Il faut que tu modifies ton algo :

$num_debut = ($page - 1) * $nbreParPage;

$page doit valoir 0 par défaut et $nbreParPage doit valoir 3, ce qui foire ton limit.
Je suis un peu largué la.
Je comprends ce que tu m'expliques mais cela s'arrête la.
Après je ne sais pas où modifier les valeurs.
Merci
ton algo considère que tu commence toujours à la page 1... et que donc $page est toujours au minimum = à 1.

Sauf que dans ton cas à l'arrivée sur la page, $page vaut 0...

Il te faut un truc de ce genre avant la fameuse ligne soulignée par Agylus..


if($page < 1) $page=1;


Voilà... rien que ça ça devrait résoudre ton problème... il va falloir que tu révises les notions mathématiques, et les algo et peut être même le php lol (non je plaisante) mais bon un peu de révision ferait pas de mal Smiley cligne
Pas réviser PHP mais apprendre et tout seul cela n est pas facile du tout
J'essaye et vous tient au courant
Merci
Je viens de regarder mes codes php, je viens de voir que $pages est déja positionner sur 1 donc index.php


// ***************************************************************
// LISTING des NEWS - avec RESUME des NEWS
// ***************************************************************
// Parametres de CONFIGURATION de la NEWS
	include_once('news_config.php');
// **************************************
// Parametres de Connexion a la BD
	include_once('_connexion.php');
// ***************************************************************
// CONFIGURATION des PARAMETRES du LISTING des NEWS avec RESUME
// ***************************************************************
// NOM de cette page
// (car ce script peut etre integre dans une autre page !)
$nomPage = 'news_liste.php';
// **************************************
// fonction de RESUME du "newsContenu"
// ==> CHOISIR de la mise en forme du résumé (brut ou formaté)
// (l un ou l autre, mais pas les 2)
// texte brut :
//	include_once('fct_resume_brut.php');
// (OU) texte formaté (html) :
	include_once('fct_resume_html.php');
// **************************************
// ==> Taille maxi du RESUME (en nombre de caractères)
$resumeNbreCaracteres = 80;
// -------------------------
// ==> Taille des PETITES photos (en pixels)
// $taillePicto = ' style="width:100px;" ';
// ou : 
$taillePicto = ' style="height:50px;" ';
// -------------------------
// PAGINATION :
// ==> Nombre de News par page
$nbreParPage = 3;
// -------------------------
// ==> on ne veut prendre en compte que les xxx plus récentes (ex : les 30 dernieres)
$nbreTotalOk = 30;
// ***************************************************************
// liens vers chacune des pages
if (isset($_GET['page']))
{
	// On recupere le numero de la page dans l'URL
	$page = $_GET['page'];
}
else // si c'est la premiere fois qu'on charge la page
{
	$page = 1; // On se met sur la page 1 (par defaut)
}
// -------------------------
// nombre total de messages dans la BD
$nbreTotal_query = "SELECT COUNT(*) AS nbre_total FROM ".$table;
$nbreTotal_result = mysql_query($nbreTotal_query) or die('Erreur SQL :<br />'.$nbreTotal_query.'<br />'.mysql_error());
$nbreTotal_row = mysql_fetch_array($nbreTotal_result);
$nbreTotal = $nbreTotal_row['nbre_total'];
// -------------------------
// on ne prend en compte que les xxx plus récentes
if ($nbreTotal > $nbreTotalOk) {
	$nbreTotal = $nbreTotalOk;
}
// nombre de pages a creer
$nombrePages = ceil($nbreTotal / $nbreParPage);
// -------------------------

STOP!!!

Ok je viens de comprendre en regardant un peu plus loin ton site...

Alors tes news utilisent une variable en GET du nom de 'page'

ce qui donne des liens du genre index.php?page=1

Et je remarque d'un coup que ta navigation utilise la meme variable Smiley lol

donc tu as déjà ce genre de lien index.php?page=Accueil

Donc dans ton module de news $_GET['page'] est isset !!!

Sauf que du texte en numérique ça donne un peu n'importe quoi déjà pas mal que ça donne 0 !!

Alors solution simple remplace la variable de navigation par navig=Accueil et ça résoudra ton problème...

Tu peux t'en rendre compte toi même .. cliques sur Accueil ensuite remplace dans la barre d'adresse accueil par un et fait entrée.. tu verra il faut t'authentifier Smiley smile
Merci beaucoup, le message d'erreur a disparu plus qu'à règler quelques petits soucis et tout fonctionnera sur des roulettes.
Merci à tout le monde pour votre aide.
A bientôt
Re-bonjour,
Voila un problème s'en va et u n autre arrive.
Mais je pense que celui la doit etre une chose toute bete mais que je ne trouve pas.
Je vous explique:
J'ai importe sur ma page d'accueil le formulaire d'administration des news.
Mais quand je rentre mes identifiants , il ne se passe rien, il recharge la page d'accueil.

Le formulaire index2.php:

<div id="news_connexion">

	<h3>Identifiez-vous:</h3>
    
	<!-- identification - connexion -->
    
		<form name="identification" method="post" action="http://www.marbellasurfclub.com/test/index.php">
    
			<table border="0" class="bold_large">
        
				<tr>
					<td style="text-align: right"><label for="newsTitre">Identifiant: </label></td>
					<td><input name="login" size="20" /></td>
				</tr>
            
				<tr>
					<td style="text-align: right"><label for="newsTitre">Mot de passe: </label></td>
					<td><input name="pass" type="password" size="20" /></td>
				</tr>
            
				<tr>
					<td colspan="2" align="center">
 	        		<input type="submit" value="Valider" /></td>
				</tr>
            
			</table>
		</form>
    
		<br />
    
		<span class="important"><?php echo @$msgerreur; ?></span>

</div>



"action":

// ***************************************************************
// ADMIN NEWS : IDENTIFICATION
// ***************************************************************
// Protection de page index ADMIN
   include_once('news_ADMIN/_protect.php');
// **************************************
// CONFIGURATION de la NEWS
	include_once('news_config.php');
// **************************************
// Accès autorisé si identifié
if (isset($_SESSION['news_ADMIN/news_SESSION']) && $_SESSION['news_ADMIN/news_SESSION']==true)
{  
   // Redirection vers la page d administration
   header("Location: news_ADMIN/news_admin.php");
   exit;
}
// ------------------------------------------------------
// sinon affichage du formulaire d'identification


Si quelqu'un peut me donner une petite astuce je suis preneur
et encore merci pour tout
Re...

Juste une idée comme ça...

tu as un session_start() quelque part dans ta page ou dans un des include ???

sinon met le au tout début du code juste après la balise php