2017-04-05 5 views
0

Hallo scripterfriends Sortierung,eine SQL-Datenbank in alphabetischer Reihenfolge mit Links/Taste

ich an einem Projekt arbeiten, wo ich bin eine Zeile in alphabetischer Reihenfolge sortieren muß. Nachdem ich nach Lösungen gesucht hatte, fand ich nicht die, nach der ich suchte. Sagen wir, ich brauche nur die Produkte, die mit dem Buchstaben "F" beginnen. Ich möchte es wie das Bild unten: https://gyazo.com/488ccc8fd2beaadbc96d687938e5a6ff

Ich brauche die F klicken zu können und lassen Sie es das Produkt nur zeigen den Beginn mit dem F.

Der Code, den ich so haben funktioniert der Trick, aber ich brauche den Code ändern, um einen anderen Buchstaben zu erhalten. Dies ist der Code, den ich bis jetzt habe:

<?php 
require_once 'config.php'; 

try { 
    $sQuery = "SELECT receptnummer, receptnaam, receptingredient, receptbereidingstijd, receptbereidingswijze, receptcategorie, receptbenodigdheden, receptserveertips, klantnummer 
    FROM recept 
    WHERE receptnaam LIKE '%f%' ORDER BY receptnaam"; 

    $oStmt = $db->prepare($sQuery); 

    $oStmt->execute(); 

    if ($oStmt->rowCount() > 0) { 
     echo '<table border="2">'; 
     echo '<thead>'; 
     echo '<td>receptnummer</td>'; 
     echo '<td>receptnaam</td>'; 
     echo '<td>receptingredient</td>'; 
     echo '<td>receptbereidingstijd</td>'; 
     echo '<td>receptbereidingswijze</td>'; 
     echo '<td>receptcategorie</td>'; 
     echo '<td>receptbenodigdheden</td>'; 
     echo '<td>receptserveertips</td>'; 
     echo '<td>klantnummer</td>'; 

     while ($aRow = $oStmt->fetch(PDO::FETCH_ASSOC)) { 

      echo '<tr>'; 
      echo '<td>' . $aRow['receptnummer'] . '</td>'; 
      echo '<td>' . $aRow['receptnaam'] . '</td>'; 
      echo '<td>' . $aRow['receptingredient'] . '</td>'; 
      echo '<td>' . $aRow['receptbereidingstijd'] . '</td>'; 
      echo '<td>' . $aRow['receptbereidingswijze'] . '</td>'; 
      echo '<td>' . $aRow['receptcategorie'] . '</td>'; 
      echo '<td>' . $aRow['receptbenodigdheden'] . '</td>'; 
      echo '<td>' . $aRow['receptserveertips'] . '</td>'; 
      echo '<td>' . $aRow['klantnummer'] . '</td>'; 
      echo '</tr>'; 
     } 
     echo '</table>'; 
    } else { 
     echo 'helaas, geen gegevens gevonden'; 
    } 

} catch (PDOException $e) { 
    $sMsg = '<p> 
    Regelnummer: ' . $e->getLine() . '<br/> 
    Bestand: ' . $e->getFile() . '<br/> 
    Foutmelding: ' . $e->getMessage() . ' 
</p>'; 

    trigger_error($sMsg); 
} 
$db = null; 
?> 

Kann mir jemand dabei helfen ???

Vielen Dank im Voraus,

DigitalDentist

+2

Wenn etwas mit "F" beginnt, entfernen Sie das erste Prozentzeichen in "% f%" –

+0

ja fred ist richtig% f% bedeutet etwas in der Front dann ein 'f' dann irgendetwas dahinter, wenn Sie wie Befehl – Gert

+0

Bevor Sie klicken ein Brief, sind alle Aufzeichnungen bereits clientseitig dargestellt? Wenn dem so ist, scheint es, als wäre die Filterung auf der Clientseite besser, da keine weitere Reise zum Server erforderlich ist. – David

Antwort

0

Diese Abfrage

$sQuery="SELECT receptnummer, receptnaam, receptingredient, receptbereidingstijd, receptbereidingswijze, receptcategorie, receptbenodigdheden, receptserveertips, klantnummer 
FROM recept 
WHERE receptnaam LIKE 'f%' ORDER BY receptnaam"; 
0

Der ganze Trick innerhalb dieser Abfrage ist Nehmen:

$sQuery="SELECT receptnummer, receptnaam, receptingredient, receptbereidingstijd, receptbereidingswijze, receptcategorie, receptbenodigdheden, receptserveertips, klantnummer 
FROM recept 
WHERE receptnaam LIKE '%f%' ORDER BY receptnaam"; 

Alles, was Sie tun müssen, ist zu ersetzen f in LIKE '%f%' mit einer Variablen, die Sie können von einer POST/GET-Anfrage erhalten.

Edit: wie andere erwähnt, sollten Sie wahrscheinlich Ihre %f% durch f% ersetzen, es sei denn, Sie suchen nach einem Wort, das nur mit dem Buchstaben f enthalten, nicht nur mit beginnen.

+0

Aber gibt es trotzdem den Buchstaben "A" alles mit einem A und das "B" alles mit einem B anzeigen zu lassen und so weiter. Wie in einem Menü wie diesem: "A | B | C | D | ..."? – DigitalDentist

+0

@DigitalDentist Ich bin mir nicht sicher, ob ich dich richtig verstehe. Müssen Sie den Inhalt der gesamten Tabelle in alphabetischer Reihenfolge anzeigen? Wenn dies der Fall ist, müssen Sie mehrere Abfragen ausführen. Machen Sie eine Zeichenfolge '$ alphabet = 'abcdefghijklmnopqrstuvwxyz'' und setzen Sie Ihren Code in eine FOR-Schleife für jedes Zeichen in dieser Zeichenfolge. Vergiss nicht, 'mysqli_next_result ($ database);' nach jeder Abfrage zu verwenden, damit du eine neue senden kannst –

+0

Ich habe es schon selbst herausgefunden;) Danke für die Hilfe sowieso! – DigitalDentist

Verwandte Themen