Echec de fonction préparé

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 : Echec de fonction préparé

Re: Echec de fonction préparé

par moogli » 19 mai 2011, 14:02

Salut,

La ligne 20 était indiqué en fait, c'est celle-ci :
$newsPrepare = $this->bdd->prepare('INSERT INTO actu (title, picture, content, nbr_comment, act_date) VALUES (:title, :picture, :content, :nbr_comment, NOW())');
Désolé si ce n'était pas clair.

mwé dans ce que tu a mis sur le forum c'est la ligne 10 ....

@+

Re: Echec de fonction préparé

par mauvais » 19 mai 2011, 13:30

Oups, en fait j'ai trouvé mon erreur d'inatention...
J'ai indiqué $db = ('SET NAMES utf8'); au lieu de $db->exec('SET NAMES utf8);

Bon bas désolé pour le dérangement hein :?
... tout ça pour ça.

Re: Echec de fonction préparé

par mauvais » 19 mai 2011, 13:24

Salut,

La ligne 20 était indiqué en fait, c'est celle-ci :
$newsPrepare = $this->bdd->prepare('INSERT INTO actu (title, picture, content, nbr_comment, act_date) VALUES (:title, :picture, :content, :nbr_comment, NOW())');
Désolé si ce n'était pas clair.

Re: Echec de fonction préparé

par moogli » 19 mai 2011, 13:22

salut,

tu peux mettre le code complet parce que la y a pas de ligne 20 ;)

sinon tu demande une méthode qui n'existe pas, ce qui est vrai puisse que $bb n'est pas une méthode mais une variable membre ;)


@+

Echec de fonction préparé

par mauvais » 19 mai 2011, 13:14

Bonjour,

J'ai une erreur concernant un simple envoi de données en db.
J'uilise cette même base et cette même table pour d'autres test et ça fonctionne très bien.
Là, je ne comprends pas vraiment d'où peut provenir l'erreur, si vous avez un idée...

Fatal error: Call to undefined method BaseNews::bdd() in blah blah blah\lib\BaseNews.class.php on line 20

Page news_manager.php
<?php
session_start();
function chargClass($class) { require 'lib/'.$class.'.class.php'; } spl_autoload_register('chargClass');
?>
<! DOCTYPE html>
<!-- le blah blah html -->
<div div="infoAddForm">
            <?php
			try {
				$bdd = BDD::OPENBDD();
				$bdd = ('SET NAMES utf8');
				$news = new BaseNews($bdd);
				if(isset($_POST['newsPreview']) || isset($_POST['newsSave'])) {
					if(isset($_POST['newsPreview'])) { $subState = 1; }
					if(isset($_POST['newsSave'])) { $subState = 2; }
					$check = new Check();
					$check->checkInputText($_POST['title'], 3, 50, 'titre');
					$title = $check->getInputText();
					if($title != '0') {
						$check->checkInputContent($_POST['content'], 10, 2000, 'contenu');
						$content = $check->getInputContent();
						if($content != '0') {
							$check->checkFilePicture($_FILES['picture'], Check::SIZE_MIDDLE, '../newsImage/', 'une illustration');
							$picture = $check->getFilePicture();
							if($picture != '0') {
								if($subState == 1) {
									$news->viewNews($title, $content, $picture);
								}
								else {
									$news->addNews($title, $content, $picture); // C'EST LÀ QUE J'APPEL LA CLASSE QUI POSE PROBLÈME
								}
							}
						}
					}
				}
			}
			catch(Exception $e) { die('blah blah blah.'.$e->getMessage()); }
			?>
        </div>
Ma classe BaseNews.class.php dans le dossier lib/
<?php
    class BaseNews
	{
		protected $bdd;
		public function __construct($bdd) {
			$this->bdd = $bdd;
		}
		public function addNews($title, $content, $picture) {
                        // LA LIGNE EN RAPPORT AVEC L'ERREUR
			$newsPrepare = $this->bdd->prepare('INSERT INTO actu (title, picture, content, nbr_comment, act_date) VALUES (:title, :picture, :content, :nbr_comment, NOW())');
			$newsArray = $newsPrepare->execute(array(
			':title' => $title,
			':content' => $content,
			':picture' => $picture,
			':nbr_comment' => 0
			));
			echo '<span class="correct">L\'actualité a bien été ajouté au site.</span>';
		}
Ma classe BDD.class.php dans le dossier lib/
<?php
    class BDD
	{
		public static function OPENBDD() {
			$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
			$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
			return $bdd;
		}
	}
Merci par avance