Modérateur PHPfrance |
6037 Messages
17 août 2005, 11:12
moi aussi je peux jouer ? (ça fait genre, je bosse, au cas où mon employeur passe ici)
Classe BaseDeDonnees, en français pour pouvoir interroger et manipuler une base MSSQL Server
class BaseDeDonnes
{
public $hote;
public $utilisateur;
public $base;
private $pwd;
function __tostring()
{
return "Cette classe permet de définir et manipuler une connexion à la base de données.<br/>";
}
function __construct($host, $login, $database, $passwd)
{
$this->hote = $host;
$this->utilisateur = $login;
$this->base = $database;
$this->pwd = $passwd;
}
function connect_to_base()
{
if (!($db = sybase_connect($this->hote, $this->utilisateur , $this->pwd)))
{
$msg_error .= "connexion impossible";
return $msg_error;
}
else
{
$msg_error .= "Youhou je suis connecté";
if (!(sybase_select_db($this->base, $db)))
{
$msg_error .= "pas de bdd selectionnée";
return $msg_error;
}
else
{
$msg_error .= "bon j'ai selectionné la base :".$this->base;
return $db;
}
}
}
function poserFormatRes($requete, $methode ="rien",$colonnes=0, $trclass="", $tdclass=0)
{
if($result=sybase_query($requete)){
if(substr($requete, 0, 6) == "SELECT" || substr($requete, 0, 6) == "INSERT" || substr($requete, 0, 6) == "DELETE")
{
if(substr($requete, 0, 6) == "SELECT")
{/* Traitement requête de recherche */
$num = sybase_num_rows($result);
$leHTML = call_user_func(array(&$this,$methode),$result, $colonnes, $trclass);
return $leHTML;
}
elseif(substr($requete, 0, 6) == "INSERT")
{
$num = sybase_affected_rows();
//echo "Nb de lignes affectées : ".$num."<br />";
//echo "la requete est de type <b>INSERT</b><br />";
/* Traitement requête d'insertion */
}
elseif(substr($requete, 0, 6) == "DELETE")
{
echo "DELETE";
/* Traitement requête de suppression */
}
/* etc..... */
}
}
else
{
echo "bah non\n<br />";
}
}
function make_safe($text)
{
$text = trim($text);
$text = str_replace("'", "''", $text);
return $text;
}
function createTableFromRes($pointeurResultats, $column, $trclass="", $tdclass = 0)
{
/* pointeurResultats provient de la requete posée
/ column est le nombre de colonnes
/ tr class la classe en CSS de TOUTES les lignes
/ td class la classe en CSS de tous les TD, sauf qu'en faisant un tableau, on a les classes de chaque TD (donc par colonne)
/ exemple :
/ avec $tdclass = array('bleu', 'rouge');
/ <td class="bleu">texxtxe</td><td class="rouge">teste</td>*/
// DEBUG
//echo "Nb de colonnes du tableau : ".$column."<br />";
$tablo = "";
$i =0;
while($res = mssql_fetch_array($pointeurResultats))
{
$length = sybase_num_rows($pointeurResultats);
//echo "Longueur des résultats : ".$length."<br />";
$tablo.="\t <tr class=\"".$trclass."\">\n";
for($j=0;$j<$column;$j++)
{
$tablo.= "\t \t <td class=\"" . $tdclass[$j] . "\">".$res[$j]."</td>\n";
}
$tablo.="\t </tr>\n";
$i++;
}
return $tablo;
}
function createSelectFromRes($pointeurResultats){
$contenuSelect= "";
$w = 0;
while($res = mssql_fetch_array($pointeurResultats))
{
$length = count($res[0]);
for($i=0;$i<$length;$i++){
if($_POST['IA'] == $res[$i]){
$selected = 'selected="selected"'.$w;
}else{
$selected = 'no';
}
$contenuSelect .= '<option value="' . $res[$i] . '" '.$selected.'>'.$res[$i].'</option>';
}
$w++;
}
return $contenuSelect;
}
function rien($pointeurResultats){
echo "rien";
}
// fin classe
}
Allez, je suis dans un bon jour, je vous mets mon utilisation
include("lib/fichier_classe.inc.php");
$bdd = new BaseDeDonnes("serveur","login", "base", "password");
if($bdd->connect_to_base())
{
// Pour afficher 1 menu déroulant
/* definir $requeteSelect */
$selectRes = $bdd->poserFormatRes($requeteSelect, "createSelectFromRes");
if(isset($_POST['demonSelect'])){
/* définir requête $requeteTableauHTML */
// on définit les id pour chaque cellule d'une ligne
$tablodesClassesCSSdesColonnes = array('classe_col_n'); /*Mettre autant d'items que de colonnes qu'on veut */
$tableauRes = $bdd->poserFormatRes($requeteTableauHTML, "createTableFromRes", $nbcolonnesQuonVeut, 'classeCSS', '', $tablodesClassesCSSdesColonnes );
//DEBUG echo '<table border="1">'.$tableauRes.'</table>';
}
}else{
echo "pas de connexion à la bdd";
}
Modifié en dernier par
mere-teresa le 17 août 2005, 11:31, modifié 2 fois.