2010-10-08 5 views
0

J'ai un script php que j'ai mis en place des exemples sur Internet.PHP Récupération Valeur de MySql Erreur

Je ne suis pas très familier avec php et je me fais une erreur.

Je suis en train d'obtenir la dernière date de publication de mon blog Wordpress pour mon programme pour montrer quand la dernière date à laquelle nous avons mis des informations importantes pour l'utilisateur sur elle.

Ceci est mon code:

<?php 

    function lpd_post_date($date_format, $echo, $modified_date = false) 
    {   

     $dbhost = 'xxx'; 
     $dbuser = 'xxx'; 
     $dbpass = 'xxx'; 
     $dbname = 'xxx'; 

     $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql'); 
     mysql_select_db($dbname); 

     // include 'config.php'; 
     // include 'opendb.php'; 

     global $wpdb; 
     $date_col = 'post_date'; 
     if ($modified_date) $date_col = 'post_modified'; 
     $sql = " SELECT $date_col FROM {$wpdb->posts} WHERE post_status = 'publish' AND post_type = 'post' ORDER BY $date_col DESC LIMIT 1 "; 
     $mysql_date = $wpdb->get_var($sql); 
     if (! $date_format) $date_format = get_option('date_format'); 
     $formatted_date = mysql2date($date_format, $mysql_date); 
     echo $formatted_date;   

     mysql_close($conn); 

    } 
?> 

Je reçois cette erreur:

Fatal error: Call to a member function on a non-object in /homepages/38/d157689362/htdocs/suburban/updates/last/last.php on line 21

Toute personne capable de me aider? Je suis perdu quant à ce qu'il fait à la ligne 21:

$mysql_date = $wpdb->get_var($sql);

Toute aide serait grandement appréciée!

Merci!

Répondre

0

Cette erreur est en effet parce que wpdb $ est pas défini.

Vous feriez mieux de mettre ce code dans le fichier WordPress functions.php que WP crée pour votre thème actif (qui se trouve dans 'wp-content/themes/nom_theme_actif/functions.php' - le thème par défaut est 'default' si Je me souviens correctement). wpdb $ est déjà défini dans ce fichier et le code que vous avez écrit doit y travailler (prendre le <?php et ?> et vient de mettre la fonction dans le fichier quelque part avec les autres). Vous pouvez ensuite appeler la fonction que vous avez créé soit par:

  1. Mettre include_once('_path_to_active_theme/functions.php'); en haut de votre script, puis appeler la fonction dans votre nouveau fichier php:

    $ return_value = lpd_post_date (date_format de $, $ echo, $ modified_date);

    // Faites ce que nous devons faire avec return_value

  2. $ Appelez la fonction dans votre thème code interface utilisateur - si bien sûr vous essayez de mettre la valeur lpd_post_date valeur de retour dans votre interface utilisateur quelque part

Ce qui suit peut aider:

http://wordpress.org/support/topic/get_var-on-a-non-object-wpdb http://codex.wordpress.org/Theme_Development#Functions_File

Ce serait certainement une bonne idée de lire l'intégralité de ce 2ème lien Theme_Development si ce n'est déjà fait.

+1

si j'avais vu cela avant que je fixe mon problème, j'aurais probablement pris cette direction puisqu'elle s'intégrera au blog mais j'ai trouvé ma réponse en la simplifiant. Merci pour l'info. – ErocM

1

Vous utilisez la variable globale $wpdb qui devrait être une instance d'une classe, mais quand vous l'utilisez, il est défini. $wpdb doit être instancié avant d'appeler la fonction lpd_post_date. Vous instancier $wpdb avec quelque chose comme ceci:

$wpdb = new myClass(); //myClass is the class name of your class 
+0

Ouais, je vois que maintenant.Je l'ai simplifié beaucoup et supprimé toutes les références à des éléments que je n'avais aucune idée. Cela fonctionne beaucoup mieux quand j'essaie les bases ligne par ligne et ne pas obtenir une réponse complète de l'internet ... – ErocM