I want to retrieve data from custom table, that I've made inside the wordpress database and display it in a wordpress page , like posts
Thanks in advance
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It only takes a minute to sign up.
Sign up to join this communityHere is an example code that will get the data and then display it:
global $wpdb;
// this adds the prefix which is set by the user upon instillation of wordpress
$table_name = $wpdb->prefix . "your_table_name";
// this will get the data from your table
$retrieve_data = $wpdb->get_results( "SELECT * FROM $table_name" );
?>
<ul>
foreach ($retrieve_data as $retrieved_data){ ?>
<li><?php echo $retrieved_data->column_name;?></li>
<li><?php echo $retrieved_data->another_column_name;?></li>
<li><?php echo $retrieved_data->as_many_columns_as_you_have;?></li>
<?php
}
?>
</ul>
<?php
It's good practice to use unique names for variables and functions, so you may want to add a unique prefix to all your variables or functions IE: ($prefix_table_name where "prefix" would be something unique such as the abbreviation of your theme or plugin.)
Reference - wpdb - codex
Please try this code for display all the records from database in wordpress. For this firstly need to create a file.php inside your selected wordpress folder and then use this file as a template. And this code will work perfectly Thank you all.
<?php /* Template Name: your template name */ ?>
<?php get_header(); ?>
<table border="1">
<tr>
<th>ID</th>
<th>FULL NAME</th>
<th>BRANCH NAME</th>
<th>E-MAIL ID</th>
<th>Mobile Number</th>
<th>Course</th>
<th>Address</th>
<th>City</th>
<th>Zip Code</th>
</tr>
<?php
global $wpdb;
$result = $wpdb->get_results( "SELECT * FROM wp_example");
foreach ( $result as $print ) { ?>
<tr>
<td> <?php echo $print->id; ?> </td>
<td><?php echo $print->firstname; ?> </td>
<td> <?php echo $print->branch ; ?> </td>
<td> <?php echo $print->email; ?> </td>
<td><?php echo $print->mobile; ?> </td>
<td> <?php echo $print->course; ?> </td>
<td> <?php echo $print->address; ?> </td>
<td><?php echo $print->city; ?> </td>
<td> <?php echo $print->zip ; ?> </td>
</tr>
<?php }
?>
</table>
<?php get_header(); ?>
Sounds like you're looking for $wpdb
. You'll need to write all your own functions and such. I strongly recommend sticking to the established naming conventions (stuff like the_blah
and get_blah
, maybe with a prefix) for ease of readability and for consistency.
Modification of @Kirill Fuchs's answer. If you use this code on shortcode this may create a problem. It may display the outputs in wrong order. To avoid the I used return instead of echo. Try to do this on shortcode this way:
add_shortcode('custom_db', function(){
global $wpdb;
$table_name = $wpdb->prefix . 'liveshoutbox';
// this will get the data from your table
$retrieve_data = $wpdb->get_results( "SELECT * FROM $table_name" );
foreach ($retrieve_data as $retrieved_data){
$f_name = $retrieved_data->column_name;
$f_text = $retrieved_data->another_column_name;
}
$output = '<div class="wrap">
<h2>Table of clients.</h2>
<table>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Email</th>
</tr>
<tr>
<td>'. $f_name .'</td>
<td>'. $f_text .'</td>
</tr>
</table>
</div>';
return $output;
} );