Gå til innhold

Hvordan utføre ulike mysql queries med if(isset(...)){...}


Anbefalte innlegg

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
Videoannonse
Annonse

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 av Feh
Lenke til kommentar

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.

fa7c5b5f326e3c4a6cc9db19e7edbaf0-xkcd-bo

Med andre ord, alltid validér/sterilisér input for å unngå angrep som SQL-injisering. :)

Lenke til kommentar

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

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...