Probleme de concatenation

clement1138 Messages postés 52 Date d'inscription mardi 8 février 2011 Statut Membre Dernière intervention 28 juillet 2011 - 17 juin 2008 à 08:54
clement1138 Messages postés 52 Date d'inscription mardi 8 février 2011 Statut Membre Dernière intervention 28 juillet 2011 - 17 juin 2008 à 17:56
bonjour a tous je post mon code et je l'explique ....
 $z=0;
if(isset($_POST['submit'])){




 $site_selectionnes=" " ;
 $service_selectionnes=" ";


$y=0;
for ( $i=1; $i < 4; $i++) {
 if (isset($_POST['societe'.$i])){
 
  if ($i==1) {
       
  for ( $j=1; $j < 14; $j++) {
 if (isset($_POST['site'.$j])){
 $y=1;
    $site_selectionnes =$site_selectionnes. $_POST['site'.$j] ;
    if ($j < 13) {
        $site_selectionnes =$site_selectionnes. $_POST['site'.$j]. "AND" ."'";
    }
}
}
$x=0;
for ( $k=1; $k < 17; $k++) {
 
 if (isset($_POST['service'.$k])){
 $x=1;


    $service_selectionnes= $service_selectionnes. $_POST['service'.$k];
 
    if ($k < 16) {
        $service_selectionnes =  $service_selectionnes.$_POST['service'.$k] ." AND";
    }
}


}
$select = "select id,nom,prenom from svg where service in ".$service_selectionnes."  site in ".$site_selectionnes.";";
echo $select;
}
Donc en gros ce code recupere d'un formulaire composé de checkbox....donc mon probleme c'est au niveau des  "  $service_selectionnes$service_selectionnes. $_POST['service'.$k];" et " $service_selectionnes  $service_selectionnes.$_POST['service'.$k] ." AND"; "
voila je voudrais donc apres mettre ceci dans ma requete sql pour qu'elle soit correcte mais je n'y arrive pas

18 réponses

nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
17 juin 2008 à 09:15
tu ne peus pas faire un truc comme ça :

$_POST['service'.$k];

mais plutot un truc comme ça :

$_POST['service'][$k];

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
17 juin 2008 à 09:18
Salut,

Pareil pour :

$_POST['site'.$j]

ce serai plutot :

$_POST['site'][$j]

a+

Si la réponse vous convient, pensez : Réponse acceptée !
0
clement1138 Messages postés 52 Date d'inscription mardi 8 février 2011 Statut Membre Dernière intervention 28 juillet 2011
17 juin 2008 à 09:22
ben oui si tu veux mais ce n'est pas la dessus que repose mon probleme
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
17 juin 2008 à 09:45
a oui, et comment tu le sais ?
Si tu sais d'ou vient ton problème dit le mais déja avec ce que je t'ai dit, ça ne peus pas marcher !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0

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

Posez votre question
clement1138 Messages postés 52 Date d'inscription mardi 8 février 2011 Statut Membre Dernière intervention 28 juillet 2011
17 juin 2008 à 09:50
ca fonctionne parce que mes checkox sont appelé site1 , site2 etc....et je n'ai pas de pb pour recuperer les valeurs des checkbox donc je sais que ca ne vient pas de ca lol
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
17 juin 2008 à 10:22
ba met nous la requête que ça t'affiche avec le echo, je ne suis pas sur d'avoir tout compris !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
clement1138 Messages postés 52 Date d'inscription mardi 8 février 2011 Statut Membre Dernière intervention 28 juillet 2011
17 juin 2008 à 10:26
lol c'est un peu confus c'est vrai    
mes requete donnent des choses comme ca: "select id,nom,prenom from svg where service in mecanicienmecanicien AND site in chalon nordchalon nordAND';"
je n'ai coché que une case de chaque (1 de service et 1 de site )
pour mieux comprendre je vais en cocher 2 cette fois : "select id,nom,prenom from svg where service in comite d'entreprisecomite d'entreprise ANDcomptabilitecomptabilite AND site in chalon nordchalon nordAND';"

voila donc je ne sais pas trop s'il faut mettre des and et des = a chaque fois ou avec un IN et des virgules...dans tous les cas je suis bloqué 
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
17 juin 2008 à 10:32
Re,

je pense qu'il faut mettre des virgules entre par exemple : chalon et nordchalon !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
clement1138 Messages postés 52 Date d'inscription mardi 8 février 2011 Statut Membre Dernière intervention 28 juillet 2011
17 juin 2008 à 10:39
ok je vais essayer et une idée pour enlever les doublons ?
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
17 juin 2008 à 15:21
quel doublons ?

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
clement1138 Messages postés 52 Date d'inscription mardi 8 février 2011 Statut Membre Dernière intervention 28 juillet 2011
17 juin 2008 à 15:25
que mon code affiche select id,nom,prenom from svg where site in ("chalon,dijon") and service in ("compta,informatique");


mais je n'y  arrive pas voila
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
17 juin 2008 à 15:27
ba je ne sais pas non plus !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
clement1138 Messages postés 52 Date d'inscription mardi 8 février 2011 Statut Membre Dernière intervention 28 juillet 2011
17 juin 2008 à 15:29
c'est vrai et personne ne sait ???
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
17 juin 2008 à 15:31
eu attend, il te suffis de rajouter des parenthèse entre quotes non ?

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
clement1138 Messages postés 52 Date d'inscription mardi 8 février 2011 Statut Membre Dernière intervention 28 juillet 2011
17 juin 2008 à 15:33
oui sa je pense que c'est possible mais par contre c'est niveau des doublons que sa coince ...comme les requete que j'ai mise page d'avant...a chaque fois j'ai plusieurs fois ce que j'ai coché..en fait mon code ne va pas puisque j'ai autant de repetition que de case cochées
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
17 juin 2008 à 15:37
ok ba je vois pas !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
clement1138 Messages postés 52 Date d'inscription mardi 8 février 2011 Statut Membre Dernière intervention 28 juillet 2011
17 juin 2008 à 15:41
ok tant pis
0
clement1138 Messages postés 52 Date d'inscription mardi 8 février 2011 Statut Membre Dernière intervention 28 juillet 2011
17 juin 2008 à 17:56
auto resolu je pose un code qui fonctionne au cas ou que qq un en ai besoin.....

$j = 0;
$requete=" ";
$useTab1 = false;
$useTab2 = false;
$useTab3 = false;
$from = "FROM";
$where = "WHERE";


if(isset($_POST['submit']))
{
 $site_selectionnes = "";
 $service_selectionnes = "";


 for ($i = 1; $i < 4; $i++)
 {
 $societe = "societe" . $i;


 if (isset($_POST[$societe]))
 {
 switch ($i)
 {
 case 1 :
 $useTab1 = true;
 break;
 case 2 :
 $useTab2 = true;
 break;
 case 3 :
 $useTab3 = true;
 break;
 }
 }
 }


 for ($i = 1; $i < 15; $i++)
 {
 $site = "site" . $i;


 if (isset($_POST[$site]))
 {
 if ($site_selectionnes == "")
 {
 $site_selectionnes = "'" . $_POST[$site] . "'";
 }
 else
 {
 $site_selectionnes .= ", '" . $_POST[$site] . "'";
 }
 }
 }


 for($i = 1; $i < 18; $i++)
 {
 $service = "service" . $i;


 if (isset($_POST[$service]))
 {
 if ($service_selectionnes == "")
 {
 $service_selectionnes = "'" . $_POST[$service] . "'";
 }
 else
 {
 $service_selectionnes .= ", '" . $_POST[$service] . "'";
 }
 }
 }


 if ($site_selectionnes != "")
 {
 $where .= " site In (" . $site_selectionnes . ")";
 }


 if ($service_selectionnes != "")
 {
 if ($where != "WHERE")
 {
 $where .= " And";
 }


 $where .= " service In (" . $service_selectionnes . ")";
 }


 $select = "Select id,nom,prenom";


 if ($useTab1)
 {
 $from .=" ". "svg";
 $table="svg";
 $useTab1 = false;
 }
 else if ($useTab2)
 {
 $from .=" " . "autocars";
 $table2="autocars";
 $useTab2 = false;
 }
 else if ($useTab3)
 {
 $from .=" ". "vgo";
 $useTab3 = false;
 $table3="vgo";
 }


 $requete .= $select . " " . $from . " " . $where;


 if ($useTab2)
 {
 $requete .= " Union " . $select . " FROM autocars " . $where;
 }


 if ($useTab3)
 {
 $requete .= " Union " . $select . " FROM vgo " . $where;
 
 }
echo $table;
$resultset = mysql_query($requete);


 while ($row = mysql_fetch_row($resultset))
 {
 $id = $row[0];
 $nom=$row[1];
 $prenom=$row[2];
 if ($id > 1)
 {
 $j++;
 $resultat = "fiche_perso.php?id=$id&table=$table";
 $resultat2 = "$nom $prenom ";
 echo '

'.$resultat2 . '

';
 }
 }


}
echo $j . " résultats trouvés dans la base de données";


?>
0
Rejoignez-nous