Page 1 sur 1

Suppression d'un virgule à la fin d'une requête sql

Posté : 01 sept. 2008, 14:45
par pierrax
Bonjour,

J'ai un formulaire avec des boutons radio me permettant de cocher des option.
Quand je valide le formulaire, une variable est dégagée et utilisée dans une requête sql
  <? 

if(isset($_POST['submit'])){ 

$champs_select = ""; 



for($i=1;$i<5;$i++){ 

$champ = "champ".$i; 
if(isset($_POST[$champ])){ 
$champs_select .= $_POST[$champ].", "; 
} 
} 



$select = "SELECT * FROM questionnaire WHERE matiere IN ($champs_select) limit 10"; 

echo $select; 



} 

?> 


<form method=POST> 
<input type=checkbox name=champ1 value="1"> Anglais 
<input type=checkbox name=champ2 value="2"> Maths 
<input type=checkbox name=champ3 value="3"> Francais 
<input type=checkbox name=champ4 value="4"> Chimie

<input type=submit name=submit value="Ok"> 
</form>
Mon proble est que ce la me donne la bonne valeur mais avec une virgule tout à la fin :

SELECT * FROM questionnaire WHERE matiere IN (2, 3[b][color=red],[/color][/b] ) limit 10 
c'est la virgule de fin de chaine que je n'arrive pas à enlever.

Quelqu'un aurait une piste :

Merci[/code]

Posté : 01 sept. 2008, 15:06
par guilt92
Bonjour,

Regardes du coté de substr()
Exemple #2 Utilisation d'une valeur négative pour length
<?php
$rest = substr("abcdef", 0, -1);  // retourne "abcde"
$rest = substr("abcdef", 2, -1);  // retourne "cde"
$rest = substr("abcdef", 4, -4);  // retourne ""
$rest = substr("abcdef", -3, -1); // retourne "de"
?>
Attention, il te faut supprimer 2 caractères, la virgule et l'espace.

Posté : 01 sept. 2008, 16:15
par Rei Itchido
Plus simplement tu peux faire :

Le formulaire :

Code : Tout sélectionner

<input type='checkbox' name='champs[]' value='1' /> <input type='checkbox' name='champs[]' value='2' /> <input type='checkbox' name='champs[]' value='3' />
Le traitement :
$champs_select = implode(',', $_POST['champs']);
champs étant un tableau, tu peux utiliser les fonctions relatives aux tableaux, implode() ici ;)