Erreur sql

Résolu/Fermé
allhambra Messages postés 18 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 28 décembre 2007 - 1 juin 2007 à 15:25
 fouroulou - 22 juin 2008 à 01:26
Bonjour,
je souhaite recupérer et afficher dans un tableau certaines données contenues dans une table sql nommée shopping. Celle ci contient les champs Id Societe Activite Contact Tel Fax Mail Adresse. Dans ' activité', je veux récupérer ceux correspondants à 'Bar'.
Pour être sûre de ne pas faire d'erreur, j'ai créée la source php sur mon interface mysql.

Aprés les define serveur,username,passwrd et database, j'ai donc le code suivant :

	
<?php
mysql_select_db(DB_DATABASE, $connect);
$sql = 'SELECT DISTINCT "Activite" FROM "shopping" WHERE \ "Bar\" LIMIT 0, 30 ';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
			$total = mysql_num_rows($result);
// si on a récupéré un résultat on l'affiche.
if($total) {
    // debut du tableau
    echo '<table bgcolor="#FFFFFF">'."\n";
        // première ligne on affiche les titres prénom et surnom dans 2 colonnes
        echo '<tr>';
        echo '<td bgcolor="#669999"><b><u>Société</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Tel</u></b></td>';
      echo '<td bgcolor="#669999"><b><u>Adresse</u></b></td>';
      echo '</tr>'."\n";
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
    while($row = mysql_fetch_array($result)) {
        echo '<tr>';
        echo '<td bgcolor="#CCCCCC">'.$row["Societe"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["Tel"].'</td>';
      echo '<td bgcolor="#CCCCCC">'.$row["Adresse"].'</td>';
      echo '</tr>'."\n";
    }
    echo '</table>'."\n";
    // fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';

// on libère le résultat
mysql_free_result($result);

?>


Qui me donne comme message :

Erreur SQL !
SELECT DISTINCT "Activite" FROM "shopping" WHERE \ "Bar\" LIMIT 0, 30
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 '"shopping" WHERE \ "Bar\" LIMIT 0, 30' at line 1

Cela fait trois jours que je bloque sur cette fonction d'affichage, je ne comprends pas d'où viens l'erreur...
Si vous avez une idée, je prends.
Merci de votre aide.

5 réponses

andrewwk Messages postés 197 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 17 avril 2013 9
1 juin 2007 à 15:30
Mais bar correspond à quoi dans ta requete car quand tu lui dis BAR faut présiser dans quoi ?? !!
0
webtotoche Messages postés 69 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 3 novembre 2007 7
1 juin 2007 à 15:37
Salut !

1. Ta clause " WHERE \ "Bar\" est incomplète.

Where activite = \"bar\" serait mieux.


2. Mais avec la clause WHERE ainsi libellée la requête ne va te retourner qu'un enregistrement, avec un seul champ activite et qui ne contiendra qu'une valeur : bar. Ce n'est pas ce que tu souhaites, n'est-ce pas ?

Tu veux afficher Societe Tel Adresse ? Place-les dans le select :
SELECT DISTINCT societe, adresse, tel, adresse FROM shopping WHERE activite = 'bar'


Vire le LIMIT car s'il y a plus de trente bars dans la table la requête ne te retournera que les 30 premiers trouvés...

Enfin, le DISTINCT est superflu à mon avis, mais ça peut faire l'objet d'une autre discussion.

(en revanche, afficher des résultats avec des doublons c'est pas propre)


Cela répond-il à ta question ?

_
0
allhambra Messages postés 18 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 28 décembre 2007
1 juin 2007 à 18:06
merci infiniment de ton aide, tu me sauves la vie !
on passe d'une ereur sql a un moins méchant
Parse error: syntax error, unexpected T_STRING in /home.8/p/a/u/paunight/www/barsTest4.php on line 63.

La ligne 63 étant précisement
$sql = SELECT DISTINCT societe, adresse, tel, adresse FROM shopping WHERE activite = 'bar'.

A part remplacer les ' ' par " " , je ne vois pas .
0
webtotoche Messages postés 69 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 3 novembre 2007 7 > allhambra Messages postés 18 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 28 décembre 2007
1 juin 2007 à 18:17
Tu initialise $sql avec une chaine de caractères, donc... Tu dois encadrer ta chaine par des quotes simples ou des double-quotes...

$sql = "SELECT DISTINCT societe, adresse, tel, adresse FROM shopping WHERE activite = 'bar' "


( ce que je t'avais indiqué c'était la requête, pas l'initialisation de la variable $sql)

(Oui, je sais, je suis pas gentil ;-) )


_
0
allhambra Messages postés 18 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 28 décembre 2007
1 juin 2007 à 18:57
en rajoutant le ; et les ' '
$sql = 'SELECT DISTINCT societe, adresse, tel, adresse FROM shopping WHERE activite = Bar';


j'ai à nouveau une Erreur SQL !
SELECT DISTINCT societe, adresse, tel, adresse FROM shopping WHERE activite = Bar
Unknown column 'Bar' in 'where clause'.

Pour lui le nom de la colonne, c'est activité( enfin je pense), mais le rédiger ou comment scinder ma table pour que ce soit moins compliqué
pas que je ne veuille pas apprendre, au contraire, mais j'ai perdu trois jours de boulot sur cette erreur et il faudrai que j'avance sur le site.

J'ai donc "contourné" le problème en créant une table bar.
			$connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME,DB_SERVER_PASSWORD)
		or die('Impossible de se connecter : ' . mysql_error());
// sélection de la base de données
			mysql_select_db(DB_DATABASE, $connect);
			$sql = 'SELECT DISTINCT Societe, Tel, Adresse FROM bar';
			$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
			$res = mysql_num_rows($req); 
			echo 'Il y a '.$res.' enregistrement(s) dans la rubrique bar.<p>&nbsp;</p>'; 
			
			while($data = mysql_fetch_assoc($req))
    {
    // on affiche les informations de l'enregistrement en cours
	  echo'<table><tr><td><b>'.$data['Societe'].'</b></td><td>'.$data['Tel'].'</td><td>'.$data['Adresse'].'</td><p>&nbsp;</p></tr>';
    }  
		
			?> 

et là, ça marche
0
webtotoche Messages postés 69 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 3 novembre 2007 7
1 juin 2007 à 19:17
$sql = 'SELECT DISTINCT societe, adresse, tel, adresse FROM shopping WHERE activite = Bar';
et
$sql = "SELECT DISTINCT societe, adresse, tel, adresse FROM shopping WHERE activite = 'bar' "
ce n'est pas la même chose.

Tu as ajouté des quotes simples pour encadrer ta requête ( c'est bien ) mais tu as enlevé celles qui encadraient ta chaîne bar ( c'est mal ).

On peut détailler en privé si tu le souhaites.
_
0
allhambra Messages postés 18 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 28 décembre 2007 > webtotoche Messages postés 69 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 3 novembre 2007
2 juin 2007 à 09:26
coucou,

merci encore de ton aide!
Oui je veux bien détailler tout ça pour bien comprendre comment ça marche.
parce que mon esquive du problème me génère plus de boulot vu qu'il faut que je recrée les tables pour chaque catégorie.

Quoi qu'il en soit, je test le premier code corrigé et je te dis ce qu'il en est.

;)
0
webtotoche Messages postés 69 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 3 novembre 2007 7 > allhambra Messages postés 18 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 28 décembre 2007
2 juin 2007 à 12:44
Salut !

Oui je veux bien détailler tout ça pour bien comprendre comment ça marche. 
Les problèmes que tu évoques sont le fruit d'erreurs de syntaxe et ne sont pas méchants en soi ( mais c'est vrai que ça énerve).

Ton esquive du problème est, c'est bien le cas, une esquive (dont tu as vu les limites) et - Boudiou ! - la politesse me retient de dire ce que j'en pense :D

<mode CAPTCHA on>
mon premier est identique à mon pseudo sur ccm

mon deuxième est indispensable à la syntaxe de mon tout

mon troisième est le service de courrier de google

mon tout est mon adresse e-mail si tu veux poursuivre en privé :-)
<mode CAPTCHA off>



_
0
allhambra Messages postés 18 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 28 décembre 2007 > webtotoche Messages postés 69 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 3 novembre 2007
2 juin 2007 à 10:05
mysql_select_db(DB_DATABASE, $connect);
	$sql = "SELECT DISTINCT societe, tel, adresse FROM shopping WHERE activite = 'bar' ";
	$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	$total = mysql_num_rows($result);
// si on a récupéré un résultat on l'affiche.
	if($total) {
    // debut du tableau
    echo '<table bgcolor="#FFFFFF">'."\n";
        // première ligne on affiche les titres prénom et surnom dans 2 colonnes
        echo '<tr>';
        echo '<td bgcolor="#669999"><b><u>Société</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Tel</u></b></td>';
      echo '<td bgcolor="#669999"><b><u>Adresse</u></b></td>';
      echo '</tr>'."\n";
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
    while($row = mysql_fetch_array($result)) {
        echo '<tr>';
        echo '<td bgcolor="#CCCCCC">'.$row["Societe"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["Tel"].'</td>';
      echo '<td bgcolor="#CCCCCC">'.$row["Adresse"].'</td>';
      echo '</tr>'."\n";
    }
    echo '</table>'."\n";
    // fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';

// on libère le résultat
mysql_free_result($result);

?>


me donne maintenant :

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home.8/p/a/u/paunight/www/barsTest.php on line 64
Pas d'enregistrements dans cette table...
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home.8/p/a/u/paunight/www/barsTest.php on line 89

Je l'aurai un jour, je l'aurai...
0
webtotoche Messages postés 69 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 3 novembre 2007 7 > allhambra Messages postés 18 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 28 décembre 2007
2 juin 2007 à 12:27
Salut !
	$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	$total = mysql_num_rows($result);
Tu affectes le résultat de la requête à $req et tu lis le nombre de lignes de $result...
0
allhambra Messages postés 18 Date d'inscription jeudi 31 mai 2007 Statut Membre Dernière intervention 28 décembre 2007
2 juin 2007 à 21:23
recapitulatif :

le code corrigé est :
	$connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME,DB_SERVER_PASSWORD)
		or die('Impossible de se connecter : ' . mysql_error());
	mysql_select_db(DB_DATABASE, $connect);
	$sql = "SELECT DISTINCT societe, tel, adresse FROM shopping WHERE activite = 'Bar' ";
	$result = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	$total = mysql_num_rows($result);
echo 'total ='.$total.'<br><br>';  
   // si on a récupéré un résultat on l'affiche.
   if($total>0) {
    // debut du tableau
   
    // lecture et affichage des résultats sur 3 colonnes, 1 résultat par ligne.    
    while($row = mysql_fetch_array($result)) {
	echo '<pre>';
	print_r($row);
	echo '/<pre>';
    
    }
    echo '</table>'."\n";
    // fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette catégorie...';

// on libère le résultat
mysql_free_result($result);

?>


Un énorme merci à webtotoche pour l'implication voir l'acharnement dont il à fait preuve, pour webtotoche hip hip hip....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
debutant en PHP-Mysql j'ai cree uen base données quand je fais insert into table l'erreur column count doesn't match value count at row 1 s'affiche je n'arrive^pas à resoudre
0