variablen übergabe per link. wie geht das?

havoc

Mitglied
Hallo ich habe folgendes Problem:

Ich habe eine Tabelle in einer Datenbank und möchte nun gerne die daten darin sortiert auslesen. Sortiert werden soll nach einer Variable die ich per link übergeben will.
Anfangs soll also die Ausgabe unsortiert sein und wenn man dann auf die Spaltenüberschrift klickt, dann soll die Tabelle sortiert werden.

ich habe mir gedacht, dass ich die Variablen am einfachsten per link übergebe
...schnipp
PHP:
<a href="index.php?sort=name">Name</a></td><td><a href="index.php?sort=anzahl">Anzahl</a>
schnapp...

da müsste doch ein link "Name" erzeugt werden der die variable "sort" mit dem Wert Name versieht und gleiches bei "Anzahl" oder??

Die Funktion mit der ich die Sql-Abfrage mache schaut folgendermassen aus:
PHP:
$sort='';
function anzeigen($sort){ //line 10 siehe unten
  	
	include ("../con_def.inc");
	$anz_id = mysql_connect ($server, $user2, $pwd2);
	@mysql_select_db($db2, $anz_id);
	$anz_result = mysql_query("select * from moviedb order by '$sort';", $anz_id);
	$anz_anzahl = mysql_num_rows($anz_result);
	for ($i=1; $i<=$anz_anzahl; $i++){
		$anz_daten[$i] = mysql_fetch_array($anz_result);
		
		$name[$i] = $anz_daten[$i][name];
		$anzahl[$i] = $anz_daten[$i][anzahl];
		$sprache[$i] = $anz_daten[$i][sprache];
		$quali[$i] = $anz_daten[$i][quali];
		$genre[$i] = $anz_daten[$i][genre];
		$format[$i] = $anz_daten[$i][format];
		$owner[$i] = $anz_daten[$i][owner];
		$down[$i] = $anz_daten[$i][down];
		$todo[$i] = $anz_daten[$i][todo];
		$edonkey[$i] = $anz_daten[$i][edonkey];		
		}
	
	//ausgabetabelle erzeugen.
	
	for ($h=1; $h<=$anz_anzahl; $h++){
		print '<tr><td>'.$name[$h].'</td><td>'.$anzahl[$h].'</td><td>'.$sprache[$h].'</td><td>'.$quali[$h].'</td>
<td>'.$genre[$h].'</td><td>'.$format[$h].'</td><td>'.$owner[$h].'</td>
<td>'.$down[$h].'</td><td>'.$todo[$h].'</td>
<td><a href="'.$edonkey[$h].'">Edonkey-link</a></td></tr>';
		}
	
	
	
	}

Ich bekomme leider immer folgende Fehlermeldung:
Warning: Missing argument 1 for anzeigen() in /usr/www/drisde/drx/havoc/moviedb/index.php on line 10


scheinbar wird also die Variable

$sort

nicht richtig übergeben. woran kann das liegen?? bin leider im mysql/php Bereich noch nicht so der Guru wie man wahrscheinlich am code sehen kann:) :(

MfG

Nils
 
Zuletzt bearbeitet:
Du must natürlich abfagen ob die Variable schon gesendet wurde:

PHP:
if(!empty($_GET['sort'])
{
  $sort = $_GET['sort'];
}
else
{
  $sort = "standardsortfeld";
}


$sql = "SELECT * FROM tbl WHERE sortfeld='".$sort."'";

Grüße
Fati
 
jau vielen dank. so funktioniert es:)

aber um deinen code nicht nur stupide zu nutzen, macht er doch folgendes:

abfrage ob sort gesetzt ist

wenn ja dann $sort gleich dem inhalt des übergabe links

wenn nein dann $sort gleich dem standard feld.


und mit dem $_get überprüfe ich die variable die per url übergeben werden sollet oder??

gibbet da irgendwo nen kleines/grosses tutorial zu wie man variablen/parameter per url weitergeben kann??
 
Nein. $_GET ist nicht zum überpüfen gedacht. Seit der PHP Version 4.1.6 (glaub ich) wurden die Global Register eigeführt.

Das heißt das einfache auslesen der übergebenen Variablen mittles echo $variName funktioniert nichtmehr wenn register globals aktiviert ist.

Dann must du das Parameter Array verwenden. Es gibt $_POST (wenn du Variablen aus einem Formular auswerten willst) und $_GET wenn du es per Link (String) übergibst. Natürlich kannst du in einem Formular die Variablen auch per _GET übergeben. Kommt immer darauf an was wofür die die Variablen brauchst.

Wie gesagt, ist register globals an, dann kannst du die Variablen nur noch in der Array Weise auslesen. Das hebt die Sicherheit gleich enorm an. Viele Provider haben es aber noch deaktiviert weil sonst die alten Applikationen nichtmehr drauf laufen würden!

Grüße
Fati

PS: Sonst war deine Erklärung 100% richtig :D
 

Neue Beiträge

Zurück