Gå til innhold

Anbefalte innlegg

Har et gammelt telefonliste system på jobben laget i PHP og MYsql.

 

Jeg ønsker å forberde denne litt, men mangler elementær kunnskap.

 

Nesten alle spørringer er bygd opp på følgende måte :

 

if (!empty($_POST['depSearch'])) {
$depId = $_POST['departments'];

$sql = "SELECT * FROM people WHERE avdeling = ".$depId;
$result = $db->query($sql);

if (is_array($result)) {
	echo "<table width=\"99%\">";
	echo "<tr class=\"topRow\">";
	echo "<td>Brukerident</td>";
	echo "<td>Fornavn</td>";
	echo "<td>Etternavn</td>";
	echo "<td>Kontortelefon</td>";
	echo "<td>Enhet</td>";
	echo "<td>Avdeling</td>";
	echo "<td>Detaljer</td>";
	echo "</tr>";

	foreach ($result as $r) {
		echo "<tr>";

		echo "<td>";
		if (!empty($r['brukerident'])) { 
			echo $r['brukerident'];
		}
		echo "</td>";

		echo "<td>";
		if (!empty($r['fornavn'])) { 
			echo $r['fornavn'];
		}
		echo "</td>";

		echo "<td>";
		if (!empty($r['etternavn'])) { 
			echo $r['etternavn'];
		}
		echo "</td>";

		echo "<td>";
		if (!empty($r['telefonKontor'])) { 
			echo $r['telefonKontor'];
		}
		echo "</td>";
		echo "<td>";

		if (!empty($units[$r['enhet']]['unitName'])) { 
			echo $units[$r['enhet']]['unitName'];
		}
		echo "</td>";

		echo "<td>";
		if (!empty($deps[$r['avdeling']]['depName'])) { 
			echo $deps[$r['avdeling']]['depName']; 
		}
		echo "</td>";

		echo "<td><a href=\"".$self."?viewDetails=".$r['brukerident']."\">Klikk for detaljer</a></td>";
		echo "</tr>";
	}
	echo "</table>";
} else {
	echo "<p>Fant ingen personer i ".$deps[$depId]['depName'].".</p>";
}
}

 

Det jeg ønsker er å få lagt inn en sorteringsmulighet.

 

Ideelt slik at jeg kan trykke på en av overskriftene og sortere etter valgt overskrift , alternativt sortere default etter etternavn.

 

 

Har lekt meg litt selv med den siste muligheten, men uten suksess :)

Klarer ikke å få noe resultat med ORDER BY , Dette er nok pga ".$depId;

 

$sql = "SELECT * FROM people WHERE avdeling = ".$depId;

 

Noen som kan peke meg i riktig vei ?

Endret av Arcus
Lenke til kommentar
Videoannonse
Annonse

Sanitise your inputs! Se på mysql_real_escape_string().

 

Du vil sikkert har en query ala:

"SELECT * FROM people WHERE avdeling=' . mysql_real_escape_string($_POST['departments']) . "'"

 

Du kan legge på "ORDER BY felt" for å sortere etter innholdet i "felt". Videre kan du legge på ASC eller DESC for å reversere sorteringen.

Endret av Jckf
Lenke til kommentar

"SELECT * FROM people WHERE avdeling='" . mysql_real_escape_string($_POST['departments']) . "'"

Du hadde glemt en "

 

Noen alternative måter å bygge opp sql'en på.

// kontroller $_GET og $_POST (etter hva som er brukt) her for gyldig verdier og annen sikkerhet
$order_by=mysql_real_escape_string($_GET['order']);
$departments=mysql_real_escape_string($_GET['departments']);

// alt. 1
$sql="SELECT * FROM people WHERE avdeling='" . $departments . "' ORDER BY ".$order_by); 

// alt. 2
$sql=sprintf("SELECT * FROM people WHERE avdeling='%s' ORDER BY %s",
$departments,$order_by);

// alt. 3
$sql="SELECT * FROM people WHERE avdeling='".$departments."'";
$sql.=" ORDER BY ".$order_by;

Endret av Crowly
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...