Page 1 sur 2

Recherche dans une table à partir d'une liste copiée collée

Posté : 10 déc. 2010, 12:31
par niko94100
Bonjour à tous,

Merci tout d'abord à ceux m'ayant aidé dans mon autre sujet. Ce fut dur mais j'ai compris pas mal de chose et j'avance toujours à petits pas !

Le contexte:

Je dois chercher une liste de nom prénom dans une table.
TOTO Bidule
TATA Machin
TITI Truc
....
etc

Cette liste est récupérée sur un fichier excel quelconque, un mail ou toutes autres sources et incorporée avec un copié collé.

Est il possible d'avoir un formulaire ou je puisse copier coller totalement cette liste et ensuite de me renvoyer les résultats de ma requête ?

(La partie requête etc pas de soucis j'ai contourné mon ignorance en important un fichier texte dans une table spécifique mais j'aimerais simplifier l'opération)

Merciii de votre aide

Re: Recherche dans une table à partir d'une liste copiée collée

Posté : 10 déc. 2010, 12:51
par epommate2
Tu dois chercher si "TOTO Bidule" apparait dans la base de données, c'est bien ca ?

Re: Recherche dans une table à partir d'une liste copiée collée

Posté : 10 déc. 2010, 13:19
par niko94100
Bah en gros avec mon resultat est un export CSV et me donne les résultats suivants:

Ma table "information"
comprend comme champ (avec 50 000 personnes environ)
Nom
Prenom
Date de Naissance

TOTO Bidule 11/01/1983
TATA Machin 03/12/1990
TITI Truc 4/11/1974
etc ...

et donc je veux faire une recherche dedans avec ma liste copiée collée simplement dans un formulaire sur une page html.

au lieu d'importer un fichier externe etc etc ...

La requete et l'export des résultats pas de soucis

C'est juste le formulaire et le copié collé en fait ...

Re: Recherche dans une table à partir d'une liste copiée collée

Posté : 10 déc. 2010, 13:29
par epommate2
Hum, je comprend pas trop....

En copiant/collant la liste dans un textarea ?
<textarea name='data'>
</textarea>

Re: Recherche dans une table à partir d'une liste copiée collée

Posté : 10 déc. 2010, 13:47
par xTG
Le gros soucis de l'export par copier/coller c'est que tu n'auras aucun délimiteur...
Comment savoir différencier les différentes données, telle est la question. :)
Car à ce que l'on peut voir le nom peut comporter des espaces, donc ce n'est pas un délimiteur viable.

Re: Recherche dans une table à partir d'une liste copiée collée

Posté : 10 déc. 2010, 15:16
par niko94100
epommate> Le soucis c'est est ce que la requete va interpréter chaque ligne du text area ???

xTG> Dans mon copié collé il n'y aura que le nom et le prénom donc à la limite dans ma requête peut être faire recherche sur l'ensemble "nom prenom" qui ira chercher dans ma table l'ensemble "nom" et "prenom" ?

Re: Recherche dans une table à partir d'une liste copiée collée

Posté : 10 déc. 2010, 15:59
par epommate2
> Dans mon copié collé il n'y aura que le nom et le prénom donc à la limite dans ma requête peut être faire recherche sur l'ensemble "nom prenom" qui ira chercher dans ma table l'ensemble "nom" et "prenom" ?

C'est possible mais c'est sale ....
SELECT * FROM table WHERE concat(nom," ",prenom) = $data
Je suis désolé, mais je n'ai toujours pas compris ce que tu cherches à faire ...

Re: Recherche dans une table à partir d'une liste copiée collée

Posté : 10 déc. 2010, 17:27
par niko94100
En fait

j'ai ma table principale qui reprend nom prenom date de naissance avec plein de nom

J'aimerais coller dans mon textaera une liste

nom prenom

et que le résultats me donne

nom prenom date de naissance


LIGNE 1 du textarea: Nom prenom 1
LIGNE 2 du textaera: Nom prenom 2

et qu'ensuite je puisse faire la correspondance entre ma table et mon textarea pour trouver les date de naissance des individus collés dans le textarea

Re: Recherche dans une table à partir d'une liste copiée collée

Posté : 10 déc. 2010, 18:56
par epommate2
Ok, dans ce cas, lorsque tu récupère le contenu de ton textarea, essaye ceci :
$tab = explode("\n",$data);

foreach($tab as $nomPrenom){
//Faire la requête SQL précédente sur nomPrenom
}


Re: Recherche dans une table à partir d'une liste copiée collée

Posté : 10 déc. 2010, 22:05
par niko94100
Ahhhh mais que je suis bête (je débute) un explode ....

Merciiiiii ça oriente carrément ma recherche !!!!!
Bon allez au boulot ;)

Re: Recherche dans une table à partir d'une liste copiée collée

Posté : 11 déc. 2010, 00:12
par niko94100
Bon petit soucis ..... il ne me renvoit que la dernière ligne ... étrange ....

<HTML>
<form name='liste' method='post' action=''>
<textarea name='liste' cols='60' rows='20'></textarea>
<input type='submit' name='Submit' value='Envoyer'>
</form>
</HTML>


<?php

include 'connectbase.php';
conectbase();

$data=trim($_POST['liste']); 

$tab = explode("\n",$data);

foreach($tab as $nomPrenom)
{
$reponse=mysql_query("SELECT * FROM licences JOIN clubs ON licences.club = clubs.club WHERE CONCAT (Nom,' ',Prenom)='$nomPrenom'")or die (mysql_error ());
}


while($data=mysql_fetch_array($reponse))
{
echo ''.$data['Nom'].' '.$data['Prenom'].' '.$data['Naissance'].' '.$data['usuelclub'].'<br/></br>';
}
echo '<a href="exportliste.php">Exporter resultats</a>'
?>

Re: Recherche dans une table à partir d'une liste copiée collée

Posté : 11 déc. 2010, 01:17
par moogli
a vue de nez je dirais que c'est normal vu qu'il ne peut y avoir qu'un seule tuple avec cette requete (il n'y a qu'une licence qui a le couple nom/ prenom).

il te faut boucler sur les lignes insérées dans la textarea !

@+

Re: Recherche dans une table à partir d'une liste copiée collée

Posté : 11 déc. 2010, 02:10
par niko94100
J'avais pensé a une boucle for
En gros j'utulise un count pour compter le nombre de ligne
et utiliser une boucle for
Ou alors pourquoi pas insérer les résultats dans une table
je vais essayer ça rapidos

Re: Recherche dans une table à partir d'une liste copiée collée

Posté : 11 déc. 2010, 02:12
par moogli
heu nan tu met ça : echo ''.$data['Nom'].' '.$data['Prenom'].' '.$data['Naissance'].' '.$data['usuelclub'].'<br/></br>'; dans le foreach (avec le $data= mysql_fecth_assoc aussi hein ;) )

@+

Re: Recherche dans une table à partir d'une liste copiée collée

Posté : 11 déc. 2010, 02:52
par niko94100
J'ai essayé en changeant les accolades mais rien
voilà un nouveau code
<?php

include 'connectbase.php';
conectbase();

$data2=$_POST['liste']; 

$tab = explode("\n ",$data2);


$nblignes=count($tab);
for ($i=0;$i<=$nblignes;$i++)

{
$reponse=mysql_query("INSERT INTO liste SELECT Nom, Prenom FROM licences JOIN clubs ON licences.club = clubs.club WHERE CONCAT (Nom,' ',Prenom)='$tab[$i]'")or die (mysql_error ());
echo $tab[$i].'</br>';

}



echo '<a href="exportliste.php">Exporter resultats</a>'
?>
le echo a la fin c'était pour vérifier mes valeurs retournée et en fait j'ai remarqué qu'il y a un espace de trop pour toutes les entrées du texte area en fin de ligne SAUF pour la dernière ligne ....

j'ai bien essayé la fonction trim mais bon ... rien donné ...