Qual: Uniformisation de la maniere de recuperer le resultat de requete (suppression des methodes result au profit de la methode fetch_object)

This commit is contained in:
Laurent Destailleur 2006-06-24 19:47:36 +00:00
parent 04d6bd1e7a
commit 790469ee66
17 changed files with 464 additions and 485 deletions

View File

@ -84,15 +84,17 @@ if ($_GET["action"] == 'create')
// Si numero deja pris (ne devrait pas arriver) // Si numero deja pris (ne devrait pas arriver)
// on incremente par .num+1 // on incremente par .num+1
$sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."propal WHERE ref like '$numpr%'"; $sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."propal WHERE ref like '$numpr%'";
if ( $db->query($sql) ) $resql=$db->query($sql);
if ($resql)
{ {
$num = $db->result(0, 0); $obj=$db->fetch_object($resql);
$db->free(); $num = $obj->nb;
if ($num > 0) $db->free($resql);
{ if ($num > 0)
$numpr .= "." . ($num + 1); {
} $numpr .= "." . ($num + 1);
}
} }
print "<form name='addprop' action=\"propal.php?socidp=".$soc->id."\" method=\"post\">"; print "<form name='addprop' action=\"propal.php?socidp=".$soc->id."\" method=\"post\">";

View File

@ -42,21 +42,6 @@ if ($user->societe_id > 0)
function valeur($sql)
{
global $db;
if ( $db->query($sql) )
{
if ( $db->num_rows() )
{
$valeur = $db->result(0,0);
}
$db->free();
}
return $valeur;
}
/* /*
* Affichage zone prospect * Affichage zone prospect
*/ */

View File

@ -1819,6 +1819,81 @@ class Commande extends CommonObject
} }
} }
/**
* \brief Initialise la commande avec valeurs fictives aléatoire
* Sert à générer une commande pour l'aperu des modèles ou demo
*/
function initAsSpecimen()
{
global $user,$langs;
// Charge tableau des id de société socids
$socids = array();
$sql = "SELECT idp FROM ".MAIN_DB_PREFIX."societe WHERE client=1 LIMIT 10";
$resql = $this->db->query($sql);
if ($resql)
{
$num_socs = $this->db->num_rows($resql);
$i = 0;
while ($i < $num_socs)
{
$i++;
$row = $this->db->fetch_row($resql);
$socids[$i] = $row[0];
}
}
// Charge tableau des produits prodids
$prodids = array();
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."product WHERE envente=1";
$resql = $this->db->query($sql);
if ($resql)
{
$num_prods = $this->db->num_rows($resql);
$i = 0;
while ($i < $num_prods)
{
$i++;
$row = $this->db->fetch_row($resql);
$prodids[$i] = $row[0];
}
}
// Initialise paramètres
$this->id=0;
$this->ref = 'SPECIMEN';
$this->specimen=1;
$socid = rand(1, $num_socs);
$this->socidp = $socids[$socid];
$this->date = time();
$this->date_lim_reglement=$this->date+3600*24*30;
$this->cond_reglement_code = 'RECEP';
$this->mode_reglement_code = 'CHQ';
$this->note_public='SPECIMEN';
$nbp = rand(1, 9);
$xnbp = 0;
while ($xnbp < $nbp)
{
$ligne=new CommandeLigne($this->db);
$ligne->desc=$langs->trans("Description")." ".$xnbp;
$ligne->qty=1;
$ligne->subprice=100;
$ligne->price=100;
$ligne->tva_taux=19.6;
$prodid = rand(1, $num_prods);
$ligne->produit_id=$prodids[$prodid];
$this->lignes[$xnbp]=$ligne;
$xnbp++;
}
$this->amount_ht = $xnbp*100;
$this->total_ht = $xnbp*100;
$this->total_tva = $xnbp*19.6;
$this->total_ttc = $xnbp*119.6;
}
} }

View File

@ -524,20 +524,19 @@ class Account
*/ */
function solde() function solde()
{ {
$sql = "SELECT sum(amount) FROM ".MAIN_DB_PREFIX."bank"; $sql = "SELECT sum(amount) as amount FROM ".MAIN_DB_PREFIX."bank";
$sql.= " WHERE fk_account=$this->id AND dateo <=" . $this->db->idate(time() ); $sql.= " WHERE fk_account=".$this->id." AND dateo <= ".$this->db->idate(time());
$result = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql)
if ($result)
{ {
if ($this->db->num_rows()) if ($this->db->num_rows($resql))
{ {
$solde = $this->db->result(0,0); $obj=$this->db->fetch_object($resql);
$solde = $obj->amount;
return $solde;
} }
$this->db->free(); $this->db->free($resql);
return $solde;
} }
} }

View File

@ -26,23 +26,23 @@ require("./pre.inc.php");
if (!$user->rights->banque->lire) if (!$user->rights->banque->lire)
accessforbidden(); accessforbidden();
llxHeader();
function valeur($sql) function valeur($sql)
{ {
global $db; global $db;
if ( $db->query($sql) ) $resql=$db->query($sql);
{ if ($resql)
if ( $db->num_rows() )
{ {
$valeur = $db->result(0,0); $obj=$db->fetch_object($resql);
$valeur = $obj->amount;
$db->free($resql);
} }
$db->free(); return $valeur;
}
return $valeur;
} }
llxHeader();
print_titre("Bilan"); print_titre("Bilan");
print '<br>'; print '<br>';
@ -52,22 +52,22 @@ echo '<td colspan="2">R
print "</tr>\n"; print "</tr>\n";
$var=!$var; $var=!$var;
$sql = "SELECT sum(amount) FROM ".MAIN_DB_PREFIX."paiement"; $sql = "SELECT sum(amount) as amount FROM ".MAIN_DB_PREFIX."paiement";
$paiem = valeur($sql); $paiem = valeur($sql);
print "<tr $bc[$var]><td>Somme des paiements (associés à une facture)</td><td align=\"right\">".price($paiem)."</td></tr>"; print "<tr $bc[$var]><td>Somme des paiements (associés à une facture)</td><td align=\"right\">".price($paiem)."</td></tr>";
$var=!$var; $var=!$var;
$sql = "SELECT sum(amount) FROM ".MAIN_DB_PREFIX."bank WHERE amount > 0"; $sql = "SELECT sum(amount) as amount FROM ".MAIN_DB_PREFIX."bank WHERE amount > 0";
$credits = valeur($sql); $credits = valeur($sql);
print "<tr $bc[$var]><td>Somme des credits</td><td align=\"right\">".price($credits)."</td></tr>"; print "<tr $bc[$var]><td>Somme des credits</td><td align=\"right\">".price($credits)."</td></tr>";
$var=!$var; $var=!$var;
$sql = "SELECT sum(amount) FROM ".MAIN_DB_PREFIX."bank WHERE amount < 0"; $sql = "SELECT sum(amount) as amount FROM ".MAIN_DB_PREFIX."bank WHERE amount < 0";
$debits = valeur($sql); $debits = valeur($sql);
print "<tr $bc[$var]><td>Somme des debits</td><td align=\"right\">".price($debits)."</td></tr>"; print "<tr $bc[$var]><td>Somme des debits</td><td align=\"right\">".price($debits)."</td></tr>";
$var=!$var; $var=!$var;
$sql = "SELECT sum(amount) FROM ".MAIN_DB_PREFIX."bank "; $sql = "SELECT sum(amount) as amount FROM ".MAIN_DB_PREFIX."bank ";
$solde = valeur($sql); $solde = valeur($sql);
print "<tr $bc[$var]><td>".$langs->trans("BankBalance")."</td><td align=\"right\">".price($solde)."</td></tr>"; print "<tr $bc[$var]><td>".$langs->trans("BankBalance")."</td><td align=\"right\">".price($solde)."</td></tr>";

View File

@ -91,64 +91,66 @@ if ($_GET["bid"] == 0)
} }
else else
{ {
/* /*
* Rapport mouvements pour une catégorie donnée * Rapport mouvements pour une catégorie donnée
*/ */
$sql = "SELECT label FROM ".MAIN_DB_PREFIX."bank_categ WHERE rowid=".$_GET["bid"]; $sql = "SELECT label FROM ".MAIN_DB_PREFIX."bank_categ WHERE rowid=".$_GET["bid"];
if ( $db->query($sql) ) $resql=$db->query($sql);
{ if ($resql)
if ( $db->num_rows() )
{ {
$budget_name = $db->result(0,0); if ($db->num_rows($resql))
{
$obj=$db->fetch_object($resql);
$budget_name = $obj->label;
}
$db->free($resql);
} }
$db->free();
}
print_titre("Ecriture bancaire pour la catégorie: $budget_name"); print_titre("Ecriture bancaire pour la catégorie: $budget_name");
print '<br>'; print '<br>';
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';
print "<tr class=\"liste_titre\">"; print "<tr class=\"liste_titre\">";
print '<td align="center">'.$langs->trans("Date").'</td>'; print '<td align="center">'.$langs->trans("Date").'</td>';
print '<td align="left">'.$langs->trans("Bank").'</td>'; print '<td align="left">'.$langs->trans("Bank").'</td>';
print '<td width="60%">'.$langs->trans("Description").'</td><td align="right">'.$langs->trans("Amount").'</td><td>&nbsp;</td>'; print '<td width="60%">'.$langs->trans("Description").'</td><td align="right">'.$langs->trans("Amount").'</td><td>&nbsp;</td>';
print "</tr>\n"; print "</tr>\n";
$sql = "SELECT b.amount, b.label, ".$db->pdate("b.dateo")." as do, b.rowid, ba.label as labelcompte, ba.rowid as bankid"; $sql = "SELECT b.amount, b.label, ".$db->pdate("b.dateo")." as do, b.rowid, ba.label as labelcompte, ba.rowid as bankid";
$sql.= " FROM ".MAIN_DB_PREFIX."bank_class as l, ".MAIN_DB_PREFIX."bank as b, ".MAIN_DB_PREFIX."bank_account as ba"; $sql.= " FROM ".MAIN_DB_PREFIX."bank_class as l, ".MAIN_DB_PREFIX."bank as b, ".MAIN_DB_PREFIX."bank_account as ba";
$sql.= " WHERE b.rowid=l.lineid AND l.fk_categ=".$_GET["bid"]; $sql.= " WHERE b.rowid=l.lineid AND l.fk_categ=".$_GET["bid"];
$sql.= " AND b.fk_account = ba.rowid"; $sql.= " AND b.fk_account = ba.rowid";
$sql.= " ORDER BY b.dateo DESC"; $sql.= " ORDER BY b.dateo DESC";
$result = $db->query($sql); $result = $db->query($sql);
if ($result) if ($result)
{
$num = $db->num_rows($result);
$i = 0; $total = 0;
$var=True;
while ($i < $num)
{ {
$objp = $db->fetch_object($result); $num = $db->num_rows($result);
$var=!$var; $i = 0; $total = 0;
print "<tr $bc[$var]>";
print "<td align=\"center\">".dolibarr_print_date($objp->do)."</td>\n";
print "<td><a href=\"account.php?account=$objp->bankid\">$objp->labelcompte</a></td>"; $var=True;
print "<td><a href=\"ligne.php?rowid=$objp->rowid\">".img_object($langs->trans("ShowPayment"),"payment").' '.$objp->label.'</a></td>'; while ($i < $num)
print "<td align=\"right\">".price(0 - $objp->amount)."</td><td>&nbsp;</td>"; {
print "</tr>"; $objp = $db->fetch_object($result);
$i++; $var=!$var;
$total = $total + (0 - $objp->amount); print "<tr $bc[$var]>";
print "<td align=\"center\">".dolibarr_print_date($objp->do)."</td>\n";
print "<td><a href=\"account.php?account=$objp->bankid\">$objp->labelcompte</a></td>";
print "<td><a href=\"ligne.php?rowid=$objp->rowid\">".img_object($langs->trans("ShowPayment"),"payment").' '.$objp->label.'</a></td>';
print "<td align=\"right\">".price(0 - $objp->amount)."</td><td>&nbsp;</td>";
print "</tr>";
$i++;
$total = $total + (0 - $objp->amount);
}
$db->free();
print '<tr class="liste_total"><td colspan="3" align="right">'.$langs->trans("Total")."</td><td align=\"right\"><b>".price(abs($total))."</b></td><td>".$langs->trans("Currency".$conf->monnaie)."</td></tr>";
} }
$db->free(); else
print '<tr class="liste_total"><td colspan="3" align="right">'.$langs->trans("Total")."</td><td align=\"right\"><b>".price(abs($total))."</b></td><td>".$langs->trans("Currency".$conf->monnaie)."</td></tr>"; {
} dolibarr_print_error($db);
else }
{ print "</table>";
dolibarr_print_error($db);
}
print "</table>";
} }

View File

@ -181,18 +181,6 @@ else
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
print "</tr>\n"; print "</tr>\n";
// Recherche date valeur minimum pour ce relevé
/*
$datemin=0;
$sql = "SELECT MIN(datev) FROM ".MAIN_DB_PREFIX."bank";
$sql.= " WHERE num_releve = '".$num."' AND fk_account = ".$acct->id;
$resql=$db->query($sql);
if ($resql)
{
$datemin = $db->result(0, 0);
$db->free($resql);
}
*/
// Calcul du solde de départ du relevé // Calcul du solde de départ du relevé
$sql = "SELECT sum(amount) FROM ".MAIN_DB_PREFIX."bank"; $sql = "SELECT sum(amount) FROM ".MAIN_DB_PREFIX."bank";
$sql.= " WHERE num_releve < ".$num." AND fk_account = ".$acct->id; $sql.= " WHERE num_releve < ".$num." AND fk_account = ".$acct->id;

View File

@ -30,19 +30,6 @@ require("./pre.inc.php");
$langs->load("compta"); $langs->load("compta");
llxHeader();
function valeur($sql) {
global $db;
if ( $db->query($sql) ) {
if ( $db->num_rows() ) {
$valeur = $db->result(0,0);
}
$db->free();
}
return $valeur;
}
/* /*
* Action ajout en bookmark * Action ajout en bookmark
@ -60,6 +47,9 @@ if ($action == 'del_bookmark') {
} }
llxHeader();
print_titre("Charges"); print_titre("Charges");
print '<table width="100%">'; print '<table width="100%">';

View File

@ -181,10 +181,14 @@ if ($_GET["action"] == 'create')
print '<tr><td>'.$langs->trans("AmountTTC").":</td><td colspan=\"2\">".price($charge->amount).' '.$langs->trans("Currency".$conf->monnaie).'</td></tr>'; print '<tr><td>'.$langs->trans("AmountTTC").":</td><td colspan=\"2\">".price($charge->amount).' '.$langs->trans("Currency".$conf->monnaie).'</td></tr>';
$sql = "SELECT sum(p.amount) FROM ".MAIN_DB_PREFIX."paiementcharge as p WHERE p.fk_charge = $chid;"; $sql = "SELECT sum(p.amount) as total";
$result = $db->query($sql); $sql.= " FROM ".MAIN_DB_PREFIX."paiementcharge as p";
if ($result) { $sql.= " WHERE p.fk_charge = ".$chid;
$sumpayed = $db->result(0,0); $resql = $db->query($sql);
if ($resql)
{
$obj=$db->fetch_object($resql);
$sumpayed = $obj->total;
$db->free(); $db->free();
} }
print '<tr><td>'.$langs->trans("AlreadyPayed").'</td><td colspan="2"><b>'.price($sumpayed).'</b> '.$langs->trans("Currency".$conf->monnaie).'</td></tr>'; print '<tr><td>'.$langs->trans("AlreadyPayed").'</td><td colspan="2"><b>'.price($sumpayed).'</b> '.$langs->trans("Currency".$conf->monnaie).'</td></tr>';

View File

@ -141,13 +141,14 @@ if ($_GET["action"] == 'create')
// \todo Utiliser un module de numérotation // \todo Utiliser un module de numérotation
$numpr = "FI".strftime("%y%m%d", time()); $numpr = "FI".strftime("%y%m%d", time());
$sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."propal"; $sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."propal";
$sql.= " WHERE ref like '${numpr}%'"; $sql.= " WHERE ref like '${numpr}%'";
$resql=$db->query($sql); $resql=$db->query($sql);
if ($resql) if ($resql)
{ {
$num = $db->result(0, 0); $obj=$db->fetch_object($resql);
$num = $obj->nb;
$db->free($resql); $db->free($resql);
if ($num > 0) if ($num > 0)
{ {

View File

@ -76,6 +76,14 @@ class pdf_huitre extends ModelePDFFactures {
{ {
global $user,$langs,$conf,$mysoc; global $user,$langs,$conf,$mysoc;
if (! is_object($outputlangs)) $outputlangs=$langs;
$outputlangs->load("main");
$outputlangs->load("companies");
$outputlangs->load("bills");
$outputlangs->load("products");
$outputlangs->setPhpLang();
if ($conf->facture->dir_output) if ($conf->facture->dir_output)
{ {
// Définition de l'objet $fac (pour compatibilite ascendante) // Définition de l'objet $fac (pour compatibilite ascendante)
@ -104,6 +112,7 @@ class pdf_huitre extends ModelePDFFactures {
if (create_exdir($dir) < 0) if (create_exdir($dir) < 0)
{ {
$this->error=$langs->trans("ErrorCanNotCreateDir",$dir); $this->error=$langs->trans("ErrorCanNotCreateDir",$dir);
$langs->setPhpLang(); // On restaure langue session
return 0; return 0;
} }
} }
@ -216,7 +225,8 @@ class pdf_huitre extends ModelePDFFactures {
$pdf->SetFont('Arial','U',11); $pdf->SetFont('Arial','U',11);
$pdf->SetXY(10, 225); $pdf->SetXY(10, 225);
$titre = $langs->trans("PaymentConditions").' : '.$fac->cond_reglement_facture; $titre = $langs->trans("PaymentConditions").' : ';
$titre.=$lib_condition_paiement=$outputlangs->trans("PaymentCondition".$fac->cond_reglement_code)?$outputlangs->trans("PaymentCondition".$fac->cond_reglement_code):$fac->cond_reglement;
$pdf->MultiCell(190, 5, $titre, 0, 'J'); $pdf->MultiCell(190, 5, $titre, 0, 'J');
$pdf->SetFont('Arial','',6); $pdf->SetFont('Arial','',6);
@ -249,20 +259,24 @@ class pdf_huitre extends ModelePDFFactures {
$pdf->Output($file); $pdf->Output($file);
$langs->setPhpLang(); // On restaure langue session
return 1; // Pas d'erreur return 1; // Pas d'erreur
} }
else else
{ {
$this->error=$langs->trans("ErrorCanNotCreateDir",$dir); $this->error=$langs->trans("ErrorCanNotCreateDir",$dir);
$langs->setPhpLang(); // On restaure langue session
return 0; return 0;
} }
} }
else else
{ {
$this->error=$langs->trans("ErrorConstantNotDefined","FAC_OUTPUTDIR"); $this->error=$langs->trans("ErrorConstantNotDefined","FAC_OUTPUTDIR");
$langs->setPhpLang(); // On restaure langue session
return 0; return 0;
} }
$this->error=$langs->trans("ErrorUnknown"); $this->error=$langs->trans("ErrorUnknown");
$langs->setPhpLang(); // On restaure langue session
return 0; // Erreur par defaut return 0; // Erreur par defaut
} }

View File

@ -101,6 +101,14 @@ class pdf_oursin extends ModelePDFFactures
{ {
global $user,$langs,$conf,$mysoc; global $user,$langs,$conf,$mysoc;
if (! is_object($outputlangs)) $outputlangs=$langs;
$outputlangs->load("main");
$outputlangs->load("companies");
$outputlangs->load("bills");
$outputlangs->load("products");
$outputlangs->setPhpLang();
$langs->load("main"); $langs->load("main");
$langs->load("bills"); $langs->load("bills");
$langs->load("products"); $langs->load("products");
@ -133,6 +141,7 @@ class pdf_oursin extends ModelePDFFactures
if (create_exdir($dir) < 0) if (create_exdir($dir) < 0)
{ {
$this->error=$langs->trans("ErrorCanNotCreateDir",$dir); $this->error=$langs->trans("ErrorCanNotCreateDir",$dir);
$langs->setPhpLang(); // On restaure langue session
return 0; return 0;
} }
} }
@ -330,7 +339,8 @@ class pdf_oursin extends ModelePDFFactures
$pdf->MultiCell(80, 5, $titre, 0, 'L'); $pdf->MultiCell(80, 5, $titre, 0, 'L');
$pdf->SetFont('Arial','',10); $pdf->SetFont('Arial','',10);
$pdf->SetXY($this->marges['g']+44, 217); $pdf->SetXY($this->marges['g']+44, 217);
$pdf->MultiCell(80, 5, $fac->cond_reglement_facture,0,'L'); $lib_condition_paiement=$outputlangs->trans("PaymentCondition".$fac->cond_reglement_code)?$outputlangs->trans("PaymentCondition".$fac->cond_reglement_code):$fac->cond_reglement;
$pdf->MultiCell(80, 5, $lib_condition_paiement,0,'L');
} }
/* /*
@ -343,20 +353,24 @@ class pdf_oursin extends ModelePDFFactures
$pdf->Output($file); $pdf->Output($file);
$langs->setPhpLang(); // On restaure langue session
return 1; // Pas d'erreur return 1; // Pas d'erreur
} }
else else
{ {
$this->error=$langs->trans("ErrorCanNotCreateDir",$dir); $this->error=$langs->trans("ErrorCanNotCreateDir",$dir);
$langs->setPhpLang(); // On restaure langue session
return 0; return 0;
} }
} }
else else
{ {
$this->error=$langs->trans("ErrorConstantNotDefined","FAC_OUTPUTDIR"); $this->error=$langs->trans("ErrorConstantNotDefined","FAC_OUTPUTDIR");
$langs->setPhpLang(); // On restaure langue session
return 0; return 0;
} }
$this->error=$langs->trans("ErrorUnknown"); $this->error=$langs->trans("ErrorUnknown");
$langs->setPhpLang(); // On restaure langue session
return 0; // Erreur par defaut return 0; // Erreur par defaut
} }

View File

@ -61,30 +61,31 @@ class DoliDb
// Constantes pour conversion code erreur MySql en code erreur générique // Constantes pour conversion code erreur MySql en code erreur générique
var $errorcode_map = array( var $errorcode_map = array(
1004 => 'DB_ERROR_CANNOT_CREATE', 1004 => 'DB_ERROR_CANNOT_CREATE',
1005 => 'DB_ERROR_CANNOT_CREATE', 1005 => 'DB_ERROR_CANNOT_CREATE',
1006 => 'DB_ERROR_CANNOT_CREATE', 1006 => 'DB_ERROR_CANNOT_CREATE',
1007 => 'DB_ERROR_ALREADY_EXISTS', 1007 => 'DB_ERROR_ALREADY_EXISTS',
1008 => 'DB_ERROR_CANNOT_DROP', 1008 => 'DB_ERROR_CANNOT_DROP',
1025 => 'DB_ERROR_NO_FOREIGN_KEY_TO_DROP', 1025 => 'DB_ERROR_NO_FOREIGN_KEY_TO_DROP',
1046 => 'DB_ERROR_NODBSELECTED', 1046 => 'DB_ERROR_NODBSELECTED',
1048 => 'DB_ERROR_CONSTRAINT', 1048 => 'DB_ERROR_CONSTRAINT',
1050 => 'DB_ERROR_TABLE_ALREADY_EXISTS', 1050 => 'DB_ERROR_TABLE_ALREADY_EXISTS',
1051 => 'DB_ERROR_NOSUCHTABLE', 1051 => 'DB_ERROR_NOSUCHTABLE',
1054 => 'DB_ERROR_NOSUCHFIELD', 1054 => 'DB_ERROR_NOSUCHFIELD',
1060 => 'DB_ERROR_COLUMN_ALREADY_EXISTS', 1060 => 'DB_ERROR_COLUMN_ALREADY_EXISTS',
1061 => 'DB_ERROR_KEY_NAME_ALREADY_EXISTS', 1061 => 'DB_ERROR_KEY_NAME_ALREADY_EXISTS',
1062 => 'DB_ERROR_RECORD_ALREADY_EXISTS', 1062 => 'DB_ERROR_RECORD_ALREADY_EXISTS',
1064 => 'DB_ERROR_SYNTAX', 1064 => 'DB_ERROR_SYNTAX',
1075 => 'DB_ERROR_CANT_DROP_PRIMARY_KEY', 1075 => 'DB_ERROR_CANT_DROP_PRIMARY_KEY',
1091 => 'DB_ERROR_NOSUCHFIELD', 1091 => 'DB_ERROR_NOSUCHFIELD',
1100 => 'DB_ERROR_NOT_LOCKED', 1100 => 'DB_ERROR_NOT_LOCKED',
1136 => 'DB_ERROR_VALUE_COUNT_ON_ROW', 1136 => 'DB_ERROR_VALUE_COUNT_ON_ROW',
1146 => 'DB_ERROR_NOSUCHTABLE', 1146 => 'DB_ERROR_NOSUCHTABLE',
1216 => 'DB_ERROR_NO_PARENT', 1216 => 'DB_ERROR_NO_PARENT',
1217 => 'DB_ERROR_CHILD_EXISTS' 1217 => 'DB_ERROR_CHILD_EXISTS'
); );
/** /**
\brief Ouverture d'une connection vers le serveur et éventuellement une database. \brief Ouverture d'une connection vers le serveur et éventuellement une database.
\param type Type de base de données (mysql ou pgsql) \param type Type de base de données (mysql ou pgsql)
@ -168,6 +169,7 @@ class DoliDb
return $this->ok; return $this->ok;
} }
/** /**
\brief Selectionne une database. \brief Selectionne une database.
\param database Nom de la database \param database Nom de la database
@ -178,6 +180,7 @@ class DoliDb
return mysql_select_db($database, $this->db); return mysql_select_db($database, $this->db);
} }
/** /**
\brief Connection vers le serveur \brief Connection vers le serveur
\param host addresse de la base de données \param host addresse de la base de données
@ -216,28 +219,6 @@ class DoliDb
} }
/**
\brief Renvoie l'id de la connection
\return string Id connection
*/
function getConnectId()
{
$resql=$this->query('SELECT CONNECTION_ID()');
$row=$this->fetch_row($resql);
return $row[0];
}
/**
\brief Renvoie la commande sql qui donne les droits sur les tables
\return string Requete sql
*/
function getGrantForUserQuery($databaseuser)
{
return '';
}
/** /**
\brief Création d'une nouvelle base de donnée \brief Création d'une nouvelle base de donnée
\param database nom de la database à créer \param database nom de la database à créer
@ -261,38 +242,10 @@ class DoliDb
} }
/**
\brief Copie d'un handler de database.
\return resource
*/
function dbclone()
{
$db2 = new DoliDb("", "", "", "", "");
$db2->db = $this->db;
return $db2;
}
/**
\brief Ouverture d'une connection vers une database.
\param host Adresse de la base de données
\param login Nom de l'utilisateur autorisé
\param passwd Mot de passe
\param name Nom de la database (ne sert pas sous mysql, sert sous pgsql)
\return resource Handler d'accès à la base
*/
function pconnect($host, $login, $passwd, $name)
{
$this->db = mysql_pconnect($host, $login, $passwd);
return $this->db;
}
/** /**
\brief Fermeture d'une connection vers une database. \brief Fermeture d'une connection vers une database.
\return resource \return resource
*/ */
function close() function close()
{ {
return mysql_close($this->db); return mysql_close($this->db);
@ -303,7 +256,6 @@ class DoliDb
\brief Debut d'une transaction. \brief Debut d'une transaction.
\return int 1 si ouverture transaction ok ou deja ouverte, 0 en cas d'erreur \return int 1 si ouverture transaction ok ou deja ouverte, 0 en cas d'erreur
*/ */
function begin() function begin()
{ {
if (! $this->transaction_opened) if (! $this->transaction_opened)
@ -323,7 +275,6 @@ class DoliDb
\brief Validation d'une transaction \brief Validation d'une transaction
\return int 1 si validation ok ou niveau de transaction non ouverte, 0 en cas d'erreur \return int 1 si validation ok ou niveau de transaction non ouverte, 0 en cas d'erreur
*/ */
function commit() function commit()
{ {
if ($this->transaction_opened<=1) if ($this->transaction_opened<=1)
@ -343,7 +294,6 @@ class DoliDb
\brief Annulation d'une transaction et retour aux anciennes valeurs \brief Annulation d'une transaction et retour aux anciennes valeurs
\return int 1 si annulation ok ou transaction non ouverte, 0 en cas d'erreur \return int 1 si annulation ok ou transaction non ouverte, 0 en cas d'erreur
*/ */
function rollback() function rollback()
{ {
if ($this->transaction_opened<=1) if ($this->transaction_opened<=1)
@ -358,16 +308,78 @@ class DoliDb
return 1; return 1;
} }
} }
/**
\brief Effectue une requete et renvoi le resultset de réponse de la base
\param query Contenu de la query
\return resource Resultset de la reponse
*/
function query($query)
{
$query = trim($query);
if (! $this->database_name)
{
// Ordre SQL ne nécessitant pas de connexion à une base (exemple: CREATE DATABASE)
$ret = mysql_query($query, $this->db);
}
else
{
$ret = mysql_db_query($this->database_name, $query, $this->db);
}
if (! eregi("^COMMIT",$query) && ! eregi("^ROLLBACK",$query))
{
// Si requete utilisateur, on la sauvegarde ainsi que son resultset
if (! $ret)
{
$this->lastqueryerror = $query;
$this->lasterror = $this->error();
$this->lasterrno = $this->errno();
}
$this->lastquery=$query;
$this->results = $ret;
}
return $ret;
}
// Next function are not required. Only minor features use them.
/**
\brief Renvoie l'id de la connection
\return string Id connection
*/
function getConnectId()
{
$resql=$this->query('SELECT CONNECTION_ID()');
$row=$this->fetch_row($resql);
return $row[0];
}
/**
\brief Renvoie la commande sql qui donne les droits sur les tables
\return string Requete sql
*/
function getGrantForUserQuery($databaseuser)
{
return '';
}
/** /**
\brief Crée une table \brief Crée une table
\param table Nom de la table \param table Nom de la table
\param fields tableau associatif [nom champ][tableau des descriptions] \param fields tableau associatif [nom champ][tableau des descriptions]
\param primary_key Nom du champ qui sera la clef primaire \param primary_key Nom du champ qui sera la clef primaire
\param unique_keys tableau associatifs Nom de champs qui seront clef unique => valeur \param unique_keys tableau associatifs Nom de champs qui seront clef unique => valeur
\param fulltext tableau des Nom de champs qui seront indexés en fulltext \param fulltext tableau des Nom de champs qui seront indexés en fulltext
\param key tableau des champs clés noms => valeur \param key tableau des champs clés noms => valeur
\param type type de la table \param type type de la table
\return true/false selon si requête a provoqué un erreur mysql ou pas \return true/false selon si requête a provoqué un erreur mysql ou pas
*/ */
function create_table($table,$fields,$primary_key,$type,$unique_keys="",$fulltext_keys="",$keys="") function create_table($table,$fields,$primary_key,$type,$unique_keys="",$fulltext_keys="",$keys="")
{ {
@ -432,13 +444,14 @@ class DoliDb
else else
return true; return true;
} }
/** /**
\brief Insère un nouveau champ dans une table \brief Insère un nouveau champ dans une table
\param table Nom de la table \param table Nom de la table
\param field_name Nom du champ à insérer \param field_name Nom du champ à insérer
\param field_desc tableau associatif de description duchamp à insérer[nom du paramètre][valeur du paramètre] \param field_desc tableau associatif de description duchamp à insérer[nom du paramètre][valeur du paramètre]
\param field_position Optionnel ex.: "after champtruc" \param field_position Optionnel ex.: "after champtruc"
\return true/false selon si requête a provoqué un erreur mysql ou pas \return true/false selon si requête a provoqué un erreur mysql ou pas
*/ */
function add_field($table,$field_name,$field_desc,$field_position="") function add_field($table,$field_name,$field_desc,$field_position="")
{ {
@ -466,59 +479,13 @@ class DoliDb
else else
return true; return true;
} }
/**
\brief Effectue une requete et renvoi le resultset de réponse de la base
\param query Contenu de la query
\return resource Resultset de la reponse
*/
function query($query)
{
$query = trim($query);
if (! $this->database_name)
{
// Ordre SQL ne nécessitant pas de connexion à une base (exemple: CREATE DATABASE)
$ret = mysql_query($query, $this->db);
}
else
{
$ret = mysql_db_query($this->database_name, $query, $this->db);
}
if (! eregi("^COMMIT",$query) && ! eregi("^ROLLBACK",$query))
{
// Si requete utilisateur, on la sauvegarde ainsi que son resultset
if (! $ret)
{
$this->lastqueryerror = $query;
$this->lasterror = $this->error();
$this->lasterrno = $this->errno();
}
$this->lastquery=$query;
$this->results = $ret;
}
return $ret;
}
/**
\brief Renvoie les données de la requete.
\param nb Contenu de la query
\param fieldname Nom du champ
\return resource
*/
function result($nb, $fieldname)
{
return mysql_result($this->results, $nb, $fieldname);
}
/** /**
\brief Renvoie la ligne courante (comme un objet) pour le curseur resultset. \brief Renvoie la ligne courante (comme un objet) pour le curseur resultset.
\param resultset Curseur de la requete voulue \param resultset Curseur de la requete voulue
\return resource \return resource
*/ */
function fetch_object($resultset=0) function fetch_object($resultset=0)
{ {
// Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion // Si le resultset n'est pas fourni, on prend le dernier utilisé sur cette connexion

View File

@ -188,100 +188,16 @@ class DoliDb
return split('\.',$this->getVersion()); return split('\.',$this->getVersion());
} }
/**
\brief Renvoie l'id de la connection
\return string Id connection
*/
function getConnectId()
{
return '?';
}
/**
\brief Renvoie la commande sql qui donne les droits à user sur les tables
\param databaseuse User à autoriser
\return string Requete sql
*/
function getGrantForUserQuery($databaseuser)
{
// Scan tables pour générer le grant
$dir = DOL_DOCUMENT_ROOT."/pgsql/tables";
$handle=opendir($dir);
$table_list="";
while (($file = readdir($handle))!==false)
{
if (! ereg("\.key\.sql",$file) && ereg("^(.*)\.sql",$file,$reg))
{
if ($table_list) {
$table_list.=", ".$reg[0];
}
else {
$table_list.=$reg[0];
}
}
}
// Genere le grant_query
$grant_query = 'GRANT ALL ON '.$table_list.' TO "'.$databaseuser.'";';
return $grant_query;
}
/**
\brief Création d'une nouvelle base de donnée
\param database nom de la database à créer
\return resource resource définie si ok, null si ko
\remarks Ne pas utiliser les fonctions xxx_create_db (xxx=mysql, ...) car elles sont deprecated
*/
function create_db($database)
{
$ret=$this->query('CREATE DATABASE '.$database.';');
return $ret;
}
/**
\brief Copie d'un handler de database.
\return resource
*/
function dbclone()
{
$db2 = new DoliDb("", "", "", "", "");
$db2->db = $this->db;
return $db2;
}
/**
\brief Ouverture d'une connection vers une database.
\param host Adresse de la base de données
\param login Nom de l'utilisateur autorisé
\param passwd Mot de passe
\param name Nom de la database
\return resource handler d'accès à la base
*/
function pconnect($host, $login, $passwd, $name)
{
$con_string = "host=$host dbname=$name user=$login password=$passwd";
$this->db = pg_pconnect($con_string);
return $this->db;
}
/** /**
\brief Fermeture d'une connection vers une database. \brief Fermeture d'une connection vers une database.
\return resource \return resource
*/ */
function close() function close()
{ {
return pg_close($this->db); return pg_close($this->db);
} }
/** /**
\brief Debut d'une transaction. \brief Debut d'une transaction.
\return int 1 si ouverture transaction ok ou deja ouverte, 0 en cas d'erreur \return int 1 si ouverture transaction ok ou deja ouverte, 0 en cas d'erreur
@ -339,6 +255,7 @@ class DoliDb
} }
} }
/** /**
\brief Effectue une requete et renvoi le resultset de réponse de la base \brief Effectue une requete et renvoi le resultset de réponse de la base
\param query Contenu de la query \param query Contenu de la query
@ -360,15 +277,64 @@ class DoliDb
return $ret; return $ret;
} }
// Next function are not required. Only minor features use them.
/** /**
\brief Renvoie les données de la requete. \brief Renvoie l'id de la connection
\param nb Contenu de la query \return string Id connection
\param fieldname Nom du champ
\return resource
*/ */
function result($nb, $fieldname) function getConnectId()
{ {
return pg_fetch_result($this->results, $nb, $fieldname); return '?';
}
/**
\brief Renvoie la commande sql qui donne les droits à user sur les tables
\param databaseuse User à autoriser
\return string Requete sql
*/
function getGrantForUserQuery($databaseuser)
{
// Scan tables pour générer le grant
$dir = DOL_DOCUMENT_ROOT."/pgsql/tables";
$handle=opendir($dir);
$table_list="";
while (($file = readdir($handle))!==false)
{
if (! ereg("\.key\.sql",$file) && ereg("^(.*)\.sql",$file,$reg))
{
if ($table_list) {
$table_list.=", ".$reg[0];
}
else {
$table_list.=$reg[0];
}
}
}
// Genere le grant_query
$grant_query = 'GRANT ALL ON '.$table_list.' TO "'.$databaseuser.'";';
return $grant_query;
}
/**
\brief Création d'une nouvelle base de donnée
\param database nom de la database à créer
\return resource resource définie si ok, null si ko
\remarks Ne pas utiliser les fonctions xxx_create_db (xxx=mysql, ...) car elles sont deprecated
*/
function create_db($database)
{
$ret=$this->query('CREATE DATABASE '.$database.';');
return $ret;
} }
/** /**

View File

@ -28,24 +28,9 @@ if ($user->societe_id > 0)
$socidp = $user->societe_id; $socidp = $user->societe_id;
} }
llxHeader("","","Lolix");
function valeur($sql)
{ llxHeader("","","Lolix");
global $db;
if ( $db->query($sql) )
{
if ( $db->num_rows() )
{
$valeur = $db->result(0,0);
}
$db->free();
}
return $valeur;
}
/*
*
*/
print_titre("Espace Lolix"); print_titre("Espace Lolix");

View File

@ -28,24 +28,9 @@ if ($user->societe_id > 0)
$socidp = $user->societe_id; $socidp = $user->societe_id;
} }
llxHeader("","","Lolix");
function valeur($sql)
{ llxHeader("","","Lolix");
global $db;
if ( $db->query($sql) )
{
if ( $db->num_rows() )
{
$valeur = $db->result(0,0);
}
$db->free();
}
return $valeur;
}
/*
*
*/
print_titre("Espace Lolix"); print_titre("Espace Lolix");

View File

@ -758,88 +758,90 @@ class Societe
return $facimp; return $facimp;
} }
/** /**
* \brief Attribut le prefix de la société en base * \brief Attribut le prefix de la société en base
* *
*/ */
function attribute_prefix() function attribute_prefix()
{
$sql = "SELECT nom FROM ".MAIN_DB_PREFIX."societe WHERE idp = '$this->id'";
if ( $this->db->query( $sql) )
{
if ( $this->db->num_rows() )
{
$nom = preg_replace("/[[:punct:]]/","",$this->db->result(0,0));
$this->db->free();
$prefix = $this->genprefix($nom,4);
$sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."societe WHERE prefix_comm = '$prefix'";
if ( $this->db->query( $sql) )
{
if ( $this->db->result(0, 0) )
{
$this->db->free();
}
else
{
$this->db->free();
$sql = "UPDATE ".MAIN_DB_PREFIX."societe set prefix_comm='$prefix' WHERE idp='$this->id'";
if ( $this->db->query( $sql) )
{
}
else
{
dolibarr_print_error($this->db);
}
}
}
else
{
dolibarr_print_error($this->db);
}
}
}
else
{
dolibarr_print_error($this->db);
}
return $prefix;
}
/**
* \brief Génère le préfix de la société
* \param nom nom de la société
* \param taille taille du prefix à retourner
* \param mot l'indice du mot à utiliser
*
*/
function genprefix($nom, $taille=4,$mot=0)
{
$retour = "";
$tab = explode(" ",$nom);
if($mot < count($tab)) {
$prefix = strtoupper(substr($tab[$mot],0,$taille));
//On vérifie que ce prefix n'a pas déjà été pris ...
$sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."societe WHERE prefix_comm = '$prefix'";
if ( $this->db->query( $sql) )
{ {
if ( $this->db->result(0, 0) ) $sql = "SELECT nom FROM ".MAIN_DB_PREFIX."societe WHERE idp = '".$this->id."'";
{ $resql=$this->db->query( $sql);
$this->db->free(); if ($resql)
$retour = $this->genprefix($nom,$taille,$mot+1); {
} if ($this->db->num_rows($resql))
else {
{ $obj=$this->db->fetch_object($resql);
$retour = $prefix; $nom = preg_replace("/[[:punct:]]/","",$obj->nom);
} $this->db->free();
$prefix = $this->genprefix($nom,4);
$sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."societe WHERE prefix_comm = '$prefix'";
$resql=$this->db->query($sql);
if ($resql)
{
$obj=$this->db->fetch_object($resql);
$this->db->free($resql);
if (! $obj->nb)
{
$sql = "UPDATE ".MAIN_DB_PREFIX."societe set prefix_comm='$prefix' WHERE idp='$this->id'";
if ( $this->db->query( $sql) )
{
}
else
{
dolibarr_print_error($this->db);
}
}
}
else
{
dolibarr_print_error($this->db);
}
}
}
else
{
dolibarr_print_error($this->db);
}
return $prefix;
}
/**
* \brief Génère le préfix de la sociét
* \param nom nom de la sociét
* \param taille taille du prefix à retourner
* \param mot l'indice du mot à utiliser
*/
function genprefix($nom, $taille=4, $mot=0)
{
$retour = "";
$tab = explode(" ",$nom);
if ($mot < count($tab))
{
$prefix = strtoupper(substr($tab[$mot],0,$taille));
// On vérifie que ce prefix n'a pas déjà été pris ...
$sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."societe WHERE prefix_comm = '$prefix'";
$resql=$this->db->query( $sql);
if ($resql)
{
$obj=$this->db->fetch_object($resql);
if ($obj->nb)
{
$this->db->free();
$retour = $this->genprefix($nom,$taille,$mot+1);
}
else
{
$retour = $prefix;
}
}
}
return $retour;
} }
}
return $retour;
}
/** /**
* \brief Définit la société comme un client * \brief Définit la société comme un client