enregistrer objet blob

salut à tous! bon j'ai une BD Oracle et j'essaye d'enregistrer une image comme objet blob mais ça marche pas.. voici mon code:

$magic= new magic($database);
$dnaissance=$dn1 . "/" . $dn2 . "/". $dn3;
$dentree=$de1 . "/" . $de2 . "/". $de3;
$dsortie=$ds1 . "/" . $ds2 . "/". $ds3;
if (strlen($dnaissance)!=8)
$dnaissance=null;
if (strlen($dentree)!=8)
$dentree=null;
if (strlen($dsortie)!=8)
$dsortie=null;


$person->add($element, $nom, $prenom, $sexe, $langue, $photo, $dnaissance, $dentree, $dsortie);

$photo = $_FILES['photo']['tmp_name'];
$photo_name = $_FILES['photo']['name'];

if ($photo!="")
{
$database = new database();
$filetype=strrchr($photo_name, ".");

$db_extention_id=$person->get_extention($element);
$cle_parent=$person->get_roleid($person->ididentite);

$data = fread(fopen($photo, "rb"), filesize($photo));

$database->add_blob("photo",$data);

$database->dbquery("INSERT INTO db_extensions_val(date_creation, user_creation, element_creation, status, db_element_id, id, db_extention_id, cle_parent, valeur_alpha, valeur_blob)
VALUES(SYSDATE, '" . INSERT_USER . "', $element, " . ACTIVE_ELEMENT . ", $element, " . $magic->getid("DB_EXTENSIONS_VAL") . ", $db_extention_id, $cle_parent, '$filetype', EMPTY_BLOB()) RETURNING valeur_blob INTO :photo");

$database->dbclose();
}

et dans la page fonctions.php j'ai les classes person et database
voici le message d'erreur :

Fatal error: Call to a member function add() on a non-object in /data/www/secure.idinfo.ch/shop/admin/ajoutertout.php on line 275

si qq a une idée aidez moi svp! merci bc!
 
alors j'ai fait:
$person=new person($id_ad_adresse,$database,$magic,$data, $nom,$prenom,$langue,$sexe,$dnaissance,$photo,$ididentite,$tcomcodes,$dentree,$dsortie);

et mnt j'ai le message:
Fatal error: Class 'generic_data' not found in /data/www/secure.idinfo.ch/shop/admin/fonctions.php on line 497

:? pk c si compliqué? lol :wink:
 
roblescriso a dit:
alors j'ai fait:
$person=new person($id_ad_adresse,$database,$magic,$data, $nom,$prenom,$langue,$sexe,$dnaissance,$photo,$ididentite,$tcomcodes,$dentree,$dsortie);

et mnt j'ai le message:
Fatal error: Class 'generic_data' not found in /data/www/secure.idinfo.ch/shop/admin/fonctions.php on line 497

:? pk c si compliqué? lol :wink:

là, suffit de traduire c'est que php n'a pas trouvé la classe generic_data ;)
 
:cry: mnt j'ai ce mesage là:
Fatal error: Call to a member function dbquery() on a non-object in /data/www/secure.idinfo.ch/shop/admin/fonctions.php on line 456

et dans la class il y a:
class magic{
var $database;
function magic($database)
{
$this->database=$database;
}
function getid($table_name)
{
$lastid = $this->database->dbquery("SELECT dernier_numero FROM db_sequence WHERE nom_table='$table_name'"); $lastid = $lastid[0][0];
$lastid++;
$this->database->dbquery("UPDATE db_sequence SET dernier_numero='$lastid' WHERE nom_table='$table_name'");
return($lastid); // Renvoi le dernier ID disponible pour la table
}
};

j'ai instancié toutes les classes alors pk il me donne ce message?
 
la classe qui contient dbquery est database et elle est dans la meme page que la class magic:
class database{

var $conn, // Connexion oracle
$numcolumns, // Nombre de colones du résultat de la dernière requête
$numrows, // Nombre d'élements fourni par la dernière requête
$blobsbind, // Tableau contenant les variables à lier
$stmt, // Variable d'emplacement
$debug; // Flag pour le déboguage (True affiche les messages d'erreur plus la requête SQL)
function add_blob($sql_varname, $data)
{
$max=sizeof($this->blobsbind);
$this->blobsbind[$max][0]=$sql_varname;
$this->blobsbind[$max][1]=$data;
}



function database($ora_user='IDINFO_xm1', $ora_password='IDINFO',$ora_connect_string='IDHEB')
{
$this->debug=false;
$this->dbconnect($ora_user, $ora_password, $ora_connect_string);
}
function dbconnect($ora_user, $ora_password, $ora_connect_string) // Fonction de connexion à une base de donnée Oracle
{
$this->conn=OCILogon($ora_user, $ora_password, $ora_connect_string);
}

function dbquery($query) // Exécution de la requête SQL
{
// Execute une requête SQL puis retourne un tableau avec le résultat (s'il y a lieu)

$i=0;

if(!($this->stmt=OCIParse($this->conn,$query))) // Vérification de la syntaxe (Si fausse, afficher l'erreur Oracle)
$this->show_errormsg($query);
if(sizeof($this->blobsbind)>0) // Si il y'a des liaison de variables à faire, créer les liaisons
do
{
$lobs[$i] = OCINewDescriptor($this->conn, OCI_D_LOB);
$mixedvar = &$lobs[$i];
OCIBindByName($this->stmt, ":" . $this->blobsbind[$i][0], $mixedvar, -1, OCI_B_BLOB);
$i++;
}
while(next($this->blobsbind));
if (!OCIExecute($this->stmt,OCI_DEFAULT))
$this->show_errormsg($query);
if (strtoupper(substr($query, 0, 6))=="SELECT")
{
// Récupération des données et de ces données dans une Array
$this->numcolumns = ocinumcols($this->stmt);
$this->numrows=0;
while(OCIFetchInto($this->stmt, $row, OCI_ASSOC))
{
for($column=1;$column<=$this->numcolumns;$column++)
if(ocicolumntyperaw($this->stmt, $column)==_BLOB_RAWTYPEID)
$result[$this->numrows][$column-1]=$row[ocicolumnname($this->stmt, $column)]->load();
else
$result[$this->numrows][$column-1]=$row[ocicolumnname($this->stmt, $column)];
$this->numrows++;
};
return($result);
}
else
{
// ECRITURE, MISE A JOUR, EFFACEMENT
$i=0;
if(sizeof($this->blobsbind)>0)
do
{
if(!$lobs[$i]->save($this->blobsbind[$i][1]))
$this->show_errormsg($query);
$i++;
}
while(next($this->blobsbind));
}
OCICommit($this->conn);
OCIFreeStatement($this->stmt);
}...
 
J'avais compris ...
Après si t'essaies pas ce qu'on te propose 8O

Bon je t'explique, ta deux classes distinctes là magic et database, si dans magic tu accède à un méthode de database, même si elle est déjà instanciée, ca marchera pas, sauf si tu fais un extend ...
 
Ca va permettre à la classe d'utiliser les méthodes de la classe "extendée" sans erreur, comme ce que tu as besoin dans ton cas ;)
Et je me suis gouré je crois que c'est extends
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut