PHP Wer kann den Fehler suchen und ihn beheben?

borklaser

Cadet 3rd Year
Registriert
Dez. 2013
Beiträge
39
Hey,
habe jetzt endlich ne Tabelle mit Sortieren hinbekommen. Nun habe ich noch mit einem Tut zur Hilfe eine Suchfunktion eingebaut die die Tabelle durchsucht und die Ergebnisse in einer Tabelle auch mit Auf & Absortieren anzeigt. Also die Normale tabelle mit auf & ab sortieren funtioniert das suchfeld ist auch da ABER wenn ich iwas eingebe und suche kommt diese Melung:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE ppvname = 'test' OR datum = 'test' OR art = 'test' OR buyrate = '' at line 1

Kann jemand den Fehler finden & beheben? Habe echt keine Ahnung was das bedeutet und was ich falsch gemacht habe und wie ich es richtig machen muss..
Hier der Code:

Code:
<?php



include "connection.php";

if ( isset ( $_GET['order_var'] ) )
{
        $order_var = $_GET['order_var'];

        switch ( $order_var )
        {
                case 'ppvname_asc':
                        $order_var = "ppvname ASC";
                        break;
                case 'ppvname_dsc':
                        $order_var = "ppvname DESC";
                        break;
                case 'datum_asc':
                        $order_var = "datum ASC";
                        break;
                case 'datum_dsc':
                        $order_var = "datum DESC";
                        break;
                case 'art_asc':
                        $order_var = "art ASC";
                        break;
                case 'art_dsc':
                        $order_var = "art DESC";
                        break;
                case 'buyrate_asc':
                        $order_var = "buyrate ASC";
                        break;
                case 'buyrate_dsc':
                        $order_var = "buyrate DESC";
                        break;

                case 'matches_asc':
                        $order_var = "matches ASC";
                        break;
                case 'matches_dsc':
                        $order_var = "matches DESC";
                        break;
        }
}
else
{
        $order_var = "ppvname ASC";
}




$sql = "SELECT * FROM PPVs ORDER BY $order_var ";

if (isset($_POST['search'])) {
    $search_term = mysql_real_escape_string($_POST['search_box']);
    $sql .= "WHERE ppvname = '{$search_term}' ";
    $sql .= " OR datum   = '{$search_term}' ";
    $sql .= " OR art   = '{$search_term}' ";
    $sql .= " OR buyrate   = '{$search_term}' ";
    $sql .= " OR matches   = '{$search_term}' ";

}


$query = mysql_query($sql) or die(mysql_error());


$ppvname_var = "ppvname_asc";
$datum_var = "datum_asc";
$art_var = "art_asc";
$buyrate_var = "buyrate_asc";
$matches_var = "matches_asc";

if ( $order_var == "ppvname ASC" )
{
        $ppvname_var = "ppvname_dsc";
}
else if ( $order_var == "ppvname DESC" )
{
        $ppvname_var = "ppvname_asc";
}

if ( $order_var == "datum ASC" )
{
        $datum_var = "datum_dsc";
}
else if ( $order_var == "datum DESC" )
{
        $datum_var = "datum_asc";
}

if ( $order_var == "art ASC" )
{
        $art_var = "art_dsc";
}
else if ( $order_var == "art DESC" )
{
        $art_var = "art_asc";
}

if ( $order_var == "buyrate ASC" )
{
        $buyrate_var = "buyrate_dsc";
}
else if ( $order_var == "buyrate DESC" )
{
        $buyrate_var = "buyrate_asc";
}

if ( $order_var == "matches ASC" )
{
        $matches_var = "matches_dsc";
}
else if ( $order_var == "matches DESC" )
{
        $matches_var = "matches_asc";
}




?>
<form name="search_form" method="POST" action="display_data.php">
Search: <input type="text" name="search_box" value="" />
<input type="submit" name="search" value="Suchen"/>

</form>
<table width="70%" cellpadding="5" cellspacing="5">
<tr>

<td>Veranstaltung <a href="display_data.php?order_var=ppvname_asc">▼</a> <a href="display_data.php?order_var=ppvname_dsc">▲</a></td>
<td>Datum <a href="display_data.php?order_var=datum_asc">▼</a> <a href="display_data.php?order_var=datum_dsc">▲</a></td>
<td>Art <a href="display_data.php?order_var=art_asc">▼</a> <a href="display_data.php?order_var=art_dsc">▲</a></td>
<td>Buyrate <a href="display_data.php?order_var=buyrate_asc">▼</a> <a href="display_data.php?order_var=buyrate_dsc">▲</a></td>
<td>Matches <a href="display_data.php?order_var=matches_asc">▼</a> <a href="display_data.php?order_var=matches_dsc">▲</a></td>

</tr>

<?php while ($row = mysql_fetch_array($query)) { ?>

<tr>

<td><?php echo $row['ppvname']; ?></td>
<td><?php echo $row['datum']; ?></td>
<td><?php echo $row['art']; ?></td>
<td><?php echo $row['buyrate']; ?></td>
<td><?php echo $row['matches']; ?></td>

</tr>


<?php } ?>

</table><?php





?>
Hoffe jemand kann mir helfen :)
 
Mach' dich mal schlau, wie man SQL-Queries aufbaut. Speziell in welcher Reihenfolge SELECT, FROM, WHERE und ORDER BY kommen müssen.
 
Hab gesucht finde wenig und wenn ich was finde verstehe ich das auch nicht. Habe das Select nach dem WHERE gemacht und dann passierte beim suchen nix, aber kam keine fehlermeldung mehr..
 
Darlis meint die richtige Reihenfolge!
Du machst select, from, order by, where.
 
Ah ok also das Order by nach dem where machen... aber wie baue ich das ein, habe bisschen versucht aber nur fehelrmeldungen :( echt keine ahung.
 
man also echt! Man sollte bisschen was von DB verstehen und vom programmieren auch.

DU hast auch keinen Default Wert für deinen Order By drinne. Und anstatt vieles OR's kannst du dir einen Fulltext Key bauen lassen.

Code:
$sql = "SELECT * FROM PPVs ";
 
if (isset($_POST['search'])) {
$search_term = mysql_real_escape_string($_POST['search_box']);
$sql .= "WHERE ppvname = '{$search_term}' ";
$sql .= " OR datum = '{$search_term}' ";
$sql .= " OR art = '{$search_term}' ";
$sql .= " OR buyrate = '{$search_term}' ";
$sql .= " OR matches = '{$search_term}' ";
 
}

$sql.=" ORDER BY $order_var ";

printe dir den sql befehl und versuche es direkt auf der DB auszuführen. Dann siehst du den Fehler schneller.
 
roker002 schrieb:
überflüssiges Zitat entfernt *klick*

DANKE!!!! :)

Sry bin echt ein totaler anfänger habe das mit 2 tuts gemacht und dann beide codes iwie zusammen bekommen und dann kam halt der fehler.
 
Zuletzt bearbeitet von einem Moderator: (Fullquote entfernt.)
borklaser schrieb:
DANKE!!!! :)

Sry bin echt ein totaler anfänger habe das mit 2 tuts gemacht und dann beide codes iwie zusammen bekommen und dann kam halt der fehler.

Dafür brauchst du dich nicht entschuldigen. Das ist die übliche Vorgehensweise von 87% aller PHP-Entwickler :3
 
Ähm habe noch mal eine Frage dazu. Also die Suche geht ja jetzt gut. Nur Ich muss das genaue Wort eingeben damit ich ergebnisse bekomme. Also in der DB steht Eisbecher und ich suche nach Eis dann kommt nix. Wil aber wenn ich Eis, Becher, Ei usw eingebe das denn Eisbecher kommt. Ich habe mit mal ein paar tut angesehen und da steht überall ein %...% denke damit wird das gemacht nun habe ich an die verschiedensten Stellen die % eingebaut aber klappt nicht. Kann mir jemand kurz die zewi % an die richtige Stelle setzten? Fals das mit % geht..
Code:
    $sql = "SELECT * FROM PPVs ";
    if (isset($_POST['search'])) {
    $search_term = mysql_real_escape_string($_POST['search_box']);
    $sql .= "WHERE ppvname = '{$search_term}' ";
    $sql .= " OR datum = '{$search_term}' ";
    $sql .= " OR art = '{$search_term}' ";
    $sql .= " OR buyrate = '{$search_term}' ";
    $sql .= " OR matches = '{$search_term}' ";
    }

    $sql.=" ORDER BY $order_var ";
 
Zurück
Oben