enregistrer objet blob
13 messages
• Page 1 sur 1
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
- roblescriso
- Nouveau WRInaute

- Messages: 33
- Inscription: 20 Avr 2005
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!
$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!
- dansmaregion
- Nouveau WRInaute

- Messages: 2
- Inscription: 8 Juin 2005
J'ai l'impression que ton objet person n'a pas été instancié.
- roblescriso
- Nouveau WRInaute

- Messages: 33
- Inscription: 20 Avr 2005
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 
$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
- dansmaregion
- Nouveau WRInaute

- Messages: 2
- Inscription: 8 Juin 2005
roblescriso a écrit: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
là, suffit de traduire c'est que php n'a pas trouvé la classe generic_data
- roblescriso
- Nouveau WRInaute

- Messages: 33
- Inscription: 20 Avr 2005
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?
- roblescriso
- Nouveau WRInaute

- Messages: 33
- Inscription: 20 Avr 2005
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);
}...
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);
}...
-

mowmow - WRInaute impliqué

- Messages: 975
- Inscription: 3 Nov 2004
J'avais compris ...
Après si t'essaies pas ce qu'on te propose
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 ...
Après si t'essaies pas ce qu'on te propose
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 ...
- roblescriso
- Nouveau WRInaute

- Messages: 33
- Inscription: 20 Avr 2005
mais je l'ai deja utilisé comme ça et ça marche ailleurs.. 
- roblescriso
- Nouveau WRInaute

- Messages: 33
- Inscription: 20 Avr 2005
et tu pourrais me donner un exemple? car je ne sais pas comme on utilise ce "extend"
13 messages
• Page 1 sur 1
Formation recommandée sur ce thème :
Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Goggles, la recherche visuelle dans Androïd - 09-12-2009
- Orange Favoris, pour mémoriser et partager en ligne ses sites préférés - 23-04-2008
- Intégrer un flux RSS sur son site - 28-06-2004
- Google Health : votre dossier médical géré par Google... - 20-05-2008
- Offre d'emploi Référenceur CDI dans le Rhône - Juin 2010 - 08-06-2010
- Windows Live Toolbar Beta - 11-03-2006
- MyMaps : des cartes personnalisées avec Google Maps - 05-04-2007
- Google Desktop 2 en français - 13-10-2005
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
