Gå til innhold

Bruker sortere MYSQL resultat vha PHP (kode funker ikke)


Anbefalte innlegg

Heisann :) jaja dette blir min andre tråd her inne i dag, men det får gå. :)

Jeg prøver å la brukeren sortere resultatet han får fra Mysql serveren via PHP.

Jeg prøvde å følge dette: http://stackoverflow...drawn-from-mysq

Men det skjer ingen ting på nettsida, er det noen som kan se hva jeg gjør feil? Jeg er veldig ny til PHP enda :)

Jeg lar pcen min stå på i noen timer, så jeg kan demonstere bedre. Link her.

Koden jeg har lagd vha linken over er i bold. :)

 

 

 

 [b]<form name="myform">[/b]
[b]<select name="sort" id="sort" style="float: left;" onChange="javascript:document.myform.submit();">
<option value="Sted">Sted</option>
<option value="Pris">Pris</option>
</select>
</form>[/b]

<?php
$con = mysql_connect("localhost","test","1","lokaler2");
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }
mysql_select_db("steder2", $con);
$result = mysql_query("SELECT * FROM lokaler2");

[b]$searchResultQuery = "
SELECT id, Sted, Pris
FROM lokaler2
WHERE MATCH (name)
AGAINST ('{$GLOBALS['input']}' IN BOOLEAN MODE)
ORDER BY $sort";[/b]

echo "<table id='tabbelresultat'>
<tr>
</tr>";
while($row = mysql_fetch_array($result))
 {
 echo "<tr id='tabellresultat'>";
 echo "<td id='tabellresultat1'>" . $row['Sted']. '<p/>' .$row['Slag'] . '<p/>' . $row['Pris'] . "</td>";
echo "<td id='tabellresultat'>" . $row['Tekst'] . "</td>";
echo "<td id='tabellresultatbilde'>" . $row['Bilde']."</td>";
 echo "</tr>";
 }
echo "</table>";

mysql_close($con);


?> 

Endret av chri-ot
Lenke til kommentar
Videoannonse
Annonse

Hmm får ikke til jeg :(

Siden det kun er 2 kriterier som skal sorteres, er det mulig å lage en knapp ved hjelp av SORT BY? At jeg på en måte har to valg for brukeren en SORT BY Sted og en SORT BY Pris?

Det funker hvis jeg skriver det inn i koden, men da har jeg jo bare en mulighet. :)

Lenke til kommentar

Hvorfor har du rundt spørringen din?

Som er skrevet i første innlegget: "Koden jeg har lagd vha linken over er i bold".

--

 

Hvor er det du setter $sort variabelen? I stackoverflow innlegget så henvises det til denne koden

if (isset($_POST['sort']))
{  
$GLOBALS['sort'] = $_POST['sort'];
}
$pattern = mysql_real_escape_string($GLOBALS['input']);
$sort = mysql_real_escape_string(isset($GLOBALS['sort']) ? $GLOBALS['sort'] : 'Sted');

// kan skrives om til, og droppe if'en.
$sort = mysql_real_escape_string(isset($_POST['sort']) ? $_POST['sort'] : 'Sted');
$pattern = mysql_real_escape_string($_POST['input']);

Ser ikke noe tilsvarende i din kode.

 

Det er viktig å ikke bruke data direkte fra $_POST, $_GET, $_COOKIE, $_REQUEST osv i en sql, da er man sårbar for sql injections. All ekstern data må "vaskes", bruk mysql_real_escape_string().

 

Er også greit å validere input, slik at du er sikker på at input data er som forventet. F.eks

$valid_sort=array('Pris','Sted'); // legg til gyldige felt her

$sort = mysql_real_escape_string( ( isset($_POST['sort']) and in_array($_POST['sort'],$valid_sort) ) ? $_POST['sort'] : 'Sted' );

 

 

Sørg for at form'en blir sendt via post

<form name="myform" method="post">

 

For å sjekke at sql'en din ser bra ut kan du legge inn

$searchResultQuery = "
	SELECT id, Sted, Pris
	FROM lokaler2
       WHERE MATCH (Sted)
	AGAINST ('{$pattern}' IN BOOLEAN MODE)
	ORDER BY {$sort}";

// legg til for debugging
echo nl2br($searchResultQuery);

Du henviste til name i WHERE delen, har endret det til Sted, da jeg tipper name ikke er ett felt i tabellen. Hva er det du ønsker at sql'en skal gjøre, er ikke sikkert at den er helt riktig skrevet i forhold til hva du vil den skal gjøre.

Lenke til kommentar

Prøvde du å undersøke spørringene som jeg sa?

 

Hvorfor har du rundt spørringen din?

Du kan nok heller ikke bruke javascript på den måten. Legg inn en submit-knapp i formen og dropp javascript, ellers må du bruke ajax.

Jeg prøvde å finne ut hvordan jeg gjorde det, men fant det ikke helt ut? Jeg er ganske grønn på PHP enda. Hvordan gjør man det? :)

 

 

@Crowly

Takk for hjelpen :) Det er nok ikke helt riktig i koden min, så jeg tror jeg skal komme tilbake til denne funksjonen når nettsida er blitt mer ferdig. Det var vist en vanskeligere oppgave en først antatt. :)

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å
×
×
  • Opprett ny...