IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

requete


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 69
    Points : 36
    Points
    36
    Par défaut requete
    Bonjour, j'ai un probleme avec cette requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    <?php
     
    define ("DB_DNS_login_1_29_2", "mysql:host=localhost;dbname=login_1_29_2");
    define ("DB_DNS_website", "mysql:host=localhost;dbname=website");
     
    class mysql extends PDO {
     
    	private static $_instance;
    	private static $_instance_Website;
     
    	public function __construct( ) {
     
    	}
     
    	public static function getInstance() {
     
    		if (!isset(self::$_instance)) {
     
    			try {
    				self::$_instance = new PDO(DB_DNS_login_1_29_2, 'root', '');
     
    			} catch (PDOException $e) {
     
    				echo $e;
    			}
    		} 
    		return self::$_instance; 
    	}
     
    	public function getInstanceWebsite()
    	{
    		if (!isset(self::$_instance_Website))
    		{
    			try {
     
    				self::$_instance_Website = new PDO(DB_DNS_dofus_website, 'root', '');
     
    			} catch (PDOException $e) {
     
    				echo $e;
    			}
    		}
    		return self::$_instance_Website;
    	}
    }
    ?>
    Pouvez vous m'aider svp ?

    thx

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il y a une requête dans ce code ?
    Et quel est le problème ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 69
    Points : 36
    Points
    36
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Notice: Undefined property: News::$rows in C:\wamp64\www\layouts\default\template\middle\news\index.php on line 4
     
    Call Stack
    et le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
    $news = new News;
    $news->get();
    $news = $news->rows;
     
    var_dump($news);
    exit();
     
     
     
    	foreach ($news as $n) { $i = 1; ?>
    		<div class="grid_3 news <?php if($i==1){echo'alpha';} if($i==4){echo'omega';} else{}?>">
    			<img src="<?php echo WEB_ROOT; ?>/img/news.png"/>
    			<h3><?php echo $n['title']?>
    				<span style="font-size:10px;">[<?php echo $n['date']?>]</span><br />
    				<span style="font-size:10px;"><?php echo $n['author']?></span>
    			</h3>
    			<div class="limiter"></div>
    			<span><br /><br /><?php echo $n['news']?></span><br />
    		</div>
     
    <?php 
    	} ?>
    	<div class="container_12">
    		<div class="grid_3 prefix_2"><?php $pagination->pagination(); ?></div>
    	</div>

  4. #4
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Déjà il faudrait le code de la class News. Voir si c'est rows ou rows() ou si rows existe.

    Ensuite, je ne pense pas que $news = $news->rows soit une bonne idée puisque si tu as besoin plus tard $news tel qu'il était au départ tu ne l'auras plus et tu te demanderas pourquoi ça fait une erreur.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 69
    Points : 36
    Points
    36
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function get() 
    	{
    		$dbh = mysql::getInstanceWebsite();
    		$sql = 'SELECT *
    				FROM news';
    		$dbh = $dbh->prepare($sql);
    		$dbh->execute();
     
    		while (($rows = $dbh->fetch())  != FALSE)
    		{
    			$rows[] = $rows;	
    		}
    	}

  6. #6
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Allez. Encore un essai !
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 69
    Points : 36
    Points
    36
    Par défaut
    j'ai tous envoyé.

    Peut on m'aider svp ?

  8. #8
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Comment veux tu qu'on t'aide puisque ce que tu postes ne permet pas de voir la cause du problème ?
    Tu n'as pas posté le code de la classe News.
    Tu as une erreur qui dit que $news->rows n'existe pas. Soit tu as une variable qui est marquée $this->rows dans la classe soit tu as une fonction rows().
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    • pas une seule phrase d'explication
    • pas un seul commentaire dans le code
    • pas une seule réponse aux questions qu'on te pose
    • pas une seule tentative de correction / débogage *
    • ...

    RIEN, nada, que tchi, walou !

    BREF : si je te dis : "Bouge-toi le QI !!!"
    Ca t'aide, ou pas ?

    *Mea culpa : que te donne le var_dump($news); ?


    Sais-tu au moins que ce sont des être humains qui te répondent, et pas des machines*** ?
    ***Oui, bon. Je viens de revoir Terminator à la TV...

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 69
    Points : 36
    Points
    36
    Par défaut
    Bonjour, oui il manque les explications.

    Alors, ma class sql doit gerer 2 connextion a 2 db differente.
    webiste et login.

    Alors class News la voila;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    class News extends mysql
    {
    	function get() 
    	{
    		$dbh = mysql::getInstanceWebsite();
    		$sql = 'SELECT *
    				FROM news';
    		$dbh = $dbh->prepare($sql);
    		$dbh->execute();
     
    		while (($rows = $dbh->fetch())  != FALSE)
    		{
    			$rows[] = $rows;	
    		}
    	}
    Et pour ce qui de l'appel de rows :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <?php
    $news = new News;
    $requete= $news->get();
    $news = $requete->rows;
     
    var_dump($news);
    exit();
     
     
     
    	foreach ($news as $n) { $i = 1; ?>
    		<div class="grid_3 news <?php if($i==1){echo'alpha';} if($i==4){echo'omega';} else{}?>">
    			<img src="<?php echo WEB_ROOT; ?>/img/news.png"/>
    			<h3><?php echo $n['title']?>
    				<span style="font-size:10px;">[<?php echo $n['date']?>]</span><br />
    				<span style="font-size:10px;"><?php echo $n['author']?></span>
    			</h3>
    			<div class="limiter"></div>
    			<span><br /><br /><?php echo $n['news']?></span><br />
    		</div>
     
    <?php 
    	} ?>
    Var_dump renvoie null.

    Voila j'espere que c'est plus claire

  11. #11
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Pour que tu puisses utiliser une "variable" en dehors de la classe, il faut que tu la définisses et ensuite qu'elle soit préfixée par $this->. Dans ton exemple, $this->rows n'est pas $rows. A ce propos, tu avais $rows[] = $rows; ce qui est un non sens !

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    class News extends mysql
    {
     public $rows = array();
     
     function get() 
     {
      $dbh = mysql::getInstanceWebsite();
      $sql = 'SELECT * FROM news';
      $dbh = $dbh->prepare($sql);
      $dbh->execute();
      $this->rows = array();
      while (($rows = $dbh->fetch())  != FALSE)
      {
       $this->rows[] = $rows; 
      }
     }
    }

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $news = new News; => il manque les ().
    $requete= $news->get(); => $requete ne sert à rien puisque get ne renvoie rien.
    $news = $requete->rows; => là tu supprimes $news que tu as instancié 2 lignes plus haut et tu utilises $requete qui ne contient rien puisque get ne retourne rien.

    Avec le premier code.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $news = new News(); 
    $news->get();
    $listeNews = $news->rows;

    Le mieux serait que get renvoie tout de suite les données.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    class News extends mysql
    {
     public $rows = array();
     
     function get() 
     {
      $dbh = mysql::getInstanceWebsite();
      $sql = 'SELECT * FROM news';
      $dbh = $dbh->prepare($sql);
      $dbh->execute();
      $result = array();
      while (($rows = $dbh->fetch())  != FALSE)
      {
       $result[] = $rows; 
      }
      return $result;
     }
    }

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $news = new News(); 
    $listeNews = $news->get();

    Il y a d'autres améliorations possibles. Par contre je ne sais pas si cela fonctionnera car je ne sais pas ce que retourne mysql::getInstanceWebsite(); mais le principe est là.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 69
    Points : 36
    Points
    36
    Par défaut
    Et le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Notice: Undefined property: News::$rows in C:\wamp64\www\layouts\default\template\middle\news\index.php on line 4

  13. #13
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Il est dû au fait que dans ton code $rows est une variable locale et non de classe. De ce fait elle n'est visible que dans la fonction get.
    As-tu des bases en programmation orientée objets ?
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 69
    Points : 36
    Points
    36
    Par défaut
    OUi bien sure.

    JE viens de debugué et sa marche.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo