[RESOLU] Call to a member function prepare()

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] Call to a member function prepare()

Re: Call to a member function prepare()

par yoann38 » 29 juin 2015, 07:27

Il est vraie que c'est mieux avec l'include de la bdd, dsl encore ;)

Re: Call to a member function prepare()

par @rthur » 28 juin 2015, 22:36

Et $bdd, il est initialisé où ?

Re: Call to a member function prepare()

par yoann38 » 27 juin 2015, 08:01

bonjour,
je voulez vous rapelez que tt marche en local mais pas en ligne c'est quans meme fou quoi ...
donc le code :

la page donwload.php ( c'est celle qui merde quand on l'appel)
<?php
     
    include("include/variables.php");

    /* For the following details, ask your server vendor  */
	if(strstr($_SERVER['HTTP_HOST'], '127.0.0.1')) {
		$dbhost = "localhost";
		$dbuser = "root";
		$dbpass = "";
		$dbname = "lasortie1";
	}else {
		$dbhost = "******";
		$dbuser = "******";
		$dbpass = "******";
		$dbname = "******";
	}
    mysql_connect( $dbhost, $dbuser, $dbpass ) or die ( "Unable to connect to MySQL server" );
    mysql_select_db( $dbname ) or die ('Echec');
    mysql_query( "SET NAMES utf8" ); 

// meme si je deplace  include("include/variables.php"); ici ca merde pareil, ca ne change strictement rien ....

	
      
    $flux = simplexml_load_file('lasortie/zxpd_201506240433_3467_31592008.xml'); // Source du flux.xml
	
	set_time_limit(20);
	
	// $aLoisirs = array (1 => 'Restaurant', 2 => 'Discothèque', 3 => 'Bar/Pub', 4 => 'Videgrenier/Brocante', 5 => 'Marché', 6 => 'Sport', 7 => 'Loto', 13 => 'Exposition', 10 => 'Divers', 10 => 'Concert', 11 => 'Spectacle', 12 => 'Rencontre', 13 => 'Excursion/Visite', 14 => 'Bal/Festival', 15 => 'Théatre', 16 => 'Classique', 17 => 'Salons et foires',  18 => 'Cinéma', 20 => 'Coffrets cadeau'  );
     
	 
	
	 
    $type  = array(     
            			 // Coffret cadeau
                         'CCA|Carte cadeau' => 20, 'COB|Coffrets Bien-être' => 20, 'COS|Coffrets Séjours' => 20, 'COG|Coffrets Gastronomie' => 20, 'COA|Coffrets Activités' => 20,
                         'COE|Coffrets Enfants' => 20, 'CHM|Coffrets Homme' => 20, 'COS|Coffrets Femme' => 20, ' CPS|Coffrets Sport/Pilotage' => 20, ' CAO|Coffrets Originaux/Atypiques' => 20,
                         'CMT|Coffrets Multithématiques' => 20, 'CLU|Coffrets luxe' => 20, 'CDI|Coffrets divers' => 20,
                          
                         // Cinéma
                         'FIL|Film' => 18, 'ACI|Abonnement/Pass cinéma' => 18, 'ACT|Action' => 18, 'ANI|Animation' => 18, 'ARM|Arts martiaux' => 18, 'AVE|Aventure' => 18, 'AVP|Avant-première' => 18, 'BIO|Biopic' => 18, 'BOL|Bollywood' => 18, 'CIC|Ciné-concert' => 18,
                         'CIE|Cinéma jeune public' => 18, 'CLA|Classique' => 18, 'COD|Comédie dramatique' => 18, 'COM|Comédie' => 18, 'DEA|Dessin animé' => 18, 'DIV|Divers' => 18, 'DOC|Documentaire' => 18, 'DRA|Drame' => 18, 'EPO|Epouvante-horreur' => 18, 'ERO|Erotique' => 18,
                         'ESP|Espionnage' => 18, 'FAN|Fantastique ' => 18, 'FCE|Comédie érotique' => 18, 'FFA|Famille' => 18, 'GUE|Guerre' => 18, 'HIS|Historique' => 18, 'JUD|Judiciaire' => 18, 'MED|Médical' => 18, 'MOB|Mobisode' => 18, 'MUS|Musical' => 18,
                         'NUI|Nuit à thème (cinéma)' => 18, 'PEP|Péplum' => 18,  'POL|Policier' => 18, 'ROM|Romance' => 18, 'SCF|Science fiction' => 18, 'SOA|Soap' => 18, 'THR|Thriller' => 18,
                         'WEB|Web série' => 18, 'WES|Western' => 18, '131F|Cinéma' => 18,  '13CI|Cinéma' => 18, 'ROC|Retransmission Opéra/Concert ;' => 18, '81F|Cinéma' => 18, '8CI|Cinéma' => 18,
                        );
 
     
	
	                       
    foreach ($flux->product as $item) {
		

  
    $titre = addslashes($item->name);
    $price = $item->price;
    $url_fnac = $item->deepLink;
    $date_debut_sortie = $item->validFrom;
    $date_fin_sortie = $item->validTo;
    $street = addslashes($item->terms);
    $photo = $item->largeImage;
    $genre = $item->merchantCategoryPath;
	//$seance = $item->longDescription; // date + heure
	$description = 'Une sortie proposé par notre parnetaire Fnac, trouvez la sortie du moment qui vous correspond, <a class="lien" href="'.$url_fnac.'">découvrez le descriptif complet.</a> ';
	
	
	
    // On fait un explode afin de récupérer ce qu'il nous interesse
    $postcode  = addslashes($item->extra2);
    $pieces = explode(" | ", $postcode);
	
	/*$program_manif  = addslashes($item->longDescription);
    $manif_time = explode(" ", $program_manif);
	echo substr($manif_time[1], 0, 5).'<br>';*/
 
    // On attribut le département en fonction des 2 premiers chiffre du code postal
    $departement = substr($postcode, 0, 2);
     
    $region = regionIdByDepartement($departement);
     
    // Attribution de la valeur id 1010 pour la fnac
    $id_simply_user = '999';
     
    // On valide la sortie par default
    $valide = '1';
	
	
	foreach (explode(' ; ', /*(string)*/ $item->merchantCategoryPath) as $subtype) {
	$id_type_loisirs = $type[$subtype];
	
	}  
	
	
	$result = mysql_query("SELECT id_loisirs FROM loisirs WHERE titre = ".$titre.", city = ".$pieces[2].", postcode = ".$pieces[1].", date_debut_sortie = ".$date_debut_sortie.", date_fin_sortie = ".$date_fin_sortie."");
	if(mysql_num_rows($result) == 1){
		
	echo 'Cette entrée existe déjà';
	
	}else{
		
	 $sql = "INSERT INTO `matable` (id_simply_user,titre,price,photo,url_fnac,date_debut_sortie,date_fin_sortie,description,street,postcode,city,id_region,id_departements,id_type_loisirs,valide) VALUES ('$id_simply_user','$titre','$price','$photo','$url_fnac','$date_debut_sortie','$date_fin_sortie','$description','$street','$pieces[0]','$pieces[1]','$region','$departement','$id_type_loisirs','$valide')";
  $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  echo 'Insertion en bdd';
	}
	}
?>
et partie include/variables.php ( a pas grand chose a voir mais bon ... )
<?php
       // .... Début de la page
	// Identification en cas de cookie existant
	if(empty($_SESSION['membre']) && empty($_POST) && !empty($_COOKIE['identification'])) {
	  $unserialize = unserialize($_COOKIE['identification']);
	  $message = authentificationPro($unserialize[0], $unserialize[1]); //appel de la fonction d'authentification
	}
	
	

	$jour = array('1'=>'Lundi', '2'=>'Mardi', '3'=>'Mercredi', '4'=>'Jeudi', '5'=>'Vendredi', '6'=>'Samedi', '7'=>'Dimanche');
	$mois = array('1'=>'Janvier', '2'=>'Février', '3'=>'Mars', '4'=>'Avril', '5'=>'Mai', '6'=>'Juin', '7'=>'Juillet', '8'=>'Août', '9'=>'Septembre', '10'=>'Octobre', '11'=>'Novembre', '12'=>'Décembre');

	$aLoisirs = array (1 => 'Restaurant', 2 => 'Discothèque', 3 => 'Bar/Pub', 4 => 'Videgrenier/Brocante', 5 => 'Marché', 6 => 'Sport', 7 => 'Loto', 8 => 'Exposition', 9 => 'Divers', 10 => 'Concert', 11 => 'Spectacle', 12 => 'Rencontre', 13 => 'Excursion/Visite', 14 => 'Bal/Festival', 15 => 'Théatre', 16 => 'Classique', 17 => 'Salons et foires',  18 => 'Cinéma' );

	$aPays = array(1 => 'France');
	
	$aRegion = array(1 => 'Alsace', 2 => 'Aquitaine', 3 => 'Auvergne', 4 => 'Basse-Normandie', 5 => 'Bourgogne', 6 => 'Bretagne', 7 => 'Centre',  8=> 'Champagne-Ardenne', 9 => 'Corse', 10 => 'Franche-Comté', 11 => 'Haute-Normandie', 12 => 'Ile-de-France', 13 => 'Languedoc-Roussillon', 14 => 'Limousin', 15 => 'Lorraine', 16 => 'Midi-Pyrénées', 17 => 'Nord-Pas-de-Calais', 18 => 'Pays de la Loire', 19 => 'Picardie', 20 => 'Poitou-Charentes', 21 => 'Provence-Alpes-Côte-d-Azur', 22 => 'Rhône-Alpes', 23 => 'Outre-Mer');
	
	// .... Suite et fin de la page
Merci à vous :wink:

Re: Call to a member function prepare()

par tof73 » 26 juin 2015, 22:56

le message d'erreur indique que $bdd ne contient pas ce qu'il doit contenir à cet endroit.
la connexion à la base de donnée a bien été ouverte avant l'appel de cette fonction, et affectée à $bdd ?

Re: Call to a member function prepare()

par yoann38 » 26 juin 2015, 22:13

Je cherche le problème car ca marche très bien en local mais pas en ligne ....
Voici les lignes quand même en question du fichier appelé:
/*
vérifie l'existence de l'utilisateur à partir
de son login et son mot de passe
*/
function authentificationPro($pseudo, $password){
	
  global $bdd;

	$return = NULL;
	
  // Vérification des identifiants
// Ligne 139 ci dessous  
$req = $bdd->prepare('SELECT * FROM simply_user WHERE pseudo = :pseudo AND password = :password');
  $req->execute(array(
                        'pseudo' => $pseudo,
                        'password' => $password
			));
						
			
						
  if($req->rowCount() > 0) {
	  
  	$resultat = $req->fetch();
	$_SESSION['membre'] = $resultat;
	$_SESSION['pseudo'] = $resultat['pseudo'];
	$_SESSION['password'] = $resultat['password'];
	$_SESSION['id_region'] = $resultat['id_region']; 
	$_SESSION['type'] = 'client';
	$_SESSION['statut'] = $resultat['statut'];
		
	if(!empty($_POST['remember'])) setcookie('identification', serialize(array($pseudo, $password)), mktime(0, 0, 0, date('m'), date('d'), date('Y')+1), '/');
		
	header('Location: sortie.php');
	
  } else {
     $return = '<div class="alert alert-danger" role="alert"><i class="fa fa-frown-o"></i> Mauvais identifiant ou mot de passe !</div>';

  }
  

  return $return;
 
}
J'ai vu que mon collègue rencontre des problème aussi et a faire part de certains post.
Le problème vient peut etre de :
En local ca marche
$flux = simplexml_load_file('http://localhost/csv/zxpd_201506240433_3467_31592008.xml'); // Source du flux.xml
Et je change par ceci pour passer en ligne et la j'obtiens le fameux message d'erreur.
$flux = simplexml_load_file('lasortie/zxpd_201506240433_3467_31592008.xml'); // Source du flux.xml

Re: Call to a member function prepare()

par @rthur » 26 juin 2015, 21:27

Bonjour,

L'extrait de code que tu nous donnes n'est pas celui qui provoque l'erreur.
Il faut que tu regardes à la ligne 139 et autour (en général nous donner 10 lignes avant et 5 lignes après la ligne concernée permet de comprendre le contexte)

Ce message d'erreur s'affiche quand tu fais appel à une fonction prepare() sur un objet incorrect

Call to a member function prepare()

par yoann38 » 26 juin 2015, 21:19

Salut à tous
J'ai un message d'erreur que je ne comprends pas, le voici:

Fatal error: Call to a member function prepare() on a non-object in /home/users6/l/lasortie/www/include/limit.php on line 139

Le code:
<?php
     
    include("include/limit.php");


    /* For the following details, ask your server vendor  */
	if(strstr($_SERVER['HTTP_HOST'], '127.0.0.1')) {
		$dbhost = "localhost";
		$dbuser = "root";
		$dbpass = "";
		$dbname = "lasortie1";
	}else {
		$dbhost = "*******";
		$dbuser = "*******";
		$dbpass = "*******";
		$dbname = "****************************";
	}
    mysql_connect( $dbhost, $dbuser, $dbpass ) or die ( "Unable to connect to MySQL server" );
    mysql_select_db( $dbname ) or die ('Echec');
    mysql_query( "SET NAMES utf8" ); 

 // ... Suite