erreur de syntax

Eléphant du PHP | 388 Messages

11 mai 2010, 19:51

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

ViPHP
ViPHP | 5462 Messages

11 mai 2010, 20:22

tu devrais faire afficher les requete dans tes erreurs
or exit($marequete . '<br />' . mysql_error());

Eléphant du PHP | 388 Messages

11 mai 2010, 20:44

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

11 mai 2010, 20:47

Bonsoir,

Tu as mis 2 fois mysql_query(), le 1er est en trop ;)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 388 Messages

11 mai 2010, 20:57

oui exact merci mais voici se que j'obtient

Code : Tout sélectionner

erreur sql § Query was empty

ViPHP
ViPHP | 2287 Messages

11 mai 2010, 21:19

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 ?
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 388 Messages

11 mai 2010, 21:27

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 :?

ViPHP
ViPHP | 5462 Messages

11 mai 2010, 21:27

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());

Eléphant du PHP | 388 Messages

11 mai 2010, 21:46

toujours Query was empty

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

ViPHP
ViPHP | 5462 Messages

11 mai 2010, 21:51

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:

Eléphant du PHP | 388 Messages

11 mai 2010, 22:26

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

ViPHP
AB
ViPHP | 5818 Messages

11 mai 2010, 22:37

$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 ?

Eléphant du PHP | 388 Messages

11 mai 2010, 22:42

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 ?

ViPHP
AB
ViPHP | 5818 Messages

11 mai 2010, 22:54

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...

Eléphant du PHP | 388 Messages

12 mai 2010, 07:30

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
  }

  ?>