Brandrally
Brandrally

Reputation: 851

Using a function to query a database

I have a page and I would really like some help / advice to create a better way / function to call in information from another table.

At the moment, my code looks like: [I do know this is deprecated SQL and would really like to do some nice SQLi for this.]

<?
$menuid = "100";
$imageid = "50";

// ** Talk to 'imagedirectory' table

mysql_select_db($database_db, $BASEdb);
$query_displayimage = "SELECT * FROM imagedirectory WHERE menuid = ".$menuid." AND imageid = ".$imageid."";
$displayimage = mysql_query($query_displayimage, $BASEdb) or die(mysql_error());
$row_displayimage= mysql_fetch_assoc($displayimage);

?>

<img src="/images/assets/<?php echo $menuid; ?>-<?php echo $imageid; ?>-<?php echo $row_displayimage['urlslug']; ?>.jpg" alt="<?php echo $row_displayimage['alttext']; ?>" />

I figure There really has to be a better way because if there is 10 images on a page, this is pretty intense way of doing it.

Upvotes: 0

Views: 62

Answers (1)

pradeepcep
pradeepcep

Reputation: 932

Since you seem to know that mysql_* is deprecated, I am assuming you have read up on, and are using mysqli_* instead.

You needn't query the database every time. mysqli_query() returns a mysqli_result, which you can iterate over, and read using functions like mysqli_fetch_assoc(). Here is one way of doing it:

<?php

// store your query in a variable.
$query_displayimage = "SELECT * FROM imagedirectory";

// query the database.
$displayimage = mysqli_query($query_displayimage, $BASEdb);

// check for errors.
$dbErrors = mysqli_error($BASEdb);
if (count($dbErrors))
{
    print_r($dbErrors);
    die();
}

// iterate over the returned resource.
while ($row_displayimage = mysql_fetch_assoc($displayimage))
{
    echo '<img src="/images/assets/' . $menuid . '-' . $imageid . '-' . $row_displayimage['urlslug'] . '.jpg" alt="' . $row_displayimage['alttext'] . '" />';
}

?>

Hope that helped.


EDIT:

You can use this code in a function, too. For example:

<?php

function printImage($menuid, $imageid)
{
    $query_displayimage = "SELECT * FROM imagedirectory";
    $displayimage = mysqli_query($query_displayimage, $BASEdb);
    $dbErrors = mysqli_error($BASEdb);
    if (count($dbErrors))
    {
        print_r($dbErrors);
        die();
    }
    
    if ($row_displayimage = mysql_fetch_assoc($displayimage))
    {
        echo '<img src="/images/assets/' . $menuid . '-' . $imageid . '-' . $row_displayimage['urlslug'] . '.jpg" alt="' . $row_displayimage['alttext'] . '" />';
    }
    else    // if there is a problem getting the image
    {
        echo 'Error getting image.';
    }
}

?>

and elsewhere in your HTML, you would do something like:

<div>
    And here is an image!
    <?php printImage(20, 50); ?>
</div>

Upvotes: 1

Related Questions