IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de donn�es Discussion :

Probleme pour int�rroger une base avec "%" (Tous)


Sujet :

PHP & Base de donn�es

  1. #1
    Membre exp�riment�
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 181
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 181
    Par d�faut Probleme pour int�rroger une base avec "%" (Tous)
    Bonjour,
    tous marchais et j'ai du faire un truc que je n'arrive pas retourver!!!!!
    J'ai un formulaire a 4 champs
    Quand on fait "envoy�" il va int�rroger une base et affiche les info en fonction de ce qui a �t� s�lectionner dans le focrmulaire.
    Pas tres compliquer.
    Mon probleme c'est dans on dernier champs, quand je laisse "tous" tout est filtr�. C'est dire il y a rien qui est retourn�. C'est drolement etrange car il est identique au champs pr�c�dent:

    Pr�cision important:
    Si le champs f_prix, je le laisse sur tous (donc %) il me filtre tous, mais tous. Il y a rien qui afficher sur ma page web. PAR CONTRE, si je selction une valeur, par exemple < 900, il me retourne et correctement tous ce qui est en dessous de 900. Si j'ajoute un autre filtre, motos, par exemple, il me retourne que les motos en dessous de 900.
    Mais quand je laisse "Tous", tout est filtr�.
    Pourtant le champs f_prix et f_cylindree ont la meme "configuration". A moin que j'aie loup� un truc.

    Voici mon code:
    Le formulaire
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    					<form method="post" action="">
    					<input type="hidden" value="1" name="f_sent">
    					<table border="0" cellpadding="0" cellspacing="0">
     
    					  <tr>
    						<td class="td-occasion">Type : </td>
    						<td>
    						  <select size="1" name="f_type" onFocus="javascript:this.style.backgroundColor=#ffffff">
    							  <option value="%" selected>Tous</option>
    							  <option value="Motos">Motos</option>
    							  <option value="Scooters">Scooters</option>
     
    						  </select>
    						</td>
    					  </tr>
    					  <tr>
    						<td>Marque : </td>
    						<td>
    							<select size="1" name="f_marque">
    								<option value="%" selected>Tous</option><option value='Aprilia'>Aprilia</option><option value='Kymko'>Kymko</option><option value='Peogeot'>Peogeot</option><option value='SYM'>SYM</option><option value='Yamaha'>Yamaha</option> 							</select>
     
    						</td>
    					  </tr>
    					  <tr>
    						<td>Cylindrée : </td>
    						<td>
    							<select size="1" name="f_cylindree">
    								<option value="%" selected>Tous</option><option value='50'>50 ccm et moins</option><option value='125'>50 ccm et 125 ccm</option><option value='400'>125 ccm et 400 ccm</option><option value='601'>600 ccm et 1000 ccm</option><option value='1000'>1000 ccm et plus</option> 							</select>
     
    						</td>
    					  </tr>
    					  <tr>
    						<td>Prix : </td>
    						<td>
    							<select size="1" name="f_prix">
    								<option value="%" selected>Tous</option><option value='900'>< 900</option><option value='1500'>< 1500</option><option value='1900'>< 1900</option><option value='2900'>< 2900</option><option value='3390'>< 3390</option><option value='4900'>< 4900</option><option value='6900'>< 6900</option><option value='9900'>< 9900</option> 							</select>					
    						</td>
     
    					  </tr>
    					  <tr>
    					  <td colspan="2">&nbsp;
     
    					  </td></tr>
    					  <tr>
    						<td colspan="2">
    							<input type="submit" value="Envoyer" name="send" class="bouton">
    							<input type="reset" value="Rétablir" name="reset" class="bouton">
    						</td>
     
    					  </tr>
    					</table>
    					</form>
    et mon code PHP qui va trier dans la bas
    Code PHP : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    $sql= 'SELECT * FROM tb_scootershop WHERE fd_type LIKE "'.$type.'" AND fd_marque LIKE "'.$marque.'" AND fd_cylindree LIKE "'.$cylindree.'" AND fd_prix <= "'.$prix.'"';
    							$query=mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    							$nb = mysql_num_rows($query);
    							if ($nb < 1) {  
    								echo 'Aucun enregistrement selon vos critères de recherche';
    							} else {
    								echo '<table class="occasion" cellspacing="0" cellpadding="0"><tr>
    											<td class="red">Type</td>
    											<td class="red">Marque</td>
    											<td class="red">Modèle</td>
    											<td class="red">Cylindree</td>
    											<td class="red">Prix</td>
    											<td class="red">Description</td>
    											<td class="red">Photo</td>
    										</tr>';
    									while($data = mysql_fetch_assoc($query)){
    										echo '<tr class="hover"><td>';
    										echo ucfirst($data['fd_type']);
    										echo '</td><td>';
    										echo '<strong>'.ucfirst($data['fd_marque']).'</strong>';
    										echo '</td><td>';
    										echo $data['fd_modele'];
    										echo '</td><td>';
    										echo $data['fd_cylindree'];
    										echo '</td><td>';
    										echo $data['fd_prix'];
    										echo '</td><td>';
    										echo $data['fd_desc'];
    										echo '</td><td>';
    										echo '<a href="img/occasions/'.$data['fd_image'].'" target="_blank" rel="lightbox" title="'.$data['fd_marque'].', '.$data['fd_modele'].', Sfr. '.$data['fd_prix'].'"><img src="img/camera.gif" /></a>';
    										echo '</td></tr>';
    									}
    								echo '</table>';
    							}

    Mas base st comme ceci,

    Tous les champs sont de "varchar" � l'exption de :
    id => int(4)
    fd_prix => smallint(10)
    fd_cylindree => smallint(10)

    Mais pourquoi mon champs f_prix (fd_prix) me cause un probleme????

  2. #2
    Membre exp�riment�
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 181
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 181
    Par d�faut
    La modif que j'ai faite:

    Avant tous mes champs etaient en varchar(noumbre) sauf le champs id qui est et toujouts en int(4)

    Dans mon champs fd_cylindree, j'avais des valeurs:
    50
    125
    600
    1200
    etc.

    Dans mon champs fd_prix j'avais des valeurs:
    1'900
    900
    1'200
    9'900
    Vu que ces deux champ de repondait pas a OREDER BY xx ASC,

    Je les ai mis en int().

    Tous mes valeurs apres le ' ont �t chang�e comme ceci
    900 -> 900
    1'200 -> 1
    9'900 -> 9
    J'ai donc directement modifi� ces valeur dans ma base pour retrouver ceci:

    900
    1200
    9900
    Depuis j'ai mon probleme!!

    Je serait un peu �tonn� que ca soit a cause de ca mais vu que je trouve la solus de mon probleme j'admets toute hypotese, et je viens a vous!!!!

  3. #3
    Membre chevronn�
    Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2004
    Messages
    352
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Par d�faut
    Cette portion de la requ�te ci-dessous retourne un r�sultat valide ? O_o
    A la limite, si $prix vaut % c'est � dire tous, autant ne pas mettre ce bout de requ�te. Le cas contraire, tu concat�nes �a � ta requ�te.

  4. #4
    Membre exp�riment�
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 181
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 181
    Par d�faut
    oups je vois pas trop ce que tu veux dire par concaten�. mais je cible la source du probl�me.

    En fait il peux pas faire de comparaison avec "%", mais avec 900 oui, en fait je nage un peu....

    Je regarde..

  5. #5
    Membre exp�riment�
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 181
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 181
    Par d�faut
    En fait je vais remplace ceci

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    <select size="1" name="f_prix">
    								<option value="%" selected>Tous</option>
    par

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    <select size="1" name="f_prix">
    								<option value="50000" selected>Tous</option>
    et ca marche.

    Mais y aurait eu une solution?

  6. #6
    Membre chevronn� Avatar de SphynXz
    D�veloppeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    D�tails du profil
    Informations personnelles :
    �ge : 39

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par d�faut
    je pense que c'est du � un probl�me d'encodage, et que ton % n'est plus reconnue comme tel

  7. #7
    Membre chevronn�
    Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2004
    Messages
    352
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Par d�faut
    Ben, c'est �a qu'il faut faire :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    <select size="1" name="f_prix">
        <option value="all" selected>Tous</option>
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    $sql= 'SELECT * FROM tb_scootershop WHERE fd_type LIKE "'.$type.'" AND fd_marque LIKE "'.$marque.'" AND fd_cylindree LIKE "'.$cylindree.'"';
    if (is_numeric($prix))
        $query .= ' AND fd_prix <= "'.$prix.'"';

Discussions similaires

  1. R�ponses: 12
    Dernier message: 25/05/2011, 15h47
  2. Probleme pour cr�er une base de donn�es
    Par za_za dans le forum Requ�tes et SQL.
    R�ponses: 2
    Dernier message: 25/07/2009, 18h32
  3. probleme pour creer une base de donnee
    Par caroen dans le forum MySQL
    R�ponses: 5
    Dernier message: 06/11/2008, 13h50
  4. probleme pour tracer une ligne avec OleExcel
    Par blondelle dans le forum C++Builder
    R�ponses: 6
    Dernier message: 18/08/2006, 19h10
  5. Probleme pour reattacher une base
    Par bisounours75012 dans le forum MS SQL Server
    R�ponses: 4
    Dernier message: 20/02/2006, 15h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo