[RESOLU] Problème extraction données bdd

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 : [RESOLU] Problème extraction données bdd

Re: Problème extraction données bdd

par mineyou » 20 déc. 2016, 14:01

C'est pas grave c'est déjà gentil de m'aider.
Ça fonction, merci de ton aide !

Re: Problème extraction données bdd

par Genova » 20 déc. 2016, 02:52

Oups remplace FETCH_OBJ par FETCH_ASSOC dans le code que je t'ai filé, désolé !

Re: [RESOLU] Problème extraction données bdd

par mineyou » 20 déc. 2016, 01:08

Voici le code php de la classe en question :
static private function getparam($page,$home)
 	{
 		
 		if(empty($page))
 		{
 			$req = "SELECT * FROM page WHERE home='true'";
 		}
 		else
 		{
 		$req = "SELECT * FROM page WHERE page='".$page."'";
 		}
 		
 		$donnees = db::query($req);
 		if($donnees === true)
 		{
 		return $donnees;
 		}
 		else
 		{
 			$req = "SELECT * FROM page WHERE page='404'";
 			$donnees = db::query($req);
 			return $donnees;
 		}
 	}

 	static public function disphead($page)
 	{
 		
 		$donnees = self::getparam($page,$home);
 		
 	
 	echo"<!Doctype html>
 		<html lang='".$donnees['lang']."'>
 		<head>
 		<title>".ucfirst($donnees['page'])."</title>
 		<meta charset='".$donnees['charset']."'/>
 		<meta name='description' content='".$donnees['description']."'/>
 		<meta name='keyword' content='".$donnees['keyword']."'/>
 		</head>";
 		
 		return $donnees['page'];
 		
 		
 	}

Re: [RESOLU] Problème extraction données bdd

par mineyou » 20 déc. 2016, 01:07

Finalement j'ai pas réussi à déplanter :

Il me donne ce code erreur :

Fatal error: Cannot use object of type stdClass as array in /home/vsftpd/moodle_3ooe/moodle_3ooe/cms/core/class/head.class.php on line 51

Je comprend pas vraiment

Re: Problème extraction données bdd

par mineyou » 20 déc. 2016, 01:02

C'est bon ca fonction mais du coup ca fait planter une autre class je vais essaye de régler le problème =)
Merci

Re: Problème extraction données bdd

par Genova » 20 déc. 2016, 00:53

Il faut que tu passes PDO::FETCH_ASSOC comme paramètre pour qu'il ne te retourne que les valeurs indexées par leur nom.

Tu peux le faire automatiquement pour toutes requêtes si tu fais ça lorsque tu créé ta connexion :
$db = new PDO($req, $dbid, $dbmdp);
$db ->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
http://php.net/manual/fr/pdostatement.fetch.php

Problème extraction données bdd

par mineyou » 20 déc. 2016, 00:49

Bonjour,
Je me suis aventurée dans la POO en PHP, j'ai donc créer des classes pour gérer les bdd, mais je viens de me rendre compte que lorsque je récupère des données il me les envoie en deux fois cet-à dire qu'au lieu de faire un array

array(2) { ["id"]=> string(1) "1" ["page"]=> string(7) "accueil" }

il va me faire :

array(4) {["id"]=>string(1)"1" [0]=>string(1)"1" ["page"]=> string(7) "accueil" [1]=> string(7) "accueil"}

Il double le nombre de données je ne comprend pas pourquoi voici le code :

class db
{
public static function query($req)
 	{
 				
 		$db = dbconnect::getdb();
 		
 		$q = $db->query($req);
 		
 		$donnees = $q->fetch();
 			
 		$reponse[] = $donnees;
 		 		
 		return $donnees;
 		
 	}
}


Et voici le fichier qui appel
$req = "SELECT * FROM page WHERE page='accueil'";

$donnees = db::query($req);

Voici la classe dbconnect:
class dbconnect
 {
 	

 	
 	private static function setdb()
 	{

          //== Récupération des données dans un fichier texte ==
	 	$data = data::get('sql.txt');
	 
         //== Transformation du tableau en plusieurs variables
	 	$dbhost = trim($data[0]);
	 	$dbname = rtrim($data[1]);
	 	$dbid = rtrim($data[2]);
	 	$dbmdp = rtrim($data[3]);
	 	
	 	
	 	
 	//== Assemblage requete de connexion à la base de données ==
 		$req = 'mysql:host='.$dbhost.';dbname='.$dbname;
 		
 	//== Procédure de connexion à la base de données ==
		try
		{
			$db = new PDO($req,$dbid,$dbmdp);
		}
		catch (Exception $e)
		{
		        die('Erreur : ' . $e->getMessage());
		}
		
	//== Renvoie de la variable $db ==
 		return $db;
 	}
 	
 	public static function getdb()
 	{
         //== Appel fonction statique de connexion à la db
 		$db = self::setdb();
 	//== Renvoie de $db
 		return $db;
 	}
}


Merci de votre aide