Depuis peu je me met à la POO. J'ai récemment écrit un script (qui gère 2 tables: conso1 et conso2), mais j'ai beau cherché et tout essayer je tombe toujours sur une page blanche :S
Voici le code en question, il est scindé en plusieurs page dont la page principal: Résultat.php
resultat.php
Code :
<?php
function __autoload($class_name) {
require_once $class_name . '.class.php';
}
$preparesql = new PrepareSql();
echo 'nombre de criteres de recherche:'.$preparesql->where->i;
$db0 = new SQLiteDatabase('', '', '', '');
echo $preparesql;
$resultat = $db0->query($preparesql);
$rows = $resultat->numFields();
if($rows == 0) {
echo 'Aucun consommateurs trouvés';
}
else{
if ($rows == 1) {
echo '1 consommateur trouvé';
}
else {
echo $rows,' consommateurs trouvés';
}
?>
<table class="sortable">
<tr>
<th>Titre</th>
<th>Prenom</th>
<th>Nom</th>
<th>Age</th>
<th>Ville</th>
<th>Code Postal</th>
<th>Telephone</th>
<th>Portable</th>
<th>Email</th>
<?php
// si plusieurs tables
if($preparesql->table->many)
{
?>
<th>Situation</th>
<th>Niveau Scolaire</th>
<th>Revenus du ménage</th>
<th>Revenus perso</th>
<th>Profession</th>
<th>Nombre d'enfants</a></th>
<th>Enfants de 0 à 5 ans</th>
<th>Enfants de 6 à 10 ans</th>
<th>Enfants de 11 à 13 ans</th>
<th>Enfants de 14 à 17 ans</th>
<th>Enfants de 18 à 25 ans</th>
<th>Enfants de 25 et + </th>
<th>Autre sujet de réunions interessé</th>
</tr>
<?php
}
$n =0;
while ($temp = $resultat->fetch(SQLITE_ASSOC))
{
$ligne[$n] = $temp;
$n++;
}
foreach($ligne as $cle=>$valeur)
{
echo $cle.' : '.$valeur.'<br />';
}
}
?>
Les Classes:
PrepareSql.class.php
Code :
<?php
/**
* Class PrepareSql
* Class permettant de preparer une requete SQL
* Params : (int) id
* Return : (objet) monObjet
**/
Class PrepareSql {
public $table; // table ou s'effectue la recherche
private $select; // éléments à rechercher
private $where; // criteres de recherche
function __construct()
{
$this->table= new Table();
$this->where= new Where();
$this->select= new Select($this->table->many);
return 'SELECT '.$this->select.' FROM '.$this->table->name.$this->where->build($this->table->many);
// class permettant la construction de la name qui contient le nom des tables à disposer plustard dans la requete
class Table{
public $name;
public $many;
function __construct()
{
if(!empty($_POST['situation']) OR !empty($_POST['internet']) OR !empty($_POST['entretiens']) OR !empty($_POST['reunions']) OR !empty($_POST['sante']) OR !empty($_POST['beaute']) OR !empty($_POST['alimentaire']) OR !empty($_POST['revenus']) OR !empty($_POST['enfant']) OR !empty($_POST['membre1']) OR !empty($_POST['membre2']) OR !empty($_POST['membre3']) OR !empty($_POST['membre4']) OR !empty($_POST['membre5']) OR !empty($_POST['profession']))
{
$this->name='conso1, conso2';
$this->many=TRUE;
}
else
{
$this->name='conso1';
//une seule table
$this->many=FALSE;
}
}
}
?>
Where.class.php
Code :
<?php
/**
* Class Where
* Class permettant de construire les arguments du WHERE
* Params : (boolean) $this->table->many
* Return : (string) WHERE + une liste d'arguments' || ''
**/
class Where{
public $i; // nombre d'arguments (calculé en fonction des opérateurs logiques (AND, WHERE)
function __construct()
{
$this->i = 0;
}
// on construit le WHERE: plusieurs étape: 1.build() 2.data() 3.build_arg() 4.la fonction correspondant à l'input
Je n'ai pas tout regardé en détails...
mais tu dis que tu as une page blanche... vu que tu fais plusieurs echo, quels sont les résultats des différents echo que tu fais au début ?
echo 'nombre de criteres de recherche:'.$preparesql->where->i;
echo $preparesql;
Ca te donne quoi ?
Et si tu as vraiment une page toute blanche, c'est que tu dois avoir une erreur qui n'est pas affichée, essaie d'afficher les erreurs en mettant error_reporting(0); au début de ta page ( http://fr.php.net/error_reporting )
------------------------------Les dessins des seins ou les desseins des saints ?
Répondre à OmaR
On ne sait meme pas ce qui est censé s'afficher, ou quel résultat tu souhaite obtenir, donc le code c'est bien beau, mais, des informations supplémentaires serait pas de refus.
Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois. Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.