Sortie de la base de données double
Résolu/Fermé
l3abyl3oy
Messages postés
5
Date d'inscription
jeudi 30 avril 2015
Statut
Membre
Dernière intervention
5 juin 2015
-
Modifié par l3abyl3oy le 30/04/2015 à 02:58
l3abyl3oy Messages postés 5 Date d'inscription jeudi 30 avril 2015 Statut Membre Dernière intervention 5 juin 2015 - 30 avril 2015 à 15:09
l3abyl3oy Messages postés 5 Date d'inscription jeudi 30 avril 2015 Statut Membre Dernière intervention 5 juin 2015 - 30 avril 2015 à 15:09
A voir également:
- Sortie de la base de données double
- Double ecran - Guide
- Whatsapp double sim - Guide
- Formules excel de base - Guide
- Supprimer une base de données phpmyadmin ✓ - Forum Logiciels
- Tnt base de données vide - Forum TNT / Satellite / Réception
3 réponses
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
30 avril 2015 à 09:18
30 avril 2015 à 09:18
Bonjour.
avec les LIKE
tu dois mettre les % dans ton array et non dans le prepare il me semble
avec les LIKE
tu dois mettre les % dans ton array et non dans le prepare il me semble
Utilisateur anonyme
Modifié par le père. le 30/04/2015 à 09:30
Modifié par le père. le 30/04/2015 à 09:30
Bonjour
Par défaut, PDOSattement::fetch te retourne un tableau indexé par les noms des champs ET numériquement, autrement dit tu as deux réponses pour chaque champ.
Il suffit de lui préciser que tu ne veux que l'indice numérique :
Tu n'aurais pas eu ce problème si tu t'étais passé de la boucle for($i=0 ..., parfaitement inutile puisque tu demandes un seul champ ('entreprise') dans ton SELECT
[edit]
En fait, ton second code dont tu dis pourtant qu'il marche en doublant les résultats, me semble complètement illogique.
Alors que ton premier me semble OK après prise en compte de la remarque de jordane.
Par défaut, PDOSattement::fetch te retourne un tableau indexé par les noms des champs ET numériquement, autrement dit tu as deux réponses pour chaque champ.
Il suffit de lui préciser que tu ne veux que l'indice numérique :
while($data = $req->fetch(PDO::FETCH_NUM))
Tu n'aurais pas eu ce problème si tu t'étais passé de la boucle for($i=0 ..., parfaitement inutile puisque tu demandes un seul champ ('entreprise') dans ton SELECT
[edit]
En fait, ton second code dont tu dis pourtant qu'il marche en doublant les résultats, me semble complètement illogique.
Alors que ton premier me semble OK après prise en compte de la remarque de jordane.
l3abyl3oy
Messages postés
5
Date d'inscription
jeudi 30 avril 2015
Statut
Membre
Dernière intervention
5 juin 2015
30 avril 2015 à 15:09
30 avril 2015 à 15:09
Un gros merci pour votre aide, je n'en ai pas reçu beaucoup sur le web. Je sais que ma deuxième initiative n'est pas logique, comme une personne qui essaie d'entrer une forme carrée dans dans un trou triangulaire, mais après toutes mes tentatives pour la première solution rien n'a fonctionné, j'ai modifié la deuxième et ça fonctionne.
Encore une fois merci!
<?php
try {$bdd=new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root','');}
catch(Exception $e){die('Erreur : '.$e->getMessage());}
$req = $bdd->query('SELECT entreprise FROM entreprises ');
$results = array();
while($data = $req->fetch(PDO::FETCH_NUM))
{
$dataLen = count($data);
sort($data);
for($i=0 ; $i<$dataLen && count($results)<10 ;$i++ )
{
if(stripos($data[$i], $_GET['s'])===0)
{
array_push($results,$data[$i]);
}
}
}
echo implode('|', $results);
?>
Encore une fois merci!
30 avril 2015 à 09:20