newbie2014 Skrevet 5. oktober 2014 Del Skrevet 5. oktober 2014 Hei.Jeg har en database med data, og som jeg vil kunne vise innholdet i basert på ulike kriterier. Disse kriteriene tenker jeg å ha i en dropdown-meny, så når man klikker på en av menyene, får man resultat tilpasset denne.Jeg skal bruke kun én tabell i databasen, men altså sortere query-resultatet (echo) på flere ulike måter.Hvordan kan man gjøre dette?Jeg ønsker at alt innholdet i tabellen skal vises når man går inn på siden (noe jeg har fått til), men så kunne endres vha flere if(isset(...)){...}Beklager at jeg ikke har noen eksempelkode å komme med ennå.På forhånd takk. Lenke til kommentar
Feh Skrevet 6. oktober 2014 Del Skrevet 6. oktober 2014 (endret) Kan du ikke bruke variabelen fra drop-downen til å styre søket? Litt vanskelig å si noe uten å se databasestrukturen din, men det enkleste vil jo være å bare bruke input verdien(e) fra formen til å bestemme resultatet til søket. Enkelt eksempel: <select name="kategori"> <option value="frukt">Frukt</option> <option value="grønnsaker">Grønnsaker</option> </select> <?php if(isset($_POST['kategori'])) { $cat = $_POST['kategori'] $query=mysqli_query($conn, "SELECT * FROM table WHERE category='$cat'"); ?> <table> <?php while($row=mysqli_fetch_array($query)) { echo '<tr><td>'.$var1.'</td><td>'.$var2 etc...'</td></tr>'; } ?> </table> <?php } ?> Endret 6. oktober 2014 av Feh Lenke til kommentar
ahw_ Skrevet 6. oktober 2014 Del Skrevet 6. oktober 2014 Jeg har ikke så mye å tilføye, men det er noe som er viktig å alltid nevne når man gir ut kode som er svært utsatt for angrep.Med andre ord, alltid validér/sterilisér input for å unngå angrep som SQL-injisering. Lenke til kommentar
Crowly Skrevet 6. oktober 2014 Del Skrevet 6. oktober 2014 Du kan gjøre noe ala dette $sql = "SELECT * FROM product ORDER BY "; // legg til WHERE og slik om nødvendig switch ($input_var){ default: case 'name': $sql .= 'name'; break; case 'named': $sql .= 'name DESC'; break; case 'id': $sql .= 'id'; break; } // kjør spørring osv Hvis det blir mange alternativer er ikke en if eller switch en optimal måte å gjøre det på. Da bør man nok ha de forskjellige sql tilleggene i hver sin funksjon/metode og kalle den som er nødvendig i forhold til hvilket parameter som er valgt. function productOrderByName($sql,$desc=false){ return $sql .= 'name' . $desc ? ' DESC' : ''; } function productOrderById($sql,$desc=false){ return $sql .= 'id' . $desc ? ' DESC' : ''; } $input['field'] = filter_input(INPUT_POST,'orderByField',FILTER_SANITIZE_STRING,FILTER_FLAG_STRIP_LOW); $sql = "SELECT * FROM products ORDER BY "; if (function_exists('productOrderBy'.$input['field']){ // method_exists() hvis oop $sql .= {'productOrderBy'.$input['field']}(); // utfør spørring } else { // funksjon/metode finnes ikke, gi en feilmelding } Kan sikkert gjøres mer elegant 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å