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

Eléphanteau du PHP | 33 Messages

01 sept. 2008, 14:45

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]

Mammouth du PHP | 1353 Messages

01 sept. 2008, 15:06

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.
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 396 Messages

01 sept. 2008, 16:15

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