1
votes

I can't style an echo in PHP with css. No matter what I do, it doesn't work. The php function is a search bar that will echo results from a mysql database. Here's the CSS:

.php {
font-family: montserrat, sans-serif;
font-style: normal;
font-weight: 200;
text-align: justify;
color: rgba(200,200,200,1.00);
}

PHP:

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body>
<form  method="GET" action="index.php"  id="searchform"> 
<input  type="text" name="query" placeholder="Enter keyword..."> 
<input  style="width:30%;height:24px;" type="submit" name="submit" value="Search">
</form>
<?php

$hostname = "localhost";
$username = "user123";
$password = "pass123";

mysql_connect($hostname, $username, $password);
mysql_select_db("tehdatabase") or die(mysql_error());

$query = $_GET['query']; 
// gets value sent over search form

$min_length = 1;
// you can set minimum length of the query if you want

if(strlen($query) >= $min_length){ // if query length is more or equal minimum length then

    $query = htmlspecialchars($query); 
    // changes characters used in html to their equivalents, for example: < to &gt;

    $query = mysql_real_escape_string($query);
    // makes sure nobody uses SQL injection

    $raw_results = mysql_query("SELECT * FROM env
        WHERE (`id` LIKE '%".$query."%') OR (`name` LIKE '%".$query."%') OR (`short` LIKE '%".$query."%') OR (`short_withtag` LIKE '%".$query."%')") or die(mysql_error());

    // * means that it selects all fields, you can also write: `id`, `title`, `text`
    // articles is the name of our table

    // '%$query%' is what we're looking for, % means anything, for example if $query is Hello
    // it will match "hello", "Hello man", "gogohello", if you want exact match use `title`='$query'
    // or if you want to match just full word so "gogohello" is out use '% $query %' ...OR ... '$query %' ... OR ... '% $query'

    if(mysql_num_rows($raw_results) > 0){ // if one or more rows are returned do following

        while($results = mysql_fetch_array($raw_results)){
        // $results = mysql_fetch_array($raw_results) puts data from database into array, while it's valid it does the loop

            echo "<p><h3>".$results['id']."</h3>".$results['name'].$results['short'].$results['short_withtag']."</p>";
            // posts results gotten from database(title and text) you can also show id ($results['id'])
        }

    }
    else{ // if there is no matching rows do following
        echo "No results";
    }

}
else{ // if query length is less than minimum
    echo "Please enter at least one character";
}
?>
<div class="php">
<?php
echo("$output");
?>
</div>
</body>
</html>

I found this on the internet, and it works perfectly, except for one thing. The div class php that is supposed to style the output is not working. the echo is black, times new roman text. How do I get around this?

1
You don't "style a PHP echo". Styling happens entirely client-side. What is the simple minimal resulting HTML here? - David
As David said, your PHP code has nothing to do with this. Either whatever it is returning is overriding your CSS style or you're missing something in the markup - TheValyreanGroup

1 Answers

2
votes

You're not echoing anything in the div.php block. $output is never defined in your code. You echo plenty of times before the div.php block.

It seems to me you want to define, or append, $output instead of echo in the various sections like:

echo "No results";

Or just put the <div class="php"> before the PHP block so the echoes will be inside of it.