Forum Clubic

Creer une requette a partir d'un formulaire? php (page 4)

je parlais des doublons dans ce sens …tiens avec un exemple sa ira mieux :

select id,nom,prenom from svg where site in chalon nord , chalon nordANDdijon foch , dijon fochAND service in ;

Ouais… Alors là, à mon avis y a tout simplement un problème de concaténation dans ton code.
Si tu veux bien montrer ce que t’as fait, ça pourrait aider.

Et il faut des parenthèses pour borner ton IN.
Et pas de AND dans un IN, que des virgules pour séparer.
Et le texte doit être entre guillemets.

Tu devrais donc avoir un truc dans la genre : … In (‘chalon nord’, ‘dijon foch’)

ok ben j’ai des truc du genre :

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

et puis ben la meme chose pour les “services” :jap:

Bon, ça ne va pas ça. Si $j est inférieur à 13, à chaque fois tu lui remets $_POST[‘site’ . $j] dans la tronche, alors que tu viens de le faire 2 lignes au dessus ! Normal que ça doublonne ! :stuck_out_tongue:

Donc, reprenons depuis le début, en adaptant le code que je t’ai déjà filé à ton cas particuliers, qui fait que tu ne vas pas chercher les sociétés dans des tables, mais que selon la/les société(s) choisies, tu n’attaques pas les mêmes tables d’annuaire, mais que les tables de site et de services sont les mêmes par contre :


$j = 0;
$from1 = "FROM";
$from2 = "";
$from3 = "";
$where = "WHERE";

$tab_societe_added1 = -1;
$tab_societe_added2 = -1;
$tab_societe_added3 = -1;
$tab_site_added = false;
$tab_service_added = false;

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

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

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

                    if (isset($_POST[$societe]))
                    {
                              if ($from1 == "FROM")
                              {
                                        $from1 .= " tab_societeX";
                                        $tab_societe_added1 = $i;
                              }
                              else if ($from2 == "")
                              {
                                        $from2 = "FROM tab_societeY";
                                        $tab_societe_added2 = $i;
                              }
                              else
                              {
                                        $from3 = "FROM tab_societeZ";
                                        $tab_societe_added3 = $i;
                              }
                    }
          }

          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] . "'";
                              }

                              if (!$tab_site_added)
                              {
                                        if ($tab_societe_added1 != -1)
                                        {
                                                  $from1 .= ", tab_site";
                                        }
                                        else
                                        {
                                                  $from1 .= " tab_site";
                                        }

                                        if ($tab_societe_added2 != -1)
                                        {
                                                  $from2 .= ", tab_site";
                                        }

                                        if ($tab_societe_added3 != -1)
                                        {
                                                  $from3 .= ", tab_site";
                                        }

                                        $tab_site_added = true;
                              }
                    }
          }

          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 (!$tab_service_added)
                              {
                                        if ($from1 != "FROM")
                                        {
                                                  $from1 .= ", tab_service";
                                        }
                                        else
                                        {
                                                  $from1 .= " tab_service";
                                        }

                                        if ($from2 != "")
                                        {
                                                  $from2 .= ", tab_service";
                                        }

                                        if ($from3 != "")
                                        {
                                                  $from3 .= ", tab_service";
                                        }

                                         $tab_service_added = true;
                              }
                    }
          }

          if ($tab_site_added)
          {
                    $where .= " nom_site In (" . $site_selectionnes . ")";
          }

          if ($tab_service_added)
          {
                    if ($where == "WHERE")
                    {
                              $where .= " nom_service In (" . $service_selectionnes . ")";
                    }
                    else
                    {
                              $where .= " And nom_service In (" . $service_selectionnes . ")";
                    }
          }

          $select = "Select col1, col2, col3, col4";

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

          switch ($tab_societe_added1)
          {
                    case 1 :
                              if ($tab_site_added)
                              {
                                        $requete .= " And tab_societeX.cleSite = tab_site.cle";
                              }

                              if ($tab_service_added)
                              {
                                        $requete .= " And tab_societeX.cleService = tab_service.cle";
                              }
                              break;
                    case 2 :
                              if ($tab_site_added)
                              {
                                        $requete .= " And tab_societeY.cleSite = tab_site.cle";
                              }

                              if ($tab_service_added)
                              {
                                        $requete .= " And tab_societeY.cleService = tab_service.cle";
                              }
                              break;
                    case 3 :
                              if ($tab_site_added)
                              {
                                        $requete .= " And tab_societeZ.cleSite = tab_site.cle";
                              }

                              if ($tab_service_added)
                              {
                                        $requete .= " And tab_societeZ.cleService = tab_service.cle";
                              }
                              break;
          }

          if ($tab_societe_added2 != -1)
          {
                    $requete .= " Union " . $select . " " . $from2 . " " . $where;

                    switch ($tab_societe_added2)
                    {
                              case 1 :
                                        if ($tab_site_added)
                                        {
                                                  $requete .= " And tab_societeX.cleSite = tab_site.cle";
                                        }

                                        if ($tab_service_added)
                                        {
                                                  $requete .= " And tab_societeX.cleService = tab_service.cle";
                                        }
                                        break;
                              case 2 :
                                        if ($tab_site_added)
                                        {
                                                  $requete .= " And tab_societeY.cleSite = tab_site.cle";
                                        }
          
                                        if ($tab_service_added)
                                        {
                                                  $requete .= " And tab_societeY.cleService = tab_service.cle";
                                        }
                                        break;
                              case 3 :
                                        if ($tab_site_added)
                                        {
                                                  $requete .= " And tab_societeZ.cleSite = tab_site.cle";
                                        }
          
                                        if ($tab_service_added)
                                        {
                                                  $requete .= " And tab_societeZ.cleService = tab_service.cle";
                                        }
                                        break;
                    }
          }

          if ($tab_societe_added3 != -1)
          {
                    $requete .= " Union " . $select . " " . $from3 . " " . $where;

                    switch ($tab_societe_added3)
                    {
                              case 1 :
                                        if ($tab_site_added)
                                        {
                                                  $requete .= " And tab_societeX.cleSite = tab_site.cle";
                                        }

                                        if ($tab_service_added)
                                        {
                                                  $requete .= " And tab_societeX.cleService = tab_service.cle";
                                        }
                                        break;
                              case 2 :
                                        if ($tab_site_added)
                                        {
                                                  $requete .= " And tab_societeY.cleSite = tab_site.cle";
                                        }
          
                                        if ($tab_service_added)
                                        {
                                                  $requete .= " And tab_societeY.cleService = tab_service.cle";
                                        }
                                        break;
                              case 3 :
                                        if ($tab_site_added)
                                        {
                                                  $requete .= " And tab_societeZ.cleSite = tab_site.cle";
                                        }
          
                                        if ($tab_service_added)
                                        {
                                                  $requete .= " And tab_societeZ.cleService = tab_service.cle";
                                        }
                                        break;
                    }
          }

          $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";
                              $resultat2="<a href=$resultat>$nom $prenom </a>";
                              echo $resultat2 . '<br><br>';
                    }
          }
}

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

Voilà voilà, je pense qu’avec ça, ça devrait tourner.
Ce code implique par contre que les table de site et de services ne sont pas liées entre elles, mais aux tables de sociétés.
Edité le 17/06/2008 à 12:41

mes tables ne sont pas comme ca…lol t’as oublié ?? j’ai 3 tables a partir des 3 societe…je n’ai pas de table de site et de services :frowning:

Non, pas oublié. Mais malgré tout, j’avais compris que tu avais des tables pour les sites et services. Arf…

Ben, c’est encore plus simple alors !
Et moi qui me prend la tête avec des tables supplémentaires !

Fais plutôt comme ça alors :



$j = 0;
$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 .= " nom_site In (" . $site_selectionnes . ")";
          }

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

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

          $select = "Select col1, col2, col3, col4";

          if ($useTab1)
          {
                    $from .= " tab_entrepriseX";
                    $useTab1 = false;
          }
          else if ($useTab2)
          {
                    $from .= " tab_entrepriseY";
                    $useTab2 = false;
          }
          else if ($useTab3)
          {
                    $from .= " tab_entrepriseZ";
                    $useTab3 = false;
          }

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

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

          if ($useTab3)
          {
                    $requete .= " Union " . $select . " FROM tab_entrepriseZ " . $where;
          }

          $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";
                              $resultat2 = "<a href=$resultat>$nom $prenom </a>";
                              echo $resultat2 . '<br><br>';
                    }
          }
}

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


Voilà voilà !
Edité le 17/06/2008 à 15:37

c’est plus simple plus simple :ane:
bon ben en tout cas le peu de tests que j’ai fais ca a l’air de marché bien…juste 2 ou 3 ptites conditions a rajouter…genre quand rien n’est coché…enfin rien d’insurmontable pour moi cette fois ci …en tous cas merci super aide …vraiment :love:

Y a pas de quoi ! :super: