Comparer 2 nombres l'un dans un fichier txt et l'autre dans BD

Fermé
nguim Messages postés 16 Date d'inscription mercredi 12 février 2014 Statut Membre Dernière intervention 25 février 2014 - Modifié par nguim le 14/02/2014 à 13:49
 Profil bloqué - 23 avril 2014 à 15:09
Bonjour à tous ! je suis débutant en PHP et j'ai un problème dans ce langage qui est le
suivant:
dans mon projet donc je suis en train de coder en PHP, j'ai un fichier texte comportant des
nombres de 8 chiffres.

exemple:

33830015
33830016
33830017
33830018
33830019
33830020
33830021
33830022
33830023
33830024
33830025
33830026
33830027

1- )

je dois prendre chacun de ces nombres et comparer ses 7 derniers chiffres avec les 7
derniers chiffres de chacun des nombres de la première colonne (IMSI) de la table de ma
Base de données MySQL ci-dessous:

(IMSI)--------------------------------------------------------------------------------------------------MDN
624030743830000 A100001D7DEE6D 80E5FA73 37312379 0E47EA7A6F444640 33830000
624030743830001 A100001D7DEE6E 80AE089F 91944192 F9052B04E3969977 33830001
624030743830002 A100001D7DEE6F 809A1A9F 29861661 4617481A74D864B5 33830002
624030743830003 A100001D7DEE70 80E68950 20303707 1C45F0418B552C45 33830003
624030743830004 A100001D7DEE71 80C275C6 70591541 EA26D0523114FFF2 33830004
624030743830005 A100001D7DEE72 80932253 44181182 1384BC94E9D33B9C 33830005
624030743830006 A100001D7DEE73 8035029C 38663053 1225153351556433 33830006

2- )

S'il y'a 1 ( il est unique s'il existe), il le récupère(IMSI) et récupère aussi le nombre qui se
trouve sur la même ligne (MDN) à la dernière colonne et affiche les trois:

- Nombre de départ
- IMSI trouvé semblable( nombre de la colonne IMSI donc les 7 derniers chiffres sont
semblables aux 7 derniers chiffres du nombre contenu dans le fichier texte)

- MDN (nombre de la colonne MDN) de la même ligne que l'IMSI trouvé semblable au
nombre de départ.

3-)

Maintenant il compare le nombre de départ avec le MDN (le nombre de la colonne MDN)
récupéré ci-dessus.

s'ils sont égaux, il affiche 1 seul sinon il n'affiche pas.

Je vous en prie aidez moi, je ne connais vraiment pas.
A voir également:

2 réponses

Profil bloqué
14 févr. 2014 à 15:32
essai aussi de chercher un peu par toi même...je te promet que c'est formateur...ce ne sont pas des gros développement, juste les base de l'algo à mettre en pratique...

sinon je crois que tu peux mettre ce poste en résolu (et idéalement publié la solution que je t'ai apporté en message privé afin d'en aider d'autre qui pourrai avoir le même souci...)

Bon courage !
0
Profil bloqué
15 févr. 2014 à 17:08
Cherche un peu du coter d un formulaire permettant de soumettre des fichier..tu devra utiliser $_files...
0
merchou Messages postés 13 Date d'inscription samedi 15 février 2014 Statut Membre Dernière intervention 17 mars 2014
15 févr. 2014 à 17:24
Voici mon code, malheureusement il ne fonctionne pas et je ne sais pas ce qui se passe. SVP aidez moi je suis nouveau en php et même en programmation.

<form action="maPage.php" method="post" name="nominput" enctype="multipart/form-data">  
    Sélectionnez le fichier :
    <input type="hidden" name="MAX_FILE_SIZE" value="300000">
    <input type="file" name="nom_csv" /><br />
    <input type="submit" value="Importer" />

<?php

$file = $_FILES['nominput']['tmp_name'];//fichier_csv = nom du input type file.
$contenu = fopen ($file, "r") or die("Can not open $file");
if (!$fp = fopen($file,"r")) {
    echo "Echec de l'ouverture du fichier";
}
else {
       echo $file;

    }

?>

</form>





Voici ce qu'il affiche:


( ! ) Notice: Undefined index: fichier_csv in C:\wamp\www\etudephp\lireetecrire.php on line 12
Call Stack
#	Time	Memory	Function	Location
1	0.0006	252336	{main}( )	..\lireetecrire.php:0

( ! ) Warning: fopen(): Filename cannot be empty in C:\wamp\www\etudephp\lireetecrire.php on line 13
Call Stack
#	Time	Memory	Function	Location
1	0.0006	252336	{main}( )	..\lireetecrire.php:0
2	0.0009	253360	fopen ( )	..\lireetecrire.php:13
Can not open
0
merchou Messages postés 13 Date d'inscription samedi 15 février 2014 Statut Membre Dernière intervention 17 mars 2014
15 févr. 2014 à 18:09
Je vous en prie aidez moi. Je suis bloqué et mon projet n'avance plus !

Merci d'avance.
0
Profil bloqué
23 avril 2014 à 15:09
en même temps c'est normal...tu ne précise pas le bon nom.
ta ligne :
$file = $_FILES['nominput']['tmp_name'];//fichier_csv = nom du input type file.


doit etre écrit comme ça :

$file = $_FILES['nom_csv']['tmp_name'];//fichier_csv = nom du input type file.
0
nguim Messages postés 16 Date d'inscription mercredi 12 février 2014 Statut Membre Dernière intervention 25 février 2014
15 févr. 2014 à 10:45
Voici la solution qu'un membre m'a donné et qui fonctionne parfaitement:

Solution 1 et 2


<?php
set_time_limit(0);
mysql_connect('localhost','root','');
mysql_select_db('gestnum');

//On ouvre le fichier en question (en lecture seule)
$handle = fopen("fichiernum.txt", "r");
$i=0;

echo '<h3 style="font-style: italic; font-size: 22px; text-shadow:Arial black 2.1px 2.1px 0px; color: green;">Tous les Resultats</h3>';

//on parcours tout le fichier (en faisant croire qu'il s'agit d'un csv pour faciliter le traitement)
while ($data = fgetcsv($handle, 1000, ",")) {

//on ne récupère que les 7 derniers caractères de chaque ligne avec la fonction substr
	$rest = substr($data[0],-7);

//On établie une requéte qui ne remonte que les MDN finissant par les 7 derniers chiffre de notre $rest. Un seul résultat remonte donc...
$sql = mysql_query('SELECT * FROM  'coordab' WHERE  'MDN' LIKE  "%'.$rest.'"');
$result =mysql_fetch_array($sql);
 $i++;
//on affiche les résultats demandé
echo "<b>Ligne numéro: ".$i.'</b><br><br>';
echo '<b><span style="font-style: italic; font-size: 18px; text-shadow:Arial black 2.1px 2.1px 0px; color: blue;">MDN Testé:       </b>'.'<b>'.$data[0].'</b>'.'<br/>';
echo '<b><span style="font-style: italic; font-size: 18px; text-shadow: Arial black 2.1px 2.1px 0px; color: blue;">IMSI Semblable:  </b>'.' '.'<b>'.$result['IMSI'].'</b>'.'<br/>';
echo '<b><span style="font-style: italic; font-size: 18px; text-shadow: Arial black 2.1px 2.1px 0px; color: blue;">MDN attaché à cet IMSI:   </b>'.'<b>'.$result['MDN'].'</b>'.'<br/>';
echo '<br/>';

//Pour la suite je te laisse faire, il n'y a rien de compliquer...petit indice, tu vas surement devoir utilisé la fonction array_compare() ou un peu plus classique, juste faire une égalité
//du genre "si ça == ça alors..." je te laisse travaillé le dernier exercice..
//Mais je suis convaincu que tu vas y arrivé...j'ai volontairement commenté le code pour que tu comprenne comment ça fonctionne...
}
//On ferme le fichier
fclose($handle);
?>



Solution 3

<?php
set_time_limit(0);
mysql_connect('localhost','root','');
mysql_select_db('gestnum');

//On ouvre le fichier en question (en lecture seule)
$handle = fopen("fichiernum.txt", "r");
$i=0;
$j=0;
//on parcours tout le fichier (en faisant croire qu'il s'agit d'un csv pour faciliter le traitement)
echo '<h3 style="font-style: italic; font-size: 22px; text-shadow:Arial black 2.1px 2.1px 0px; color: green;">Liste de Numéros Recyclables</h3>';

while ($data = fgetcsv($handle, 1000, ",")) {

//on ne récupère que les 7 derniers caractères de chaque ligne avec la fonction substr
	$rest = substr($data[0],-7);

//On établie une requéte qui ne remonte que les MDN finissant par les 7 derniers chiffre de notre $rest. Un seul résultat remonte donc...
$sql = mysql_query('SELECT * FROM  'coordab' WHERE  'MDN' LIKE  "%'.$rest.'"');
$result =mysql_fetch_array($sql);
 $i++;
//on affiche les résultats demandé
/*
echo "<b>Ligne numéro: ".$i.'</b><br><br>';
echo '<b><span style="font-style: italic; font-size: 18px; text-shadow:Arial black 2.1px 2.1px 0px; color: blue;">MDN Testé:       </b>'.'<b>'.$data[0].'</b>'.'<br/>';
echo '<b><span style="font-style: italic; font-size: 18px; text-shadow: Arial black 2.1px 2.1px 0px; color: blue;">IMSI Semblable:  </b>'.' '.'<b>'.$result['IMSI'].'</b>'.'<br/>';
echo '<b><span style="font-style: italic; font-size: 18px; text-shadow: Arial black 2.1px 2.1px 0px; color: blue;">MDN attaché à cet IMSI:   </b>'.'<b>'.$result['MDN'].'</b>'.'<br/>';
echo '<br/>';
*/

//Pour la suite je te laisse faire, il n'y a rien de compliquer...petit indice, tu vas surement devoir utilisé la fonction array_compare() ou un peu plus classique, juste faire une égalité
//du genre "si ça == ça alors..." je te laisse travaillé le dernier exercice..
//Mais je suis convaincu que tu vas y arrivé...j'ai volontairement commenté le code pour que tu comprenne comment ça fonctionne...

if ($data[0]==$result['MDN'])
{
    $j++;

    echo'<b>N°'. $j.'.</b><br>'; 
	echo'<b><span style="font-style: italic; font-size: 18px; text-shadow:Arial black 2.1px 2.1px 0px; color: blue;">'. $data[0].' '.'=> MDN de la Ligne N°:'.$i.'<br><br></span></b>';
	
}



}
//On ferme le fichier
fclose($handle);
?>



Maintenant je cherche comment faire pour que le fichier fichiernum.txt ne soit plus statique c'est à dire que

l'application soit en mesure de permettre à l'utilisateur de parcourir son poste de travail pour sélectionner

un fichier à traiter ayant un nom quelconque. Puisque actuellement le fichier fichiernum.txt se trouve dans

un même répertoire que mon code et les autres pages de l'application (dans le dossier www de wamp).


SVP aidez moi.
0