Page 1 sur 1

ftp récupère fichier texte d'un ftp transfert ve mon serveur

Posté : 02 févr. 2007, 20:47
par maïa
bonjour à vous,
premier message,

j'ai à ma disposition un fichier texte .aff (je ne connaissais pas)
je veux récupérer le contenu et le copier sur un autre serveur

la connexion se passe bien le transfert plante à 80% voir plus

je vous joint les fonctions
la premières fonction insère les éléments dans une base de données
la seconde récupère et liste les lignes du fichier texte
function insere_biens($r)
{
	
	$origine	= array("²","é","è","à","'");
	$code		= array("²","é","è","à","\'");
	$d			= utf8_encode($r[9]);
	$d			= str_replace($origine,$code,$d);
	$idc 		= connect_bd();
	$req 		= "INSERT INTO cbi_biens ";
	$req		.= "(type_transaction,type_biens,reference,numero_mandat,cp,ville,prix_mandat_fr,prix_mandat_euro,secteur,";
	$req		.= "nombre_pieces,nombre_chambres,surface_habitable,surface_terrain,niveaux,etage,annee_construction,";
	$req		.= "jardin,digicode,balcon,terrasse,cave,ascenceur,garage,parking,";
	$req		.= "chauffage,nombre_bains,nombre_wc,orientation,date_modification,description,exclusivite,stationnement) ";
	$req		.= "VALUES ('$r[0]','$r[1]','$r[2]','$r[3]','$r[4]','$r[5]',$r[6],$r[7],'$r[8]',";
	$req		.= "'$r[10]','$r[11]','$r[12]','$r[13]','$r[14]','$r[15]','$r[16]',";
	$req		.= "'$r[17]','$r[18]','$r[20]','$r[21]','$r[22]','$r[23]','$r[24]','$r[25]',";
	$req		.= "'$r[26]','$r[27]','$r[28]','$r[29]','$r[30]','$d','$r[33]','$r[35]')";
	$w			= "<div class=\"texte_ok\">" . $r[0] . " - " . $r[1] . " - " . $r[2] . " - " . $r[3] . " - " . $r[4] . " - " . $r[5] . "</div>";
	$r 			= query($req);
	return $w;
}



function dowload_images()
{
	$r = connect_ftp();
	ftp_chdir($r, "Photos");
   	$liste = ftp_nlist($r,"");
   	$n = count($liste);
   	$liste_images = "";
   	
   	for($i=0; $i<$n; $i++)
   	{
   		$nom_local = substr($liste[$i],15);
   		$lien_local = "../images/DATA/".$nom_local;
   		$file_open = fopen($lien_local,"wb");
   		if(ftp_fget($r, $file_open, $liste[$i], FTP_BINARY)){ $liste_images .= "<div class=\"texte_ok\">- " . $liste[$i] . "</div>";}
   		else{ $liste_images .= "<div class=\"texte_no\">- " . $liste[$i] . " -</div>";}
   	}
   	return $liste_images;
}

par avance merci,
et désolé si j'enfreinds quelques règles
je m'efforcerai d'y remédier

Posté : 02 févr. 2007, 20:54
par Brice83
Je sait pas si je vais te raconter une bourde mais tu n'est pas obliger de préciser les insert !

Fait seulement ca :
INSERT INTO ta-table values ('$r[0]', '$r[1]',.............................
ces variables seront insérer dans l'ordre que tu décide par rapport a ce code donc inutile de précisé le nom des champ...!

Posté : 02 févr. 2007, 21:15
par maïa
tu as raison, mais je crois qu'il faut insérer une valeur dans tous les champs de la table, ce qui ne sera pas le cas.

je pense que cela vient du de ma connexion ftp,
est ce que le ftp est sur en php ou existe t il d'autre solution de tranfert, j'ai entendu parler de socket (?)( kindy)

merci de ta réponse

Posté : 02 févr. 2007, 21:18
par Brice83
Non, si tu n'a aucune valeur a insérer, tu peut faire comme ceci :
INSERT INTO ta-table values ('', '$r[1]',........ !
Enfin,cela n'a aucun rapport avec ta question initiale et je n'en ai pas la réponse :(

Posté : 02 févr. 2007, 21:21
par maïa
mais je ne savais pas merci :wink:

ftp_get

Posté : 03 févr. 2007, 00:10
par maïa
le pb semble venir du ftp_get

Re: ftp_get

Posté : 03 févr. 2007, 00:27
par Ajoloca
Bonsoir,
le pb semble venir du ftp_get
ftp_get() c'est ce que devrais utiliser, mais tu utilises ftp_fget().

Le premier (ftp_get()) copie le fichier directement de la machine distante dans la machine locale sans que tu ais besoin de gérer le "handle" du fichier local.
Le second (ftp_fget()) demande une manipulation (c'est toi qui dois gérer l'écriture locale).

ftp_get et ftp_fget

Posté : 04 févr. 2007, 00:28
par maïa
cela ne fonctionne pas non plus avec ftp_get que j'utilisai déjà dans la fonction suivante et qui réagit de la même manière ;

function ftp_biens()
{
   	$w = "";
   	$r = connect_ftp();
   	echo "get pas encore";
   	if(ftp_get($r,"liste_biens.aff","Perso/cbi78-p.aff",FTP_BINARY))
   	{
   		echo "get ok";
   		$liste_biens = file ("http://idc.lautre...fichier.aff");
		$biens = count($liste_biens);
   		supprime_biens();
   		
  		for($i=0; $i<$biens; $i++)
		{
			$bien = $liste_biens[$i];
			$detail_bien = explode(";", $bien);		
			$w .= insere_biens($detail_bien);
		}
   	}
   	else $w = "<div class=\"texte_ok\">&Eacute;chec. Veuillez essayer plus tard.</div>";
   	
	return $w;
	ftp_close($r);
}