2010-08-09 5 views
1

J'essaie de créer un plugin pour Wordpress qui permet à l'utilisateur d'entrer un titre dans une zone de texte. L'utilisateur clique ensuite sur 'soumettre' et ce titre est pris et ajouté à la base de données. Cependant actuellement lorsque vous appuyez sur Envoy, il renvoie une erreur PHP:fonction query() sur une erreur non-objet

Fatal error: Call to a member function query() on a non-object in /home/matthew/public_html/demo/wp-content/plugins/premium-slider/admin.php on line 49

ligne 49 est le code suivant:

$wpdb->query($sql); 

Cependant cela est parfaitement code valide selon les tutoriels de Wordpress.

Voici le segment de code global:

function print_admin_form() { 
if (isset($_POST['addnew'])) { 

$new = $_REQUEST['name']; 

$name = escape($new); 

    $sql = "INSERT INTO $table_name_cat (name) VALUES('$new')"; 
    $wpdb->query($sql); 
    echo $name; } 
else { 
    echo '<div id="message" class="error" style="width:750px;"><p><strong>Failed to add new slider.</strong></p></div>'; }?> 

<div class="wrap"> 
<h2>Easing Slider</h2> 
<form method="post" action="<?php echo str_replace('%7E', '~', $_SERVER['REQUEST_URI']); ?>&updated=true"> 
    <div class="metabox-holder" style="width:402px;float:left;"> 
    <div class="postbox"> 
     <h3><span>Slider title:</span></h3> 
     <h4 style="margin:10px;">Name:</h4><input type="text" name="name" style="width: 380px;margin:10px;margin-top:0px;"/> 
    </div> 
</div> 
<input type="submit" class="button-primary" name="addnew" value="Save Changes" style="" /> 
</form> 
</div> <?php } 
+0

Veuillez lire le guide de formatage la prochaine fois. Merci. – strager

+1

Je ne vois pas '$ wpdb' défini n'importe où. – Artefacto

+1

quelle est la portée de $ wpdb? où est-il initialisé? – darma

Répondre

2

essayer:

global $wpdb; 

en première ligne de votre fonction print_admin_form.

+0

Yup. Cela activera la fonction de requête pour cette classe. – Anraiki