Problème de champ Blob

tempora
Invité n'ayant pas de compte PHPfrance

18 juil. 2007, 16:38

Bonjour à tous,

J'en appelle au plus doué d'entre vous, pour m'aider à sortir du mauvais pas.
En effet, je dois modifier une partie d'un site PHP suite à un changement de base de données.
Interbase > mysql.
Lors du changement, nous avions des fichiers externes à la base de données. Et nous avons réintégré
le contenu du fichier (il est en hexa à 1ere vu) dans un champs blob. Le problème c'est que je ne sais pas comment
lire le champs blob. Si je passe par une requête classique, les données ne semble pas cohérente.

Vous noterez que l'utilisation de la fonction ord qui comme je le pense permet de convertir l'hexa en caractère.

Voici l'ancien code.
Quelqu'un aurait il la gentillesse de me dire ce que je dois remplacer pour que ça fonctionne avec un blob ?
J'ai lu quelque part qu'il existait des fonctions de stream. Est ce utile ici ? Comment les utiliser ?

Merci à tous !

function ChercheActiviteHEXA($pchemin,$pInfoSurLinux,$pNumClient,$pNoUser,$pleJour,$pleMois,$plAnnee,$pBorneInf,$pBorneSup){
        
    $fp = fopen($pchemin,"r");    
    $TabHor= Array();
    $JourCherche= ((($pleMois-1)*31)+$pleJour);     
    $nb=1;
    while (!feof($fp)) 
     {
      	$donnees=fgets($fp,289);     	
     	 if (($nb>=$JourCherche) && ($nb<=($JourCherche+8)))
	{
       	 	for ($i=0;$i<24;$i++)
		{
			for ($j=0;$j<12;$j++)
			{  // 12 tranches de 5 min par heure
           	 			$value = ord( $donnees[$j+($i*12)-1] );
				 $indHeure=($i*60)+($j*5);
          	 			 if ($value=='') $value=11;
	  			 if ((($value>0)) &&(($indHeure>=$pBorneInf)&&($indHeure<=$pBorneSup)))  
   				 $TabHor[$nb-$JourCherche][$indHeure]=$value;  // Donne l'info en minute par journée
	 		 }
		}  
    
      	}
   	   if($nb>=($JourCherche+10)) 
    	 {
     	    fclose($fp);
       	  return $TabHor;	 
     	 }
      	$nb++;
    }  
    fclose($fp);
    return $TabHor;

ViPHP
ViPHP | 4674 Messages

19 juil. 2007, 10:10

Je n'en connais pas suffisament dans le domaine pour te répondre correctement, mais comme une lecture du manuel résoud 95% des problèmes, voici 2 liens : Fonction Firebird/InterBase de PHP, et ibase_blobl_get : lit len octets de données dans un BLOB iBase ouvert.

En espérant que ça te sera utile :)
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Tempora
Invité n'ayant pas de compte PHPfrance

19 juil. 2007, 14:57

merci, mais les fonctions concernent l'acces à Interbase.
La migration s'est faite vers du Mysql.
Exise t'il les meme fonctions de gestion des blob pour mysql ?

ViPHP
ViPHP | 4674 Messages

19 juil. 2007, 15:28

Désolé, je ne m'y connais pas assez en base de données pour pouvoir te répondre. Mais les autres devraient te répondre normalement. Soit un petit peu patient :)

Sinon, continue à chercher sur le manuel, et regarde du côté de PDO (toujours sur le manuel).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).