[Poo / MySql] Erreur bizarre

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [Poo / MySql] Erreur bizarre

par endorphine » 11 janv. 2006, 03:40

Ah oui, j'ai aussi oublié de spécifier que $i = '0', car lorsqu'il n'y a qu'une requête pas besoin d'ajouter un chiffre à la fin, ça se fait automatiquement!

(Je crois que je vais m'enregistrer ça va éviter du spam) :roll:

par endorphine » 11 janv. 2006, 03:38

Salut,
désoler pour le retard (je viens du Québec)
salut
est tu sur que tes requete renvoi quelque chose Question

et pourqoi fait tu un fetch sur une requete Update Question
Merci, le problème était là... erreur stupide.. désoler pour le dérangement !! :shock: Je crois que j'étais trop concentré sur le problème pour m'en rendre compte...


Explication pour le $i :
En fait je voulais me simplifier un peu la vie, disons qu'au début d'un script je fait plein de requête. Bha pour les afficher ça causait un problème car Php n'affiche pas nécessairement celle qu'on veut!
Exemple concret :
require_once("config.php");
$db = new connect( $host, $user, $password, $database );
$db->query("SELECT * from nouvelles ORDER BY 'id' [b]DESC[/b] LIMIT 1");
$db->query("SELECT * from nouvelles ORDER BY 'id' [b]ASC[/b] LIMIT 1");

$r = $db->fetch();
  echo "<h2>" . $r->titre . "</h2>\n";
  echo $r->nouvelle . "\n\n";
$db->fetch();
  echo "<h2>" . $r->titre . "</h2>\n";
  echo $r->nouvelle . "\n\n";
Affichera 2 fois la première nouvelle entrée. (J'ai essayé d'être le + clair dans mes explications :P)

Merci encore!

par jeff » 10 janv. 2006, 12:13

ouia
mais ca devrai etre plutot ca
public function query($query, $i =0) { 

par Vianney » 10 janv. 2006, 12:11

Ah oki je vois ca évite de créer plusieur oject mysql a chaque requette imbriquer. Merci je vois quoi maintenant.

je savais pas qu'on pouvais faire ca pour $i
public function query($query, $i = '0') {
  $this->query[$i] = mysql_query($query, $this->connect);
}
...
$db->query("SELECT * from nouvelles ORDER BY 'id' DESC LIMIT 1", 1);
Comment faut comprendre ca? que par defaut la valeur de $i est 0 mais qu'on peut le changer c'est ca?

par jeff » 10 janv. 2006, 11:50

pour
$type = 'object'
tu pourrai utiliser le default du switch
et l'indice $i permet de recupere la bonne ressource renvoyer par mysql

comme ca tu exploite tes requete dans l'odre que tu veut et tu peut auusi les imbriquer

par Vianney » 10 janv. 2006, 11:42

Juste une autre petite question qui doit pas avoir grand chose avec ton probleme mais bon...
public function fetch($i = '0', $type = 'object') 
switch ($type)
  { 
etc...
$r = $db->fetch()
Pourquoi tu mets un switch si tu définis dans l'appel de la fonction fetch la valeur de $type? :roll:

et ton $i sert a quoi d'ailleur?
query[$i] ???

juste pour comprendre la logique de ton truc :)

par jeff » 10 janv. 2006, 11:33

salut
est tu sur que tes requete renvoi quelque chose :?:

et pourqoi fait tu un fetch sur une requete Update :?:

[Poo / MySql] Erreur bizarre

par endorphine » 10 janv. 2006, 03:29

Bonjour,
Je me fait une class pour le connecter à MySql, afficher des données, ajouter, update etc...
J'ai une erreur dont je ne connais pas la source. :shock:

Voici mon code :
<?php

class connect {
 public $connect;
 public $query;

 public function __construct($host, $user, $password, $database) {
  $this->connect = mysql_connect($host, $user, $password);
  mysql_select_db($database, $this->connect);
 }

 public function query($query, $i = '0') {
  $this->query[$i] = mysql_query($query, $this->connect);
 }

 public function fetch($i = '0', $type = 'object') {
  switch ($type)
  {
   case 'row':
    $fetch = mysql_fetch_row($this->query[$i]);
   break;

   case 'array':
    $fetch = mysql_fetch_array($this->query[$i]);
   break;

   case 'assoc':
    $fetch = mysql_fetch_assoc($this->query[$i]);
   break;

   case 'object':
    $fetch = mysql_fetch_object($this->query[$i]);
   break;
  }
  return $fetch;
 }

 public function close() {
  mysql_close($this->connect);
 }
}

// CETTE PARTIE EST SIMPLEMENT LÀ POUR TESTER LA CLASSE


function nl2p($str,$addtag='') {
   return str_replace('<p'.$addtag.'></p>', '', '<p'.$addtag.'>' . preg_replace('#\n|\r#', '</p>$0<p'.$addtag.'>', $str) . '</p>');
}

require_once("config.php");
$db = new connect( $host, $user, $password, $database );
$db->query("SELECT * from nouvelles ORDER BY 'id' DESC LIMIT 10");
$db->query("SELECT * from nouvelles ORDER BY 'id' DESC LIMIT 1", 1);
$db->query("UPDATE `nouvelles` SET `auteur` = 'endorphine!!!!' WHERE `id` = 31 LIMIT 1", 2);
$db->fetch(2, 'assoc');
$db->close();

 while ($r = $db->fetch()) {
  echo "<h2>" . $r->titre . "</h2>\n";
  echo nl2p($r->nouvelle) . "\n\n";
 }

echo "<br />";
echo "<hr />";
echo "<br />";

 $r = $db->fetch(1);
  echo "<h2>" . $r->titre . "</h2>";
  echo "<p>" . nl2br($r->nouvelle) . "</p>";

?>
Voici l'erreur :
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wamp\www\connect.php on line 28
Merci d'avance pour votre aide!!