Tu as une page complètement blanche? Tu as ta liste qui est vide à part lieu de résidence? Qu'as-tu exactement qui te dit que ça cloche?
Ben, Ma liste de ville reste vide... selon mes test
Et d'autres fois c'est la page qui est entièrement blanche..
Parce que j'ai testé mille et une solutions qui ne donnent rien
Avec la méthode traditionnelle tout fonctionne :
"<?php
$db='****';
$cnx=mysql_connect('localhost', '****', '****') or die("Pb connexion serveur ".mysql_error());
$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error());
$requete = mysql_query("SELECT ville_id, ville FROM eg_villes") or die("Pb avec la requette ".mysql_error());
?>"
// Ce script de connexion alimente cette zone de liste qui fonctionne à merveille :
"<select name="ville_id" style="width: 224px">
<option selected="selected">Lieu de résidence</option>
<?php
while ($valeur = mysql_fetch_array($requete)){
echo "<option value=\"". $valeur['ville_id'] ."\" cli_name=\"". $valeur['ville'] ."\">". $valeur['ville'] ."</option>n";
}
?>
</select>"
mais j'en ai un peu assez de recopier tout le code de connexion à chaque page. J'ai donc voulu me mettre au poo, mais que diable allais-je faire dans cette galère ?
Une classe de connexion aurait pour but de te fournir l'objet symbolisant la connexion, et de lever une exception en cas d'échec. Là pour le coup, pas besoin de lancer l'exception soi-même, PDO le fait pour nous, donc notre classe a juste à construire un objet PDO :
Bien sûr, ceci est un exemple trivial. Je ne ferais pas une classe de connexion de cette manière pour plusieurs raisons, notamment le manque de flexibilité dû fait que les identifiants sont inscrits en dur dans la classe. Mieux vaut faire un fichier de configuration ailleurs. Ceci étant, si déjà cette classe simple te parait compréhensible (même si besoin de plus d'une lecture au début) c'est déjà que tu commences à cerner ce qui se cache derrière "classe de connexion".
Pour mysql_*(), il faudra adapter pas mal de choses dont le lancer manuel d'exceptions en cas d'erreur.
Edit : un petit exemple fait à l'arrache de classe pouvant servir avec les vieilles fonction mysql_*(). Très incomplète vu qu'il faut quand même gérer soi-même l'échappement et compagnie. Et en bas, comment l'utiliser.
<?php
class MaConnexion {
protected static $instance = null;
protected $link;
protected function __construct($host, $user, $passwd, $charset = null, $dbname = null) {
$link = mysql_connect($host, $user, $passwd);
if($link === false) throw new RuntimeException(mysql_error(), mysql_errno());
if(!is_null($charset) and !mysql_set_charset($charset, $this->link))
throw new RuntimeException(mysql_error($this->link), mysql_errno($this->link));
if(!is_null($dbname) and !mysql_select_db($dbname, $this->link))
throw new RuntimeException(mysql_error($this->link), mysql_errno($this->link));
}
public static function getConnexion() {
if(is_null(self::$instance))
self::$instance = new self('localhost', 'root', '', 'utf8', 'dbname');
return self::$instance;
}
public function query($query) {
$result = mysql_query($query, $this->link);
if($result === false) throw new RuntimeException(mysql_error($this->link), mysql_errno($this->link));
return $result;
}
public function fetch($result) {
return mysql_fetch_assoc($result);
}
}
try {
$cnx = MaConnexion::getConnexion();
// Requêtes l'utilisant
$result = $cnx->query('SELECT ville_id, ville FROM eg_villes;'); ?>
<select name="ville_id" style="width: 224px">
<option selected="selected">Lieu de résidence</option>
<?php while($valeur = $cnx->fetch($result)): ?>
<option value="<?php echo $valeur['ville_id']; ?>" cli_name="<?php echo $valeur['ville']; ?>"><?php echo $valeur['ville']; ?></option>
<?php endwhile; ?>
</select>
<?php
}
catch(RuntimeException $ex) {
?>
<p>Une erreur est survenue pendant le traitement en base de données.<br />
<?php echo $ex->getMessage(); ?><br />
Veuillez contacter l'administrateur.</p>
<?php
}
?>
Je te remercie grandement pour ta collaboration, mais je m'en vais me retourner à la méthode "traditionnelle". C trop "compliqué" pour moi d'apprendre le chinois...
Niveau communication avec la bdd, faire beaucoup d'entrainement, tu dois.
Tu as dit textuellement que tu coules. Dans ce cas, faut revenir un peu vers le bord et ne plus t'attarder sur tes bases qui partent dans tout les sens. Ainsi, tu te refais tes bonnes bases biens ancrés dans la tête.
Qui n'a jamais fait marche arrière en php pour pouvoir mieux avancer? J'ai déjà bu la tasse plusieurs fois et je la boirai encore, tu peux me croire, mais quand ça m'arrive en guise d'alerte d'aller trop vite, je reviens directe là où j'ai pied.
Je te remercie grandement pour ta collaboration, mais je m'en vais me retourner à la méthode "traditionnelle". C trop "compliqué" pour moi d'apprendre le chinois...
Comment faisais-tu en méthode traditionnelle pour ne pas lancer la requête si jamais la connexion échouait ? Sans tuer le script, bien sûr...
Note à Casperaxxx: c'est dommage qu'il n'y a pas de smiley *trollface* sur le forum...
{LVM}Plan de "partitions" pour machines virtuelles ? Carte de capture sous linux ? Erreur ACPI au boot ?
{LVM}Plan de "partitions" pour machines virtuelles ? Carte de capture sous linux ? Erreur ACPI au boot ?
{LVM}Plan de "partitions" pour machines virtuelles ? Carte de capture sous linux ? Erreur ACPI au boot ?
{LVM}Plan de "partitions" pour machines virtuelles ? Carte de capture sous linux ? Erreur ACPI au boot ?
{LVM}Plan de "partitions" pour machines virtuelles ? Carte de capture sous linux ? Erreur ACPI au boot ?
{LVM}Plan de "partitions" pour machines virtuelles ? Carte de capture sous linux ? Erreur ACPI au boot ?