Such Formular geht nicht

EddieG

Erfahrenes Mitglied
hi,
ich wollte ein Such Formular machen womit man z.B. alle Namen die den Buchstaben "R" beinhalten anzeigt.
eine Verbindung zur DB findet statt.
Ich weiß deshalb nicht weiter ich wollte die Daten mit einer While schleife ausgeben.
so schaut das Script aus.
Welches leider nicht Funktioniert.
PHP:
<p>
<h4>Spielersuche</h4>

<?php

 if ( isset($_REQUEST["do"]) && $_REQUEST["do"] == "insert" )
   {
   	    
	$error_msg	=	"";    
	
	if ( $_REQUEST["account"] == "" )
	{
	    $error_msg	=	"Ohne Spielernamen wird das nichts<br>";
	}
	
	if ( $error_msg	== "")
	{
	 

$status	=	mysql_connect("localhost", "root", "");
	    
	    if ( ! $status )
	    {
		    die("Konnte die Datenbank nicht erreichen!");
	    }
		
	    $status	=	mysql_select_db("repasm");
	    
	    if ( ! $status )
	    {
		    die("Konnte die Datenbank nicht &&amp;auml;ndern: " . mysql_error() );
	    }


    $query = mysql_query("SELECT * FROM replaydb WHERE (TeamA LIKE'" . $_REQUEST["%account%"] . "') OR (TeamB LIKE '" . $_REQUEST["%account%"] . "')"); 
	  if ( ! $query )
        {
        die("Die Such Abfrage konnte nicht starten: " . mysql_error() );
        }
        else{
    while ($ds = mysql_fetch_object($query)) 
{
   $id = $ds ->fileID;
  $gewinner = $ds ->TeamB;
  $verlierer = $ds -> TeamA;
  $mapname = $ds ->MapName;
  $dauer = $ds ->Dauer;
  $datum = $ds ->Datum;
  $matchup =$ds ->MatchUp;
  $replay =$ds ->ReplayPfad;
echo "
<tr onmouseover=\"this.style.backgroundColor='#ccc';\" onmouseout=\"this.style.backgroundColor='';\" class=\"1px-rahmen\"><td width='200px' class=\"1px-rahmen\">$gewinner</td> <td width='20px'class=\"1px-rahmen\">Vs.</td> <td width='200px' class=\"1px-rahmen\"> $verlierer </td> <td class=\"1px-rahmen\">$matchup</td> <td class=\"1px-rahmen\">$dauer</td><td class=\"1px-rahmen\">$datum</td><td class=\"1px-rahmen\">$mapname</td><td class=\"1px-rahmen\"><a href=\"Detailsrep.php?path=$replay\">Details</a></td><td class=\"1px-rahmen\"><a href=repasmrep/$replay> Download</a></td>
";
}
}
}
}
?>
<?php
	    if ( $error_msg != "")
	    {
		echo $error_msg;
	    }
		
	?>
<form method="post" action="<?php echo $_REQUEST["PHP_SELF"]; ?>">
  <label>Bitte geben Sie den Spielernamen ein:
  <input type="text" name="account">
  </label>
  	<input type="hidden" name="do" value="insert">
  <input type="submit" name="Suchen" value="Suchen" border="0" />
  <p>
    <label></label><label>

    </label>
  </p>
  </form>
<p>&nbsp;</p>
 
Ich glaube ich hab den Fehler :)

PHP:
$query = mysql_query("SELECT * FROM replaydb WHERE (TeamA LIKE'" . $_REQUEST["%account%"] . "') OR (TeamB LIKE '" .$_REQUEST["%account%"] . "')");

Die % kannst du aber nicht in ein array setzen ;)
Ausserdem müssen die Klammern weg, zumindest kenn ich die nicht :D

PHP:
$query = mysql_query("SELECT * FROM replaydb WHERE TeamA LIKE '%". $_REQUEST["account"]."%' OR TeamB LIKE '%".$_REQUEST["account"]."%')";
So sollte es klappen ;)
 
jetzt kommt

Parse error: syntax error, unexpected ';' in C:\xampp\htdocs\reps\replay\test.php on line 36


das ist die sql zeile
 
Die Zeile ist korrekt. Könntest du mal die vorherigen 5 und die nachfolgenden 5 Zeilen zeigen?
Ich vermute, dass der Felder in der Zeile darüber auftritt.
 
Ansonsten schreib deinen Query-String mal in einen eigenen String und lass ihn dann ausfuehren. Bei mir gibts auch Probleme, wenn ich einen String bastel und direkt ausfuehren lassen.


PHP:
$querystring = "select * from.....";
$query = mysql_query(querystring);

Kann sein, dass der das mit den Arrays in der Abfrage nicht mag. Hatte ich zumindest bei mir als Problem schon des oefteren.

Ansonsten schreib unter die Query:

PHP:
echo "query ok";
exit();

Dann kann man sehen, ob der Fehler bereits an dieser Stelle wartet... Ansonsten halt den Rest des Codes auskommentieren ;) Hat denselben Effekt. Fehlersuche olé :)

Schoenen Feiertag,
Florian
 
das sind ein paar Zeilen über der SQL Anweisung und ein paar Zeilen unterhalb wobei der Code oben schon steht ;)
PHP:
$status	=	mysql_connect("localhost", "root", "111");
	    
	    if ( ! $status )
	    {
		    die("Konnte die Datenbank nicht erreichen!");
	    }
		
	    $status	=	mysql_select_db("repasm");
	    
	    if ( ! $status )
	    {
		    die("Konnte die Datenbank nicht &&auml;ndern: " . mysql_error() );
	    }


 $query = mysql_query("SELECT * FROM replaydb WHERE (TeamA LIKE '%". $_REQUEST["account"]."%') OR (TeamB LIKE '%".$_REQUEST["account"]."%'))";  	  if ( ! $query )
        {
        die("Die Such Abfrage konnte nicht starten: " . mysql_error() );
        }
        else{
    while ($ds = mysql_fetch_object($query)) 
{
   $id = $ds ->fileID;
  $gewinner = $ds ->TeamB;
  $verlierer = $ds -> TeamA;
  $mapname = $ds ->MapName;
  $dauer = $ds ->Dauer;
  $datum = $ds ->Datum;
  $matchup =$ds ->MatchUp;
  $replay =$ds ->ReplayPfad;
echo "bla bla";
}
 
Hatte wohl nicht genau genug hingeschaut.

PHP:
$query = mysql_query("SELECT * FROM replaydb WHERE (TeamA LIKE '%". $_REQUEST["account"]."%') OR (TeamB LIKE '%".$_REQUEST["account"]."%'))";

Du schließt die Klammer der Funktion innerhalb der Anführungszeichen.

PHP:
$query = mysql_query("SELECT * FROM replaydb WHERE (TeamA LIKE '%". $_REQUEST["account"]."%') OR (TeamB LIKE '%".$_REQUEST["account"]."%')");

So sollte es richtig sein.
 
Zurück