Sql 1. Durchsuchbar 2. Sortierbar

Phil La Fari

Grünschnabel
Hallo liebe Tutorials Gemeinde,

gegeben ist folgender Quelltext
PHP:
	<h2>Der Kadar</h2>
	<p>
	
		<?php
		
			// Verbindung zur Datenbank
			
			$conncetion = mysql_connect ("localhost", "XXXX", "XXXX");
			
			
			// Datenbank auswählen
			$db = mysql_select_db("96kader");
			
			// SQL-Anweisung 
			$Suche = '';
			if (isset ($_GET ['Suche'] )) $Suche = $_GET ['Suche'];
			$sql = "SELECT * FROM kader WHERE Position LIKE '%$Suche%' OR Vorname LIKE '%$Suche%' OR Nachname LIKE '%$Suche%'";
			$result = mysql_query("$sql");
			
			
			
			if($_GET['sort'] == 'vorname')
			$sql_sort = 'ORDER BY vorname';
			if($_GET['sort'] == 'nachname')
			$sql_sort = 'ORDER BY nachname';
			$result = mysql_query("$sql_sort");
			
			 if (!$result) {
			 
			 die ('fehler'.mysql_error());
			 }
			
			// Verbindung schließen
			mysql_close($conncetion);
		
			
		?>
		
		Suchen Sie nach ihrem gewünschtem Spieler oder nach der Postionen
	
		<form action="" method="get">
			
			<input type="hidden" name="content" value="mannschaft" />
			<input type="text" name="Suche" value="<?php echo $Suche; ?>" />
			<input type="submit" />
			
		</form>
		
		
		<table class="kader">
		
		
			<tr>
				<th>Nr.</th><th>Spieler Nr.</th><th><a href='?sort=vorname &content=mannschaft'>Vorname</a></th><th><a href='?sort=nachname &content=mannschaft'>Nachname</a></th><th>Nationalität<th>Geburtsort</th><th>Alter</th><th>Größe</th><th>Postition</th><th>Marktwert</th>
			</tr>
			

		
		<?php
			$count = 1;
					// Ausgabe des Kaders
			while ($row = mysql_fetch_array($result)) {
			
				if ( is_int ($count /2) )
		$trclass ="even";
		else
			$trclass="odd";
				
				echo"<tr class='$trclass'>";
				echo "<td>".$count."</td>";
				echo"<td>".$row['Nummer']."</td>";
				echo"<td>".$row['Vorname']."</td>";
				echo"<td>".$row['Nachname']."</td>";
				echo"<td>".$row['Nationalität']."</td>";
				echo"<td>".$row['Geburtstort']."</td>";
				echo"<td>".$row['Alter']."</td>";
				echo"<td>".$row['Größe']."</td>";
				echo"<td>".$row['Position']."</td>";
				echo"<td>".$row['Marktwert']."</td>";
				echo"</tr>";
				
				$count++;
			}	
		?>
		</table>
			
	
	</p>

Die Funktion, die Datenbank zu durchsuchen funktioniert einwandfrei - da war ich mir beim coden mit sicher.
Jedoch klappt das sortieren nicht ansatzweise, ich denke ich mache immer Fehler mit den Schleifen. Ich würde gerne in der Tabelle auf z.b Vornamen klicken und darauf die Tabelle nach Vornamen sortiert ausgegeben bekommen.
Falls ihr euch fragt warum ich so einem Thema an der Seite bastel, das Thema ist vorgegeben -.-
 
Zuletzt bearbeitet:
Ich würde es so machen:

PHP:
$sql = "SELECT * FROM kader WHERE Position LIKE '%$Suche%' OR Vorname LIKE '%$Suche%' OR Nachname LIKE '%$Suche%'";

if (isset($_GET['sort']) {
    $sql .= " ORDER BY mysql_real_escape_string($_GET['sort'])";
}
$result = mysql_query($sql);

Bei dir wird ja erst die SQL-Anweisung ausgeführt und dann die Sortierung festgelegt ohne das die Datenbank was davon mitbekommt..
 
Zuletzt bearbeitet:
Hallo,

bau das ganze mal ein bisschen um. Und zwar führst du dein $result erst nach deinen IF's mit den Order aus und hängst dann deine 'ORDER BY %' an deine $sql an. Das kannst du mit $sql .= machen. Dann läuft es.

Hintergrund ist, dass du aktuell immer einen Query ausführst mit nur ORDER BY %. Das ist ja falsch weil du das ja eben an deine Anfrage an den kader anhängen willst.

Viele Grüße,
Michael
 
Tombe,

wenn ich deinen Code einfüge
PHP:
	<h2>Der Kadar</h2>
	<p>
	
		<?php
		
			// Verbindung zur Datenbank
			
			$conncetion = mysql_connect ("localhost", "xxxx", "xxxx");
			
			
			// Datenbank auswählen
			$db = mysql_select_db("96kader");
			
			// SQL-Anweisung 
			$Suche = '';
			
			if (isset ($_GET ['Suche'] )) $Suche = $_GET ['Suche'];
			$sql = "SELECT * FROM kader WHERE Position LIKE '%$Suche%' OR Vorname LIKE '%$Suche%' OR Nachname LIKE '%$Suche%'";
			
			
			if (isset($_GET['sort']) {
				$sql .= " ORDER BY mysql_real_escape_string($_GET['sort'])";
				}
				$result = mysql_query($sql);  
			
			 if (!$result) {
			 
			 die ('fehler'.mysql_error());
			 }
			
			// Verbindung schließen
			mysql_close($conncetion);
		
			
		?>
		
		Suchen Sie nach ihrem gewünschtem Spieler oder nach der Postionen
	
		<form action="" method="get">
			
			<input type="hidden" name="content" value="mannschaft" />
			<input type="text" name="Suche" value="<?php echo $Suche; ?>" />
			<input type="submit" />
			
		</form>
		
		
		<table class="kader">
		
		
			<tr>
				<th>Nr.</th><th>Spieler Nr.</th><th><a href='?sort=vorname &content=mannschaft'>Vorname</a></th><th><a href='?sort=nachname &content=mannschaft'>Nachname</a></th><th>Nationalität<th>Geburtsort</th><th>Alter</th><th>Größe</th><th>Postition</th><th>Marktwert</th>
			</tr>
			

		
		<?php
			$count = 1;
					// Ausgabe des Kaders
			while ($row = mysql_fetch_array($result)) {
			
				if ( is_int ($count /2) )
		$trclass ="even";
		else
			$trclass="odd";
				
				echo"<tr class='$trclass'>";
				echo "<td>".$count."</td>";
				echo"<td>".$row['Nummer']."</td>";
				echo"<td>".$row['Vorname']."</td>";
				echo"<td>".$row['Nachname']."</td>";
				echo"<td>".$row['Nationalität']."</td>";
				echo"<td>".$row['Geburtstort']."</td>";
				echo"<td>".$row['Alter']."</td>";
				echo"<td>".$row['Größe']."</td>";
				echo"<td>".$row['Position']."</td>";
				echo"<td>".$row['Marktwert']."</td>";
				echo"</tr>";
				
				$count++;
			}	
		?>
		</table>
			
	
	</p>
hat er ein Problem mit der Klammer "Parse error: syntax error, unexpected '{' in K:\CMS-Labor\xampp\htdocs\Hannover 96 Fanseite\contents\mannschaft - Kopie.php on line 21" line 21 ist " if (isset($_GET['sort']) {" oder fehlt da noch eine ")"
 
Zuletzt bearbeitet:
Beim
PHP:
if (isset($_GET['sort'])
sind zwei ( auf, aber nur eine ) zu.
Und dann kommt schon der Codeblock vom if.

Jaja, die Klammern... :D
 
PHP:
<h2>Der Kadar</h2>
    <p>
    
        <?php
        
            // Verbindung zur Datenbank
            
             $conncetion = mysql_connect ("localhost", "XXX", "XXX");
            
            
            // Datenbank auswählen
            $db = mysql_select_db("96kader");
            
            // SQL-Anweisung 
            $Suche = '';
            
            if (isset ($_GET ['Suche'] )) $Suche = $_GET ['Suche'];
            $sql = "SELECT * FROM kader WHERE Position LIKE '%$Suche%' OR Vorname LIKE '%$Suche%' OR Nachname LIKE '%$Suche%'";
            
            
            if (isset($_GET['sort'])) {
                $sql .= "ORDER BY mysql_real_escape_string($_GET['sort'])";
                }
                $result = mysql_query($sql);  
            
             if (!$result) {
             
             die ('fehler'.mysql_error());
             }
            
            // Verbindung schließen
            mysql_close($conncetion);
        
            
        ?>
        
        Suchen Sie nach ihrem gewünschtem Spieler oder nach der Postionen
    
        <form action="" method="get">
            
            <input type="hidden" name="content" value="mannschaft" />
            <input type="text" name="Suche" value="<?php echo $Suche; ?>" />
            <input type="submit" />
            
        </form>
        
        
        <table class="kader">
        
        
            <tr>
                <th>Nr.</th><th>Spieler Nr.</th><th><a href='?sort=vorname &content=mannschaft'>Vorname</a></th><th><a href='?sort=nachname &content=mannschaft'>Nachname</a></th><th>Nationalität<th>Geburtsort</th><th>Alter</th><th>Größe</th><th>Postition</th><th>Marktwert</th>
            </tr>
            

        
        <?php
            $count = 1;
                    // Ausgabe des Kaders
            while ($row = mysql_fetch_array($result)) {
            
                if ( is_int ($count /2) )
        $trclass ="even";
        else
            $trclass="odd";
                
                echo"<tr class='$trclass'>";
                echo "<td>".$count."</td>";
                echo"<td>".$row['Nummer']."</td>";
                echo"<td>".$row['Vorname']."</td>";
                echo"<td>".$row['Nachname']."</td>";
                echo"<td>".$row['Nationalität']."</td>";
                echo"<td>".$row['Geburtstort']."</td>";
                echo"<td>".$row['Alter']."</td>";
                echo"<td>".$row['Größe']."</td>";
                echo"<td>".$row['Position']."</td>";
                echo"<td>".$row['Marktwert']."</td>";
                echo"</tr>";
                
                $count++;
            }    
        ?>
        </table>
            
    
    </p>

Jetzt kommt direkt eine Fehlermeldung : "Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in K:\CMS-Labor\xampp\htdocs\Hannover 96 Fanseite\contents\mannschaft - Kopie.php on line 23"

line 23 ist " $sql .= "ORDER BY mysql_real_escape_string($_GET['sort'])"; "

Danke für eure prompten Antworten
 
So sollte es stimmen:

PHP:
<?php
// Verbindung zur Datenbank
$conncetion = mysql_connect ("localhost", "xxxx", "xxxx");
// Datenbank auswählen
$db = mysql_select_db("96kader");
// SQL-Anweisung
$Suche = '';

if (isset ($_GET ['Suche'] )) $Suche = $_GET ['Suche'];

$sql = "SELECT * FROM kader WHERE Position LIKE '%$Suche%' OR Vorname LIKE '%$Suche%' OR Nachname LIKE '%$Suche%'";

if (isset($_GET['sort'])) {
	$sql .= " ORDER BY " .mysql_real_escape_string($_GET['sort']);
}

$result = mysql_query($sql);

if (!$result) {
    die ('fehler'.mysql_error());
}

// Verbindung schließen
mysql_close($conncetion);
?>
 
Zurück