Page 1 sur 3

erreur de syntax

Posté : 11 mai 2010, 19:51
par spidercrash
bonjour a tous je suis entreint de faire un script de pagination
et j'ai une erreur qui est Query was empty
a priori se serai un problème de requête.

voici mon script

<?php
$annoncesparpages=2;
include 'php/connect.php';
$retour_total=mysql_query("SELECT COUNT (*) AS total FROM annonces WHERE categorie = 'vehicules'");

$retour_total = mysql_query($retour_total) or exit(mysql_error());



$donnees_total=mysql_fetch_assoc($retour_total);
$total=$donnees_total['total'];
$nombredepages=ceil($total/$annoncesparpages);
if(isset($_GET['pages']))
{
	$pagesactuelle=intval($_GET['pages']);
		
		if($pagesactuelle>$nombredepages)
		{	
			$pagesactuelle=$nombredepages;
		}
}
else
{
	$pageactuelle=1;
}

$premiereentree=($pageactuelle-1)*$annoncesparpages;

$retourannonce=mysql_query("SELECT annonces.region , annonces.titreannonce , annonces.descriptionannonce , annonces.numannonce , annonces.prix , annonces.date , images.miniature, images.id_img
FROM annonces
LEFT JOIN images ON images.numannonce = annonces.numannonce
WHERE annonces.categorie = 'vehicules'
ORDER BY date DESC '.$premiereentree.', '.$annoncesparpages.'");

$retourannonce = mysql_query($retourannonce) or exit(mysql_error());

while($data=mysql_fetch_assoc($retourannonce))
$numannonce=$data['numannonce']

?>
<table>		   
	<tr>			
		<td class="titreannonce" colspan="2"><a href="agrandissementannonces.php?numannonce=<?php echo $numannonce  ?>"><?php echo $data  ['titreannonce']; ?></a></td>		
				
    </tr>	
    <tr>
		<td class="region"><?php echo $data ['region']; ?></td>	
		<td class="prix"><?php echo $data ['prix'],'€'; ?></td>				
    </tr>	
	<tr>			
		<td class="miniature"><img src="<?php  echo substr($data['miniature'],24); ?>"/></td>
		<?php				
                 $descriptionannonce = $data ['descriptionannonce'];
                 $descriptionannonce = substr($descriptionannonce, 0, 100 );
				echo '<td class="description" >' . $descriptionannonce,'...' . '</td>';	
			?>
			</tr>	
    <tr>
		<td class="date"><?php echo $data ['date']; ?></td>
		<td class="pseudo"><?php echo $data ['pseudo']; ?></td>					
    </tr>  
 </table>
 <?php
 
 echo '<p align="center">Pages : '; //Pour l'affichage, on centre la liste des pagess
for($i=1; $i<=$nombredepages; $i++) //On fait notre boucle
{
     //On va faire notre condition
     if($i==$pagesactuelle) //Si il s'agit de la pages actuelle...
     {
         echo ' [ '.$i.' ] '; 
     }	
     else //Sinon...
     {
          echo ' <a href="paginationtest.php?pages='.$i.'">'.$i.'</a> ';
     }
}
echo '</p>';
?>
Pouvez vous m'aider s'il vous plait merci d'avance

Il y a de l'évolution petit probléme de requete maintenant j'ai 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 'Resource id #3' at line 1

Re: erreur de syntax

Posté : 11 mai 2010, 20:22
par stealth35
tu devrais faire afficher les requete dans tes erreurs
or exit($marequete . '<br />' . mysql_error());

Re: erreur de syntax

Posté : 11 mai 2010, 20:44
par spidercrash
merci pour ton conseil donc j'ai fait cela
 <?php
$annoncesparpages=2;
include 'php/connect.php';
$retour_total=mysql_query("SELECT COUNT(*) AS total FROM annonces
LEFT JOIN images ON images.numannonce = annonces.numannonce
WHERE annonces.categorie = 'vehicules'");
$req= mysql_query($retour_total) or die ('erreur sql §<br />'.$retour_total.'<br />'.mysql_error());
$donnees_total=mysql_fetch_assoc($req);
$total=$donnees_total['total'];
$nombredepages=ceil($total/$annoncesparpages);
if(isset($_GET['pages']))
{
	$pagesactuelle=intval($_GET['pages']);
		
		if($pagesactuelle>$nombredepages)
		{	
			$pagesactuelle=$nombredepages;
		}
}
else
{
	$pageactuelle=1;
}

$premiereentree=($pageactuelle-1)*$annoncesparpages;

$retourannonce=mysql_query("SELECT annonces.region , annonces.titreannonce , annonces.descriptionannonce , annonces.numannonce , annonces.prix , annonces.date , images.miniature, images.id_img
FROM annonces
LEFT JOIN images ON images.numannonce = annonces.numannonce
WHERE annonces.categorie = 'vehicules' ORDER BY date DESC '.$premiereentree.', '.$annoncesparpages.'");
$req2= mysql_query($retourannonce) or die ('erreur sql §<br />'.$retourannonce.'<br />'.mysql_error());

while($data=mysql_fetch_assoc($req2))
$numannonce=$data['numannonce']

?>
<table>		   
	<tr>			
		<td class="titreannonce" colspan="2"><a href="agrandissementannonces.php?numannonce=<?php echo $numannonce  ?>"><?php echo $data  ['titreannonce']; ?></a></td>		
				
    </tr>	
    <tr>
		<td class="region"><?php echo $data ['region']; ?></td>	
		<td class="prix"><?php echo $data ['prix'],'€'; ?></td>				
    </tr>	
	<tr>			
		<td class="miniature"><img src="<?php  echo substr($data['miniature'],24); ?>"/></td>
		<?php				
                 $descriptionannonce = $data ['descriptionannonce'];
                 $descriptionannonce = substr($descriptionannonce, 0, 100 );
				echo '<td class="description" >' . $descriptionannonce,'...' . '</td>';	
			?>
			</tr>	
    <tr>
		<td class="date"><?php echo $data ['date']; ?></td>
		<td class="pseudo"><?php echo $data ['pseudo']; ?></td>					
    </tr>  
 </table>
 <?php
 
 echo '<p align="center">Pages : '; //Pour l'affichage, on centre la liste des pagess
for($i=1; $i<=$nombredepages; $i++) //On fait notre boucle
{
     //On va faire notre condition
     if($i==$pagesactuelle) //Si il s'agit de la pages actuelle...
     {
         echo ' [ '.$i.' ] '; 
     }	
     else //Sinon...
     {
          echo ' <a href="paginationtest.php?pages='.$i.'">'.$i.'</a> ';
     }
}
echo '</p>';
?>

Et j'obtient l'erreur

Code : Tout sélectionner

erreur sql § Resource id #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 'Resource id #3' at line 1

Re: erreur de syntax

Posté : 11 mai 2010, 20:47
par @rthur
Bonsoir,

Tu as mis 2 fois mysql_query(), le 1er est en trop ;)

Re: erreur de syntax

Posté : 11 mai 2010, 20:57
par spidercrash
oui exact merci mais voici se que j'obtient

Code : Tout sélectionner

erreur sql § Query was empty

Re: erreur de syntax

Posté : 11 mai 2010, 21:19
par Calimero
oui exact merci mais voici se que j'obtient

Code : Tout sélectionner

erreur sql § Query was empty
Et qu'est ce que tu ne comprends pas là-dedans ?

Re: erreur de syntax

Posté : 11 mai 2010, 21:27
par spidercrash
oui exact merci mais voici se que j'obtient

Code : Tout sélectionner

erreur sql § Query was empty
Et qu'est ce que tu ne comprends pas là-dedans ?
cela veut dire que mes requete pose problème, mais elle fonctionne bien sous phpmyadmin :?

Re: erreur de syntax

Posté : 11 mai 2010, 21:27
par stealth35
normale ta du virer tout a ligne

au lieu de
$retour_total=mysql_query("SELECT COUNT (*) AS total FROM annonces WHERE categorie = 'vehicules'");
$retour_total = mysql_query($retour_total) or exit(mysql_error());
c'est
$retour_total="SELECT COUNT (*) AS total FROM annonces WHERE categorie = 'vehicules'";
$retour_total = mysql_query($retour_total) or exit(mysql_error());

Re: erreur de syntax

Posté : 11 mai 2010, 21:46
par spidercrash
toujours Query was empty

a priori cela viens de la deuxiéme requete :shock:

Re: erreur de syntax

Posté : 11 mai 2010, 21:51
par stealth35
toujours Query was empty

a priori cela viens de la deuxiéme requete :shock:
normal ta fait la même erreurs, ca te saute pas au yeux ? :shock:

Re: erreur de syntax

Posté : 11 mai 2010, 22:26
par spidercrash
je vais pas y arriver :p

voici se que j'ai fait.
 <?php
$annoncesparpages=2;
include 'php/connect.php';
$retour_total="SELECT COUNT(*) AS total FROM annonces WHERE categorie = 'vehicules'";
$retour_total = mysql_query($retour_total) or exit(mysql_error());


$donnees_total=mysql_fetch_assoc($retour_total);
$total=$donnees_total['total'];
$nombredepages=ceil($total/$annoncesparpages);
if(isset($_GET['pages']))
{
	$pagesactuelle=intval($_GET['pages']);
		
		if($pagesactuelle>$nombredepages)
		{	
			$pagesactuelle=$nombredepages;
		}
}
else
{
	$pageactuelle=1;
}

$premiereentree=($pageactuelle-1)*$annoncesparpages;

$retourannonce="SELECT annonces.region , annonces.titreannonce , annonces.descriptionannonce , annonces.numannonce , annonces.prix , annonces.date , images.miniature, images.id_img FROM annonces LEFT JOIN images ON images.numannonce = annonces.numannonce WHERE annonces.categorie = 'vehicules' ORDER BY date DESC '.$premiereentree.', '.$annoncesparpages.'";
$retourannonce = mysql_query($retourannonce) or exit(mysql_error());

while($data=mysql_fetch_assoc($retourannonce))
$numannonce=$data['numannonce']

?>
<table>		   
	<tr>			
		<td class="titreannonce" colspan="2"><a href="agrandissementannonces.php?numannonce=<?php echo $numannonce  ?>"><?php echo $data  ['titreannonce']; ?></a></td>		
				
    </tr>	
    <tr>
		<td class="region"><?php echo $data ['region']; ?></td>	
		<td class="prix"><?php echo $data ['prix'],'€'; ?></td>				
    </tr>	
	<tr>			
		<td class="miniature"><img src="<?php  echo substr($data['miniature'],24); ?>"/></td>
		<?php				
                 $descriptionannonce = $data ['descriptionannonce'];
                 $descriptionannonce = substr($descriptionannonce, 0, 100 );
				echo '<td class="description" >' . $descriptionannonce,'...' . '</td>';	
			?>
			</tr>	
    <tr>
		<td class="date"><?php echo $data ['date']; ?></td>
		<td class="pseudo"><?php echo $data ['pseudo']; ?></td>					
    </tr>  
 </table>
 <?php
 
 echo '<p align="center">Pages : '; //Pour l'affichage, on centre la liste des pagess
for($i=1; $i<=$nombredepages; $i++) //On fait notre boucle
{
     //On va faire notre condition
     if($i==$pagesactuelle) //Si il s'agit de la pages actuelle...
     {
         echo ' [ '.$i.' ] '; 
     }	
     else //Sinon...
     {
          echo ' <a href="paginationtest.php?pages='.$i.'">'.$i.'</a> ';
     }
}
echo '</p>';
?>
et la l'erreur que j'ai c'est

Code : Tout sélectionner

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 ''.0.', '.2.'' at line 1

Re: erreur de syntax

Posté : 11 mai 2010, 22:37
par AB
$retourannonce=mysql_query("SELECT annonces.region , annonces.titreannonce , annonces.descriptionannonce , annonces.numannonce , annonces.prix , annonces.date , images.miniature, images.id_img
FROM annonces
LEFT JOIN images ON images.numannonce = annonces.numannonce
WHERE annonces.categorie = 'vehicules' ORDER BY date DESC '.$premiereentree.', '.$annoncesparpages.'");
Dans la requête ci-dessus tu as un problème pour sortir tes variables sans compter que tu as oublié la clause limit
$retourannonce = "SELECT 

    annonces.region, 
    annonces.titreannonce, 
    annonces.descriptionannonce, 
    annonces.numannonce, 
    annonces.prix, 
    annonces.date, 

    images.miniature, 
    images.id_img

    FROM annonces 

    LEFT JOIN images 
    ON images.numannonce = annonces.numannonce

    WHERE annonces.categorie = 'vehicules' 

    ORDER BY date DESC 
    LIMIT ".$premiereentree.", ".$annoncesparpages."";
Plus clair comme ça, non ?

Re: erreur de syntax

Posté : 11 mai 2010, 22:42
par spidercrash
oui beaucoup plus clair merci

donc plus d'erreur maintenant mais j'ai aucun affichage de mes annonce est ce a cause de ma premiere requete qui doit reprendre la jointure ?

Re: erreur de syntax

Posté : 11 mai 2010, 22:54
par AB
Faut procéder par étapes...

ça donne quoi quand tu fais afficher ta requête ?
$retourannonce = "SELECT

    annonces.region,
    annonces.titreannonce,
    annonces.descriptionannonce,
    annonces.numannonce,
    annonces.prix,
    annonces.date,

    images.miniature,
    images.id_img

    FROM annonces

    LEFT JOIN images
    ON images.numannonce = annonces.numannonce

    WHERE annonces.categorie = 'vehicules'

    ORDER BY date DESC
    LIMIT ".$premiereentree.", ".$annoncesparpages."";

echo $retourannonce;
Si l'affichage retourné te parait correct, rentre le dans phpmyadmin et donc tu pourras savoir si le résultat ne retourne rien parce qu'il n'y à rien à retourner (données non compatibles) ou s'il y a une erreur dans la requête.

Si ça retourne quelque chose c'est que le problème vient de plus bas dans ton code...

Re: erreur de syntax

Posté : 12 mai 2010, 07:30
par spidercrash
Donc il y a de l'evolution mon probléme venait de ma boucle je l'ouvrer pas :D
maintenant les annonces s'affiche

par contre j'ai un soucis au niveau de la pagination le nombre de page s'affiche bien par rapport au nombre d'annonce mais en premiere page j'ai l'erreur Resource id #4

et quand je clic sur un des numéro de page j'ai

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

voici le script modifié
 <?php
$annoncesparpages=1;
include 'php/connect.php';
$retour_total="SELECT COUNT(*) AS total FROM annonces WHERE categorie = 'immobilier'";
$retour_total = mysql_query($retour_total) or exit(mysql_error());


$donnees_total=mysql_fetch_assoc($retour_total);
$total=$donnees_total['total'];
$nombredepages=ceil($total/$annoncesparpages);
if(isset($_GET['pages']))
{
	$pagesactuelle=intval($_GET['pages']);
		
		if($pagesactuelle>$nombredepages)
		{	
			$pagesactuelle=$nombredepages;
		}
}
else
{
	$pageactuelle=1;
}

$premiereentree=($pageactuelle-1)*$annoncesparpages;

$retourannonce = "SELECT

    annonces.region ,
    annonces.titreannonce ,
    annonces.descriptionannonce ,
    annonces.numannonce ,
    annonces.prix ,
    annonces.date ,

    images.miniature,
    images.id_img

    FROM annonces

    LEFT JOIN images
    ON images.numannonce = annonces.numannonce

    WHERE annonces.categorie = 'immobilier'

    ORDER BY date DESC
    LIMIT ".$premiereentree.", ".$annoncesparpages."";


$retourannonce = mysql_query($retourannonce) or exit(mysql_error());
echo $retourannonce;

while($data=mysql_fetch_assoc($retourannonce))
{
$numannonce=$data['numannonce']

?>
<table>		   
	<tr>			
		<td class="titreannonce" colspan="2"><a href="agrandissementannonces.php?numannonce=<?php echo $numannonce  ?>"><?php echo $data  ['titreannonce']; ?></a></td>		
				
    </tr>	
    <tr>
		<td class="region"><?php echo $data ['region']; ?></td>	
		<td class="prix"><?php echo $data ['prix'],'€'; ?></td>				
    </tr>	
	<tr>			
		<td class="miniature"><img src="<?php  echo substr($data['miniature'],24); ?>"/></td>
		<?php				
                 $descriptionannonce = $data ['descriptionannonce'];
                 $descriptionannonce = substr($descriptionannonce, 0, 100 );
				echo '<td class="description" >' . $descriptionannonce,'...' . '</td>';	
			?>
			</tr>	
    <tr>
		<td class="date"><?php echo $data ['date']; ?></td>
		<td class="pseudo"><?php echo $data ['pseudo']; ?></td>					
    </tr>  
 </table>

 
 <div id="lienpages">
 <?php
 
 echo '<p align="center">Pages : '; //Pour l'affichage, on centre la liste des pagess
for($i=1; $i<=$nombredepages; $i++) //On fait notre boucle
{
     //On va faire notre condition
     if($i==$pagesactuelle) //Si il s'agit de la pages actuelle...
     {
         echo ' [ '.$i.' ] '; 
     }	
     else //Sinon...
     {
          echo ' <a href="paginationtest.php?pages='.$i.'">'.$i.'</a> ';
     }
}
echo '</p>';
?>
<?php
  }

  ?>