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 :

$query .= avec PDO


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Femme Profil pro
    autodidacte
    Inscrit en
    Juin 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Juin 2014
    Messages : 45
    Par défaut $query .= avec PDO
    Bonsoir,

    Une toute petite question sur une requête préparée entrecoupée de conditions, d'ailleurs comment appelle-t'on ce cas de figure ?

    Comment dealer avec la parenthèse de fin de $query=$bdd->prepare("SELECT * FROM xy"); ? sachant que ma requête se poursuit if (...)
    J'ai essayé de mettre un chop sur la première parenthèse, et de refermer celle-ci à la fin de mes conditions mais PDO n'a pas l'air d'apprécier ma grammaire

    Merci d'avance


    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
     
     $query =$xyz ->prepare( "SELECT * FROM marinterim_job_offers  WHERE");
     $query.= chop($query,")");  // technique ratée, dommage ... 
     
      if (!empty($_REQUEST['job_searched']))
         { $job_searched =$_REQUEST['job_searched'];
    	$query.= " j.job_intitule=:job_intitule AND";
         }
     
     if (!empty($_REQUEST['job_keyword']))
        { $job_keyword =$_REQUEST['job_keyword'];
          $query.= " j.job_descriptif LIKE CONCAT('%', :term, '%') AND" ;
        }
    // etc autres vérifications
     
     
     $query.= substr_replace($query, "", -3, 3);
     
     $query.= "JOIN marimmo_villes v on job_ville j ORDER BY j.job_date_insertion DESC"; 
     $query.=")";	 // snif...

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    C'est la chaine qu'il faut manipuler, pas la fonction :
    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
    $query =  "SELECT * FROM marinterim_job_offers JOIN marimmo_villes v on job_ville j ";
     where = array();
      if (!empty($_REQUEST['job_searched']))
         { 
    	$where[] = " j.job_intitule=:job_intitule";
            $param[':job_intitule'] = $_REQUEST['job_searched'];
         }
     
     if (!empty($_REQUEST['job_keyword']))
        {
          $where[] =  " j.job_descriptif LIKE CONCAT('%', :term, '%')" ;
          $param[':term'] = $_REQUEST['job_keyword'];
        }
     
    if (isset($where)) { 
         $query.= ' WHERE ' . implode(' AND ', $where);
    }
     
     $query.= " ORDER BY j.job_date_insertion DESC"; 
     
    $sth =$xyz ->prepare($query);
    $sth->execute($param);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Femme Profil pro
    autodidacte
    Inscrit en
    Juin 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Juin 2014
    Messages : 45
    Par défaut
    Merci pour le retour rapide

    Ok pour le JOIN avant le WHERE -> corrigé (ça faisait des mois que j'avais pas touché à PHP).

    Ma logique fut de supprimer la parenthèse fermante de $query avec un chop, pour pouvoir ensuite rajouter mes WHERE, et de refermer cette parenthèse à la fin de mes conditions (normal Non ?) Non.. ok... bon??
    Donc j'ai commenté // $query.=chop($query,")"); et //$query.=")";, mais je reste avec Object of class PDOStatement could not be converted to string on line 13 // qui équivaudrait (j'en sais rien en fait) à
    $query.= " j.job_intitule=:job_intitule AND";

    Qu'en penses-tu ? Merci

  4. #4
    Membre averti
    Femme Profil pro
    autodidacte
    Inscrit en
    Juin 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Juin 2014
    Messages : 45
    Par défaut
    Hum ok, j'avais pas vu tout ça... Ok!, je ne connaissais pas cette méthode ! Merci beaucoup ! j'ai bien fait de poser la question cool - Thank u!

    Je repasse plus tard pour confirmer que sujet résolu

  5. #5
    Membre averti
    Femme Profil pro
    autodidacte
    Inscrit en
    Juin 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Juin 2014
    Messages : 45
    Par défaut
    Good morning!

    J'aurais encore quelques petites questions :

    - donc pas de typage des $params[] ? (du style PDO::PARAM_INT)
    - Après avoir corrigé la plupart de mes erreurs décelées, Il me reste une erreur Near : LIMIT 0,10 , et si avec mysql j'étais super à l'aise, là je ne sais pas ce que je dois faire... et n'arrive pas à trouver sur internet...

    Merci pour le guidage


    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
     
    $query =  "SELECT * FROM marinterim_job_offers j JOIN marimmo_villes v ON j.job_ville = v.ville_id ";
     $where = array();
     
      if (!empty($_REQUEST['job_searched']))
         { 	$where[] = "j.job_intitule=:job_intitule ";
            $param[':job_intitule'] = $_REQUEST['job_searched'];
         }
     
     if (!empty($_REQUEST['job_keyword']))
        { $where[] =  " j.job_descriptif LIKE CONCAT('%', :job_descriptif, '%') " ;
          $param[':job_descriptif'] = $_REQUEST['job_keyword'];
        }
     
     if (isset($_REQUEST['secteur_searched']) AND is_array($_REQUEST['secteur_searched']))
        {// $secteur = array_map(array($marInterim,"quotes"),$_REQUEST['secteur_searched']);
    	  $secteur_searched=implode(',',$_REQUEST['secteur_searched']);
    	  $where[] = "j.job_secteur IN (:secteur_searched) " ;
    	  $param[':job_secteur']= $secteur_searched;
    	}
     if(!empty($_REQUEST['type_de_contrat']) AND count($_REQUEST['type_de_contrat']) > 0 )
       {$type_de_contrat = count($_REQUEST["type_de_contrat"]) ? implode(",",$_REQUEST["type_de_contrat"]) : '';
        $where[]=  "j.job_contrat IN (:job_contrat) " ; 
    	$param[':job_contrat']= $type_de_contrat;
       }   
    if (isset($where)) 
       { 
    	 $query.= ' WHERE ' . implode(' AND ', $where); // WHERE crite1 AND critere2 AND critere 3, 
       }
     
     $query.= " ORDER BY j.job_date_insertion DESC"; 
     
     var_dump('$query1='. $query);
    $sth =$marInterim ->prepare($query);
    $sth->execute($param);
     
     
    $compte = $sth->fetchAll();
    $nb_resultats = count($compte); 
    $errors['nb_resultats_recherche'] = $nb_resultats; // ok
     
    /********************/
       if ( !empty($_REQUEST['afficher_x_resultats']))
    	  { $per_page=trim($_REQUEST['afficher_x_resultats']);
    	    $param[':per_page']= (int)$per_page;
    	  }
     else {$per_page=10;  
           $param[':per_page']= (int)$per_page;
    	   }
     
     
    /* Results per page */
    $nb_pages = ceil($nb_resultats/$per_page);  
    $current_page = isset($_REQUEST['page']) && ($_REQUEST['page'] > 0) && ($_REQUEST['page'] <= $nb_pages) ? $_REQUEST['page'] : 1;
    $start = ($current_page-1)*$per_page;  $param[':start']= (int)$start;
     
    $query2= $query." LIMIT :start,:per_page ";var_dump('$query2='. $query2);
     
     
    $sth2 =$marInterim ->prepare($query2);
    $sth2-> execute($param); 
     
     while($datos= $sth->fetch(PDO::FETCH_ASSOC))
          { $en_date_insertion=$datos['job_date_insertion'];	  
    		 $explode_insertion= explode("-", $en_date_insertion);
    		 $date_insertion_fr = $explode_insertion[2]."-".$explode_insertion[1]."-".$explode_insertion[0];
     
    		 $job_id= $datos['job_id'];
    		 $job_intitule= strtoupper($datos['job_intitule']);
    		 $job_ville = $datos['ville_nom'];
    		 $job_cp = $datos['cp'];
     
    		$errors['resultats_recherche'] = "
    										   <div class='offers btns'>
    										   <a class='link_vers_offre' href='job_offer_detail.php?job_id=$job_id'>
    										   <table id='table_liste_des_offres'>
    										   <tr>
    										   <td class='liste_intitule'> " .$job_intitule." </td>
    										   <td class='liste_ref'>Offre n°" .$job_id."   du   ".$date_insertion_fr ." </td>
    										   <td class='liste_ville'> ".$job_cp. " ".$job_ville." </td>
    										   </tr>
    										   </table>
    										   </a>
    										   </div>
    							             ";
     
    	  }

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 419
    Par défaut
    Citation Envoyé par SunSeeker Voir le message
    Good morning!

    J'aurais encore quelques petites questions :

    - donc pas de typage des $params[] ? (du style PDO::PARAM_INT)
    - Après avoir corrigé la plupart de mes erreurs décelées, Il me reste une erreur Near : LIMIT 0,10 , et si avec mysql j'étais super à l'aise, là je ne sais pas ce que je dois faire... et n'arrive pas à trouver sur internet...
    Oui l'erreur sur la clause limit est bien connue. Tes tentatives de caster tes variables en int ne servent à rien. En fait quand on passe un tableau en paramètre à execute toutes les variables sont traitées comme des chaines de caractères (string). Donc il faudrait binder individuellement ces variables ce qui exclus l'usage du tableau pourtant bien pratique.
    Heureusement on peut désactiver l'émulateur php de pdo qui est à l'origine de ce comportement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $marInterim->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    De cette manière c'est l'émulateur du système de base de donnée qui sera utilisé et il va se renseigner sur le type attendu pour faire le bon choix.

    Tu peux d'ailleurs passer cette configuration dans les options de ta connexion car il est toujours conseillé d'utiliser l'émulateur du sgbd (de cette façon l'émulateur php ne se remettra en marche que si besoin)

  7. #7
    Membre averti
    Femme Profil pro
    autodidacte
    Inscrit en
    Juin 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Juin 2014
    Messages : 45
    Par défaut
    Ok, merci pour cette information.
    Sinon tu ne vois aucune erreur dans mon code ?
    ou aurais-tu un lien sur PDO un peu poussé, parce que je ne trouve toujours que les infos de base, comme d'hab, c'est compliqué d'avancer qu'on ne trouve pas l'info/les cours/tutos/exemples dont on a besoin. Thank u

  8. #8
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 419
    Par défaut
    Salut,

    Pour pdo on en parle aussi ici.

    Les tutos plus poussés sont assez rares car le sujet est vaste. Mais bon normalement les bases sont normalement assez vites acquises et ensuite on cherche suivant ses besoins. Dans ton cas c'est plutôt l'écriture de la requête qui demande réflexion. Alors ça fonctionne ?

    Sinon pour mieux gérer les erreurs ont déclare souvent le mode exception et donc on fait les requêtes dans des blocs try/catch. C'est une bonne habitude à prendre.

  9. #9
    Membre averti
    Femme Profil pro
    autodidacte
    Inscrit en
    Juin 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Juin 2014
    Messages : 45
    Par défaut
    ABCIWEB, merci pour l'info sur $marInterim->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); et les explications qui vont avec.

    Je reposte mon code, au cas où, car impossible d'afficher les entrées correspondantes lorsque je sélectionne plusieurs options qjue ce soit avec mon multiselect ou mes checkbox..
    Lorsque je renseigne le champ job_intitule ou alors le champ job_keyword, mes requêtes se passent bien : je récupère dans mon div les emplois correspondants à ma recherche.

    Je ne sais pas comment procéder


    MERCI

    var_dump($secteur_searched) retourne (1,2,10,50,56000), bref toutes les options values sélectionnées
    idem sur var_dump($type_de_contrat) qui retourne (CDI,CDD,etc)





    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
     
    try{
    $query =  "SELECT * FROM marinterim_job_offers j 
              JOIN marimmo_villes v ON v.ville_id =j.job_ville  "; 
     $where = array();
     $param = array();
     
      if (!empty($_REQUEST['job_searched']))
         { 	$where[] = "j.job_intitule=:job_intitule ";
            $param[':job_intitule'] = $_REQUEST['job_searched'];
         }
     
     if (!empty($_REQUEST['job_keyword']))
        { $where[] =  " j.job_descriptif LIKE CONCAT('%', :job_descriptif, '%') " ;
          $param[':job_descriptif'] = $_REQUEST['job_keyword'];
        }
     
     $secteur_searched="";
     if (!empty($_REQUEST['secteur_searched']) AND is_array($_REQUEST['secteur_searched']))
        { foreach ($_REQUEST["secteur_searched"] as $selectedOption)
          $secteur_searched.=$selectedOption.",";  
    	}
     if ($secteur_searched)
         { $secteur_searched = rtrim($secteur_searched, ',');
    	  $where[] = "j.job_secteur IN (:job_secteur) " ;
    	  $param[':job_secteur']= $secteur_searched; // var_dump($secteur_searched);
    	 }
     
     $type_de_contrat="";   	 
     if(!empty($_REQUEST['type_de_contrat']) AND count($_REQUEST['type_de_contrat']) > 0 )
       {foreach ($_REQUEST["type_de_contrat"] as $selectedCheckbox)
         $type_de_contrat.=$selectedCheckbox.",";  
    	}
     if ($type_de_contrat)
         { $type_de_contrat = rtrim($type_de_contrat, ',');
        $where[]=  "j.job_contrat IN (:job_contrat) " ;
    	$param[':job_contrat']= $type_de_contrat; var_dump($type_de_contrat);
       }     
     
    if (!empty($where)) 
       { 
    	 $query.= ' WHERE ' . implode(' AND ', $where); // WHERE crite1 AND critere2 AND critere 3, 
       }
     
     $query.= " ORDER BY j.job_date_insertion DESC";  echo $query;
     
    $sth =$marInterim ->prepare($query); 
    $sth->execute($param);
    //print_r($sth->errorInfo());
     
    $compte = $sth->fetchAll();
    $nb_resultats = count($compte); 
    $errors['nb_resultats_recherche'] = $nb_resultats; // ok 
     
    /********************/
       if ( !empty($_REQUEST['afficher_x_resultats']))
    	  { $per_page=$_REQUEST['afficher_x_resultats']; 
    	  }
     else {$per_page=10; }
     
     
    /* Results per page */
    $nb_pages = ceil($nb_resultats/$per_page);  
    $current_page = isset($_REQUEST['page']) && ($_REQUEST['page'] > 0) && ($_REQUEST['page'] <= $nb_pages) ? $_REQUEST['page'] : 1;
    $start = ($current_page-1)*$per_page; //  $param[':start']= $start;
     
    $query2= $query." LIMIT $start,$per_page ";
     echo '<br /> $query2 =  '.$query2;
     
    $sth2 =$marInterim ->prepare($query2);  
    $sth2-> execute($param); 
    //print_r($sth2->errorInfo());
     
     
     while($datos= $sth2->fetch(PDO::FETCH_ASSOC))
          { $en_date_insertion=$datos['job_date_insertion'];	  
    		 $explode_insertion= explode("-", $en_date_insertion);
    		 $date_insertion_fr = $explode_insertion[2]."-".$explode_insertion[1]."-".$explode_insertion[0];		 
    		 $job_id= $datos['job_id'];
    		 $job_intitule= strtoupper($datos['job_intitule']);
    		 $job_ville = $datos['ville_nom'];
    		 $job_cp = $datos['cp'];
     
    		echo "
    										   <div class='offers btns'>
    										   <a class='link_vers_offre' href='job_offer_detail.php?job_id=$job_id'>
    										   <table id='table_liste_des_offres'>
    										   <tr>
    										   <td class='liste_intitule'> " .$job_intitule." </td>
    										   <td class='liste_ref'>Offre n°" .$job_id."   du   ".$date_insertion_fr ." </td>
    										   <td class='liste_ville'> ".$job_cp. " ".$job_ville." </td>
    										   </tr>
    										   </table>
    										   </a>
    										   </div>
    							             ";
     
    	  }
     
    } catch(Exception $e)
    			  {	exit('<b>Catched exception at line '. $e->getLine() .' :</b> '. $e->getMessage());
    			  }	
    }

  10. #10
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 419
    Par défaut
    Donc si j'ai bien compris, ta requête fonctionne correctement et retourne les valeurs attendues mais tu ne sais pas faire afficher les résultats ?

    Fait un var_dump sur la ligne de résultat pour voir la structure. Peut-être devras-tu faire un traitement php complémentaire pour construire un tableau final différent.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while($datos= $sth2->fetch(PDO::FETCH_ASSOC))
    {
        var_dump($datos);
    //...

  11. #11
    Membre averti
    Femme Profil pro
    autodidacte
    Inscrit en
    Juin 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Juin 2014
    Messages : 45
    Par défaut
    J'ai écris ça ? T'as compris ça ? Really ?

    Je reformule :

    Lorsque je lance ma recherche d'offres grâce à :
    <input type='text' name='job_keyword'> qui a pour fonction d'aller chercher un mot-clé dans les job_descriptifs
    ou grâce à
    <input type='text' name='job_intitule'> qui recherche les offres d'après un intitulé de poste
    Les résultats sont retournés correctement.

    *******************************************************************************************************************************
    Mais je lance ma recherche par :
    secteur (select multiple )
    ou par
    type de contrat (checkboxes)

    aucun résultat n'est retourné dans ma while loop (et si j'écris echo 'hello'; dans ma while, dans l'un des 2 cas mentionnés ci-dessus, c'est à dire APRES la ligne d'astérisques, hello ne s'affiche pas non plus.

    Je peux encore tenter de reformuler si besoin

    MERCI

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    C'est bien expliqué dans la doc :
    vous ne pouvez associer plusieurs valeurs à un seul marqueur de nom entrant, dans la clause IN() d'une requête SQL.
    Il faut ajouter les paramètres un par un.
    Etant donné les multiples cas il est plus facile d'utiliser le paramètre anonyme "?"

    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
    $query =  "SELECT * FROM marinterim_job_offers JOIN marimmo_villes v on job_ville j ";
     where = array();
      if (!empty($_REQUEST['job_searched']))
         { 
    	$where[] = " j.job_intitule= ? ";
            $param[] = $_REQUEST['job_searched'];
         }
     
     if (!empty($_REQUEST['job_keyword']))
        {
          $where[] =  " j.job_descriptif LIKE CONCAT(?)" ;
          $param[':term'] = '%' . $_REQUEST['job_keyword'] . '%';
        }
     
     if (!empty($_REQUEST["secteur_searched"]) && is_array($_REQUEST["secteur_searched"]))
        {
          $param_secteur = implode(',', array_fill(0, count($_REQUEST["secteur_searched"]), '?');
          $where[] =  " j.job_secteur IN (" . $param_secteur . ")" ;
          array_merge($param, array_values($_REQUEST["secteur_searched"]));
          }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre averti
    Femme Profil pro
    autodidacte
    Inscrit en
    Juin 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Juin 2014
    Messages : 45
    Par défaut
    Je te remercie pour ta réponse.

    J'avais essayé la moitié de cette manip, sans array_merge. J'avais testé :
    $param_secteur = implode(',', array_fill(0, count($_REQUEST["secteur_searched"]), '?');
    $where[] = " j.job_secteur IN (" . $param_secteur . ")" ;
    mais erreur que je suis bien incapable à l'heure actuelle de résoudre seule...

    Et je viens d'essayer ta technique, mais : SQLSTATE[HY093]: Invalid parameter number: no parameters were bound.
    Je ne suis pas assez compétence pour le moment pour savoir comment réagir....

    Thank u

  14. #14
    Membre averti
    Femme Profil pro
    autodidacte
    Inscrit en
    Juin 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Juin 2014
    Messages : 45
    Par défaut
    Pourquoi faire compliqué quand on peut faire simple ... Bueno por fin !!!!!!!
    Merci pour votre aide. A +

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
     if(!empty($_REQUEST['type_de_contrat']) AND count($_REQUEST['type_de_contrat']) > 0 ) {
        $where[] = "j.job_contrat IN (:job_contrat)";
        $param[":job_contrat"] = "'".implode("','", $_REQUEST['type_de_contrat'])."'";
    }

  15. #15
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Comme expliqué dans la doc, ce n'est pas possible de faire comme ça.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  16. #16
    Membre averti
    Femme Profil pro
    autodidacte
    Inscrit en
    Juin 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : Juin 2014
    Messages : 45
    Par défaut
    Hein?? Ah ouais p......n t'as raison, j'ai eu une hallucination, oh naaaaaan !!!!!!!! Oh non j'ai rêvé que ça marchait !!!!!!!!
    Donc..? La technique que tu m'as donné, me retourne une erreur: SQLSTATE[HY000]: General error: 2031 (avec setAttribute(PDO::ATTR_EMULATE_PREPARES, false); réactivé - je l'avais désactivé juste avant pour test)..
    Je ... suis à bout !
    Comment faire stp ?

Discussions similaires

  1. [PDO] requête sql avec PDO impossible
    Par HALOMOTO dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/03/2009, 00h17
  2. Query avec un CREATE TEMPORARY TABLE = erreur ?
    Par d3mone dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/05/2007, 19h11
  3. [Visual Web] Query avec deux paramètres
    Par eponette dans le forum NetBeans
    Réponses: 1
    Dernier message: 19/03/2007, 13h44
  4. [PDO] Pb instanciation $statement avec PDO sous PHP
    Par tigunn dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 22/02/2007, 20h45
  5. optimisation query avec BETWEEN
    Par maxtin dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 13/01/2007, 01h22

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