Thema: Verbindung aufnehmen, Datensätze abfragen


Datensätze abfragen und anzeigen

MySQL

In einem PHP-Programm können die Datensätze mit der Anweisung select ausgewählt und abgefragt werden.

  • Einfache Abfrage
  • Die folgende Befehlszeile gibt den gesamten Inhalt einer Tabelle aus.
        SELECT * FROM lab_tblpersonen;
    Sollen nur einzelne Spalten von der ganzen Tabelle angezeigt werden, muss der Operator * durch die Spaltennamen ersetzt werden.
        SELECT vorname, name, gehalt FROM lab_tblpersonen;
  • Einfache Abfrage mit DISTINCT
  • Mit der Option DISTINCT können Duplikate ausgefiltert werden.
        SELECT DISTINCT personalnummer FROM lab_tblpersonen;
  • Abfrage mit Bedingung
  • Der folgende Befehl gibt die komplette Zeile aus, bei der in der Spalte zulage 300 steht.
        SELECT * FROM lab_tblpersonen WHERE zulage = 300;
    Wenn Sie nach einem Wort wie Schmitz suchen, müssen Sie dieses in zwei Hochkommas setzen.
        SELECT * FROM lab_tblpersonen WHERE name = 'Schmitz';
    Um die Datensätze zwischen 3000 und 5000 auszugeben können Sie BETWEEN verwenden.
        SELECT * FROM lab_tblpersonen WHERE gehalt BETWEEN 3000 AND 5000;
  • Abfrage mit Platzhalter
  • Wenn Sie nicht genau wissen, an welcher Stelle das Wort Schmitz steht welches Sie suchen, können Sie den Platzhalter % verwenden. Der Platzhalter % steht für beliebig viele Zeichen. Weiterhin müssen Sie das = durch LIKE ersetzen.
        SELECT * FROM lab_tblpersonen WHERE name LIKE '%Schmitz%';
    Ein weiterer Platzhalter ist der Unterstrich. Dieser steht für genau ein Zeichen.
        SELECT * FROM lab_tblpersonen WHERE name LIKE 'S__z';
  • Verknüpfung von Bedingungen
  • Werden zwei Bedingungen mit einem AND verknüpft, müssen beide Bedingungen erfüllt werden.
        SELECT * FROM lab_tblpersonen WHERE gehalt > 3000 AND < 5000;
    Werden zwei Bedingungen mit einem OR verknüpft, muss mindestens eine Bedingung erfüllt sein.
        SELECT * FROM lab_tblpersonen WHERE gehalt = 3000 OR gehalt = 5000;
    Mit der Bedingung NOT kann man das Ergebnis einer Bedingung negieren.
        SELECT * FROM lab_tblpersonen WHERE gehalt < 5000 AND NOT gehalt = 3000;
    Werden mehrere Bedingungen miteinander verknüpft, müssen gegebenenfalls Teile der Abfrage in Klammern gesetzt werden.
        SELECT * FROM lab_tblpersonen WHERE gehalt < 3000 OR (name = 'Schmitz' AND gehalt = 5000);

Datensätze abfragen

<form action = "c52.php" method = "post">
  <div class="form-group">
        <label>Untergrenze</label>
        <input type="text" name="ug" placeholder="Enter Gehaltsuntergrenze"/>
    </div>
    <div class="form-group">
        <label>Obergrenze</label>
        <input type="text" name="og" placeholder="Enter Gehaltsobergrenze"/>
    </div>
    <div class="form-group">
        <button class="button dark" name="send">Send</button>
	</div>
</form>
<?php
if(isset($_POST["send"])){
    /* Verbindung mit MyQSL aufnehmen */
   mysql_connect("localhost", "YourUsername", "YourPassword");
   $dblink =mysql_select_db("YourDB");
   $sqlstr = "select * from lab_tblpersonen";
   $sqlstr .= " where gehalt >= " . $_POST["ug"] . " and gehalt <= " . $_POST["og"];
   $sqlstr .= " order by gehalt";
   $res = mysql_query($sqlstr) or die ("keine Verbindung mit der Datenbank ".mysql_error());
   $num = mysql_num_rows($res);
   if ($num==0) {
      echo "Keine passenden Datensätze gefunden!";
   } else { ?>
	<table class="table striped">
	<thead>
	<tr><th>Lfd. Nr.</th><th>Name</th>
	<th>Vorname</th><th>Personalnummer</th>
	<th>Gehalt</th><th>Zulage</th><th>Geburtstag</th></tr>
	</thead><tbody>

<?php	while ($dsatz = mysql_fetch_assoc($res)) { ?>
		<tr>
      <td><?php echo $dsatz["id"]; ?></td>
		<td><?php echo $dsatz["name"]; ?></td>
		<td><?php echo $dsatz["vorname"]; ?></td>
		<td><?php echo$dsatz["personalnummer"]; ?></td>
		<td><?php echo number_format($dsatz["gehalt"],2,",","."); ?></td>
		<td><?php echo number_format($dsatz["zulage"],2,",","."); ?></td>
		<td><?php echo $dsatz["geburtstag"]; ?></td>
		</tr>      
<?php	} ?>
	</tbody></table>
<?php	  }
   mysql_free_result($res); 
   mysql_close($dblink);
}    
?>

Datensätze abfragen