[PHP] comparer ligne fichier et bdd

Matii_75 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -  
Tiller Messages postés 781 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je dois comparer les lignes d'un fichier et les enregistrements d'une base de données.

Je voudrais lire les lignes d'un fichier (dat), dont les données sont séparés par des tabulations, et ensuite comparer ces ces lignes à chaque enregistrements mais je ne vois pas comment définir que la première chaîne de caractères de mon fichier est égale à tel champ dans la table ?

Merci
A voir également:

5 réponses

Tiller Messages postés 781 Date d'inscription   Statut Membre Dernière intervention   211
 
Tu récupères ta ligne, puis tu fais un $cols = explode("\t", $ligne);
Comme sa $cols[0] sera ton premier champs de la bdd, $cols[1] le deuxieme etc...
Non?
$fp = fopen('file.dat', 'r');
$i = 0;
while (!feof($fp))
{
	$ligne = fgets($fp);
	$file[$i] = explode("\t", $ligne);
	$i++;
}

$sql = 'SELECT * FROM `table`';
$req = mysql_query($sql);
$i = 0;
while($data = mysql_fetch_array($req))
{
	if ($data['champ1'] != $file[$i][0] || $data['champ2'] != $file[$i][1] [..])
		echo 'Pas identique';
	$i++;
}


Je dois avouer que j'ai pas très bien compris aussi ce que tu veux faire ;o
0
Matii_75 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   1
 
J'ai 7 champs dans ma table, et dans mon fichier seulement 4 ...
0
Tiller Messages postés 781 Date d'inscription   Statut Membre Dernière intervention   211
 
Comment veux tu comparés des choses qui ne sont pas identiques des le depart?
Je comprend pas vraiment, explique mieu, donne un exemple
0
Matii_75 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   1
 
Dans ma table j'ai 7 champs, je voudrais comparer 4 de ces champs au 4 données présentes sur chaque ligne du fichier

Table : c1 c2 c3 c4 c5 c6 c7
Fichier c8 c9 c10 c11

si c1 = c8, c2 = c9, c3 = c10, c4 = c11 alors enregistrement dans la table, sinon passer à la ligne suivante...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tiller Messages postés 781 Date d'inscription   Statut Membre Dernière intervention   211
 
Tu peux faire quelque chose comme sa:
<?php

$fp = fopen('file.dat', 'r');
$total = 0;
while (!feof($fp))
{
	$ligne = fgets($fp);
	$file = explode("\t", $ligne);
	$cols[$file[0]][$file[1]][$file[2]][$file[3]] = true; //A modifier, le "0" "1" "2" et "3" -> 0=La premier colonne, 3=La quatrième, etc..
	$total++;
}

$sql = 'SELECT * FROM `table`';
$req = mysql_query($sql);
$identiques = 0;
$manquant2 = 0;
$total2 = 0;
while($data = mysql_fetch_array($req))
{
	if (isset($cols[$data['c1']][$data['c2']][$data['c3']][$data['c4']])) //Modifier le nom des champs
		$identiques++;
	else
		$manquant2++;
	
	$total2++;
}
$manquant1 = $total - $identique;

//$total 		-> Nombre total dans le fichier
//$total2 		-> Nombre total dans la base
//$identiques	-> Nombre présent dans les deux
//$manquant1	-> Nombre présent dans le fichier et pas dans la base
//$manquant2	-> Nombre présent dans la base et pas dans le fichier
?>
0