chri-ot Skrevet 22. februar 2013 Del Skrevet 22. februar 2013 (endret) 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 22. februar 2013 av chri-ot Lenke til kommentar
GeirGrusom Skrevet 22. februar 2013 Del Skrevet 22. februar 2013 (endret) edit: tatt vekk. Endret 22. februar 2013 av GeirGrusom Lenke til kommentar
MikkelRev Skrevet 22. februar 2013 Del Skrevet 22. februar 2013 Sett inn echo $searchResultQuery; på linjen over echo "<table>", og test de forskjellige spørringene du får i phpMyAdmin/Workbench ettersom brukeren velger sorteringsrekkefølge. Lenke til kommentar
chri-ot Skrevet 22. februar 2013 Forfatter Del Skrevet 22. februar 2013 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
MikkelRev Skrevet 23. februar 2013 Del Skrevet 23. februar 2013 (endret) 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. Endret 23. februar 2013 av MikkelRev Lenke til kommentar
Crowly Skrevet 23. februar 2013 Del Skrevet 23. februar 2013 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
chri-ot Skrevet 23. februar 2013 Forfatter Del Skrevet 23. februar 2013 tusen takk for svar jeg skriver fra mobilen nå, så jeg får ikke testa nå. Jeg skal prøve i morgen kveld. Lenke til kommentar
Terrasque Skrevet 24. februar 2013 Del Skrevet 24. februar 2013 Bruker du i det hele tatt $searchResultQuery i en spørring? Lenke til kommentar
chri-ot Skrevet 25. februar 2013 Forfatter Del Skrevet 25. februar 2013 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå