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 :

Fonction transformation tableau


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Fonction transformation tableau
    Bonjour je souhaite faire une fonction qui me permet de lire un tableau qui sert pour les recherche.

    Cette fonction transformerait mon tableau en une variable de type str.

    J'ai pensait a un boucle foreach qui pour chaque mots du tableau écrit un début de phrase suivit du mot puis de la fin de phrase.

    Et grace a un systeme d'addition collerait chacune des phrase en y métant des or si il y a encore un truc après sinon rien.

    Merci d'avance pour vos réponses

    Actuellement j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function sql_like($array){
    	$where = ' ';
    	foreach($array as $k => $v) {
    			$v = 'Ann.titre LIKE "%'.$v.'%" ';
    			if(!empty($array[$k++])){
    				$v = $v + 'or '; 
    			}
    		$where = $where + $v;
    	}
    	return $where;
    }
    D'ailleurs seul le résultat et des explications m’intéresse peut importe la technique utilisé.
    Dernière modification par Invité ; 29/02/2020 à 12h02.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je sais que tu n'aimes pas les tutos, mais.... à quoi bon vouloir ré-inventer la roue ?...


  3. #3
    Invité
    Invité(e)
    Par défaut Merci mais
    Merci pour cette réponse mais j'ai une erreur :

    j'ai 2 fonction en fonction du cas et je m'en sert comme ça:

    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
     
                                                    function sql_like($mots){
    							$sql_OR = [];
    							$idx = 0;
    							foreach( $mots as $mot )
    							{
    								$sql_OR[] = ' Ann.titre LIKE :recherche'.$idx.' ';
    								$sql_param[':recherche'.$idx] = '%'.$mot.'%'; // syntaxe avec LIKE
    								$idx++;
    							}
    							$sql_where[] = ' ('.implode(' OR ', $sql_OR).') ';
    							return ($sql_where);
    						}
     
    						function sql_like_desc($mots){
    							$sql_OR = [];
    							$idx = 0;
    							foreach( $mots as $mot )
    							{
    								$sql_OR[] = ' Ann.titre LIKE :recherche'.$idx.' OR Ann.description LIKE :recherche'.$idx.' ';
    								$sql_param[':recherche'.$idx] = '%'.$mot.'%'; // syntaxe avec LIKE
    								$idx++;
    							}
    							$sql_where[] = ' ('.implode(' OR ', $sql_OR).') ';
    							return ($sql_where);
    						}
    Mon code sql:

    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
     
                                                    $recherche = secu($_GET['recherche']);
    						$recherche = explode(' ', $recherche);
    						$recherche = court($recherche);
    						$titre_recherche = sql_like($recherche);
    						$desc_recherche = sql_like_desc($recherche);
     
                                                      $codesql = '
    							SELECT Ann.titre, Ann.description, Ann.id_user, Ann.date_a, 
    								Ann.categorie, Ann.id, User.pseudo, User.nom, User.prenom,
    								User.mail, User.numero, User.adresse 
    							FROM Annonce AS Ann
    							INNER JOIN Utilisateur AS User
    							ON Ann.id_user = User.id 
    							WHERE'.$titre_recherche;
     
                                                     $codesql = '
    							SELECT Ann.titre, Ann.description, Ann.id_user, Ann.date_a, 
    								Ann.categorie, Ann.id, User.pseudo, User.nom, User.prenom,
    								User.mail, User.numero, User.adresse 
    							FROM Annonce AS Ann
    							INNER JOIN Utilisateur AS User
    							ON Ann.id_user = User.id 
    							WHERE'.$desc_recherche;
    ces deux code en sql s’exécute a des endroits différent dans des boucle différente et mon erreur est :

    Notice: Array to string conversion in C:\wamp\www\PHP\acceuil.php on line 92
    Call Stack
    # Time Memory Function Location
    1 0.0074 392848 {main}( ) ...\acceuil.php:0

    ( ! ) Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de 'WHEREArray' à la ligne 7 in C:\wamp\www\PHP\acceuil.php on line 95
    ( ! ) PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de 'WHEREArray' à la ligne 7 in C:\wamp\www\PHP\acceuil.php on line 95
    la ligne 92 est la ligne du premier code sql et la 95 de sont exécution
    je suis bien au courant que l'erreur viens du fait que la valeur renvoyé est un tableau et non une str mais je comprend pas pourquoi

    merci d'avance de vos réponses
    Dernière modification par Invité ; 29/02/2020 à 17h02.

  4. #4
    Invité
    Invité(e)
    Par défaut C'est bon
    C'est bon j'ai résolut le probleme.

    J'ai enlever le param le $idx les crochet sur le résulta final etc

Discussions similaires

  1. Transformer tableau + dupliquer les lignes en fonction des dates
    Par jbachet dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/07/2016, 14h08
  2. Réponses: 1
    Dernier message: 26/03/2008, 18h21
  3. PB fonction et Tableau
    Par T-B dans le forum Langage
    Réponses: 5
    Dernier message: 23/10/2005, 15h03
  4. [Fonction Transform]
    Par lucimast dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/08/2005, 08h45
  5. Référence en retour de fonction, à transformer en hash
    Par raoulchatigre dans le forum Langage
    Réponses: 4
    Dernier message: 15/07/2005, 14h24

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