|  SQL - SELECT kodeeksempler.
 
 
 Sider vedr. SELECT kan ses herfra:
 
 
|  | Syntaks |  |  | Diverse kodeksempler |  |  | Dynamisk select |  |  | Sideopdelt select |  
 
 
 
 Select kommandoen er uden sammenligning den mest komplekse af alle SQL kommandoerne. Beskrivelsen af den er delt op i en række afsnit baseret på nedenstående menu: 
 
|  | mysqli_real_escape_string() |  |  | Select - basis eksempler |  |  | $row |  |  |  |  
 
 
 
 Select - basis eksempler
 Nedenfor er vist 4 grundformer for SELECT. De kan udbygges efter behov. 
 
 
 Mange records til tabel
 | 
$query = "SELECT * FROM tabelnavnORDER BY feltnavn ASC";
 $result = mysqli_query($db_link, $query) or die(mysqli_error($db_link));
 $antal = mysqli_num_rows ($result);
 if ($antal == 0)
 {
    echo "<p>Der blev ikke fundet nogen data.<p>";
    }
 else
 {
 echo '<table>';
 while ($row = mysqli_fetch_assoc ($result))
 {
 echo "<tr>";
 echo "<td>" . $row['felt_navn01'] . "</td>";
 .
 .
 .
 echo "</tr>";
 }  // slut while
 echo  "</table>";
 }
 | 
 
 
 
 Mange records til tabel - INNER JOIN
 
 | 
 $query = "SELECT * FROM tabelnavn01INNER JOIN tabelnavn02 ON fk_feltnavn01_id = feltnavn01_id
 INNER JOIN tabelnavn03 ON fk_feltnavn02_id = feltnavn02_id
 WHERE fk_felt04_id = '$fk_felt04_id'
 ORDER BY feltnavn05 asc";
 $result = mysqli_query($db_link, $query) or die(mysqli_error($db_link));
 $antal = mysqli_num_rows($result);
 if ($antal == 0)
 {
 echo "Der blev ikke fundet nogen data";
 }
 else
 {
 echo "<table>";
 echo "<tr><td>Tekst01</td><td>Tekst02</td><td>Tekst03</td></tr>";
 while ($row = mysqli_fetch_assoc ($result))
 {
 echo "<tr><td>" .$row['feltnavn_a'] . "</td><td>" . $row['feltnavn_b'] . "</td><td>" . $row['feltnavn_c'] . "</td></tr>";
 } // slut while
 echo "</table>";
 }
  | 
 
 
 
 Enkelt record til tabel
 Vil, hvis feltet har mange forekomster, give mange records. 
 | 
         $query = "SELECT felt1, felt2 FROM tabelWHERE feltnavn = $variabel";
 $result = mysqli_query($db_link, $query) or die(mysqli_error($db_link));
 $row = mysqli_fetch_assoc ($result);
 $antal = mysqli_num_rows ($result);
 if ($antal == 0)
 {
            echo "<p>Der blev ikke fundet nogen data.<p>";
        }
 else
 {
 echo "<table>";
 echo "<tr><td>Tekst</td><td>" . $row['felt1'] . "</td></tr>";
 echo "<tr><td>Tekst</td><td>" . $row['felt2']. "</td></tr>";
 echo "</table>";
  | 
 
 
 
 Enkelt / ingen record til brug ved validering.
 og andre situationer, hvor der kun er brug for en / ingen record og antal, men ikke data; f.eks. til validering. | // hent data til Select-menu for xxx $query = "SELECT * FROM tabel
 WHERE feltnavn = '$variabel'";
 $result = mysqli_query($db_link, $query) or die(mysqli_error($db_link));
 $antal = mysqli_num_rows($result);
 if ($antal > 0)
 {$fejlbeskeder .= "Den xxx du har angivet findes allerede.<br />";}
 | 
 
 
 
 Kommasepareret fil.
 Etablering af komma-separeret fil (.csv), der umiddelbart kan åbnes med bl.a. Excel. Filen kan placeres hvorsomhelst indenfor eget LAN. 
 FIELDS TERMINATED BY ','. Separator mellem felter. Normalt ',' eller ';'. Escape-karakteren '\t' (tabulator) kan også anvendes. Vigtigst er, at det anvendte tegn ikke forekommer i datastrengene og at filen kan læses af det program / programmeringssprog, der skal bruge dataene. 
 LINES TERMINATED BY '\n'. Escape-karakteren '\n' (linieskift) anvendes oftest til at afslutte records. 
 | $query = "SELECT * INTO OUTFILE 'c:/test/filnavn.csv'
 FIELDS TERMINATED BY ','
 LINES TERMINATED BY '\n'
 FROM tabelnavn";
 $result = mysqli_query($db_link, $query) or die(mysqli_error($db_link));
 | 
 
 
 
 
 $row
 Fra $row kan der overføres data til enkeltfelter, tabeller, lister og arrays. Tabeller er indeholdt i eksemplerne ovenfor 
 Udtræk til liste - menu med sidegenbrug.
 Faste menupunkter kan indsættes før og efter udtrækket. 
 | $query = "SELECT * FROM tabelnavn"; $result = mysqli_query($db_link, $query) or die(mysqli_error($db_link));
 $antal = mysqli_num_rows ($result);
 if ($antal > 0)
 {
 echo "<ul>";
 echo "<li><a href='index.php'>Velkommen</a></li>";
 while ($row = mysqli_fetch_assoc ($result))
 {
 echo "<li><a href='produkter.php?kat_id=$menu_row[kat_id]&kat_navn=$row[kat_navn]'>$row[kat_navn]</a></li>";
 } // While slut
 echo "<li><a href='kontakt.php'>Kontakt</a></li>";
 echo "</ul>";
 } // antal
 else
 {
 echo "Der er ingen data til menuen";
 } // antal slut
 ?>
 | 
 
 
 
 Udtræk til array - ASSOCIATED.
 | $query = "SELECT * FROM tabelnavn01 inner join tabelnavn02 on tabelnavn01.fk_feltnavn01_id = tabelnavn02.feltnavn02_id
 WHERE feltnavn03 = $feltnavn04
 order by tabelnavn02.feltnavn02_id asc ";
 $result = mysqli_query($db_link, $query) or die(mysqli_error($db_link));
 while ($row = mysqli_fetch_assoc ($result))
 {
 $g_rettigheder[$row['navnefelt']] = $row['værdifelt'];
 } //slut while
 | 
 
 
 
  ----------  Nedenfor vises en række eksempler på anvendelse af SELECT-kommandoen: 
 
 
 Enkelt record til Value-felter i input type-tags.
 og andre situationer, hvor der kun er brug for en record. 
 | 
<?php$query = "SELECT * FROM tabelnavn
 WHERE feltnavn = $variabel";
 $result = mysqli_query($db_link, $query) or die(mysqli_error($db_link));
 $row = mysqli_fetch_assoc ($result);
 $antal = mysqli_num_rows ($result);
 if ($antal == 0)
 {
 echo "<p>Der blev ikke fundet nogen data.</p>";
 }
 ?>
 .
 .
 <form method="post">
 <table>
 <tr><td>tekst</td><td><input type="text" name="navn" value="<?php echo $row['feltnavn'] ?>" /></td></tr>
 .
 .
 
 | 
 
 eller 
 Omlægning til variabler som 'mellemled' | 
<?php$query = "SELECT * FROM tabelnavn
 WHERE feltnavn = $variabel";
 $result = mysqli_query($db_link, $query) or die(mysqli_error($db_link));
 $row = mysqli_fetch_assoc ($result);
 $antal = mysqli_num_rows ($result);
 if ($antal == 0)
 {
 echo "<p>Der blev ikke fundet nogen data.</p>";
 }
 else
 }
 $variabel01      = $row['feltnavn01'];
 $variabel02  = $row['feltnavn02'];
 .
 .
 }
 ?>
 .
 .
 <form method="post">
 <table>
 <tr><td>tekst</td><td><input type='text' name='navn' value="<?php echo $variabel01; ?>" /></td></tr>
 .
 .
 | 
 
 
 
 
 Små eksempler på select.
|  | Udskriv alle informationer om alle lokaler. -----
 
 "SELECT * FROM lokaler"; |  |  | Lav en knap eller et link med teksten "Vis alle", der viser alle lokaler, når der klikkes på det -----
 
 "SELECT navn FROM lokaler"; |  | where order by
 | Find og udskriv  navnene på alle lokaler der ikke har en projektor, sorteret alfabetisk. -----
 
 "SELECT navn FROM lokaler WHERE projektor <> 1 ORDER BY navn ASC"; |  | where <
 order by
 | Find og udskriv  navn og max antal elever på alle lokaler, der har plads til mindre end 30 elever, sorter dem efter MaxElever, stigende. -----
 
 "SELECT navn, maxelever FROM lokaler WHERE maxelever < 30 ORDER BY maxelever ASC"; |  | where between
 order by
 | Find og udskriv  navnene på alle lokaler der kan have mellem 25 og 35 elever (begge tal inklusiv). -----
 
 "SELECT navn FROM lokaler WHERE maxelever BETWEEN '25' and '35' ORDER BY navn, maxelever ASC"; |  | order by limit
 | Vælg de 3 største lokaler. -----
 
 "SELECT navn,maxelever FROM lokaler ORDER BY maxelever DESC LIMIT 0,3 "; |  | order by rand()
 limit
 | Udskriv alle informationer om et tilfældigt lokale, udvalgt af systemet. -----
 
 "SELECT * FROM lokaler ORDER BY RAND() LIMIT 1"; |  | where like
 | Find og udskriv  navnene på alle lokaler som starter med et "C". -----
 
 "SELECT navn FROM lokaler WHERE navn LIKE 'C%'" |  | where like
 | Find og udskriv  navnene på alle lokaler hvor der i anvendelse findes mindst et "e". -----
 
 "SELECT navn FROM lokaler WHERE anvendelse LIKE '%e%'"; |  | where like
 | Lav et tekstfelt, hvor der kan søges efter alle lokaler indeholdende en bestemt tegnkombination (et eller flere sammenhængende bogstaver) i navnet. -----
 
 "SELECT navn FROM lokaler WHERE navn LIKE '%$streng%'"; |  | where like
 | Lav et tekstfelt, hvor der kan søges efter alle lokaler indeholdende en bestemt tegnkombination (et eller flere sammenhængende bogstaver) i navnet. Der skal kunne vælges mellem alle bogstaver i navnet eller om søgningen skal starte fra begyndelsesbogstavet i navnet.
 -----
 
 "SELECT navn FROM lokaler WHERE navn LIKE '$streng'"; |  | inner join | Udskriv alle informationer om alle lokaler incl. hvilken bygning lokalet hører til. -----
 
 "SELECT * FROM lokalerINNER JOIN bygning ON fk_bygning_id = bygning_id";
 $result = mysqli_query($db_link02,$query);
 |  | inner join where
 | Lav 3 links - et til hver bygning. Find og udskriv lokalerne, der hører til den enkelte bygning, når der er trrykket på et af linkene -----
 
 "SELECT navn FROM lokalerleft JOIN bygning ON fk_bygning_id = bygning_id
 WHERE bygning_id = 1";
 |  | inner join | Find og udskriv antal lokaler pr. bygning -----
 
 "SELECT bygning_navn, count(fk_bygning_id) as antal FROM lokalerINNER JOIN bygning ON fk_bygning_id = bygning_id
 group by fk_bygning_id";
 |  
 Et udtræk består kodemæssigt af 3 dele: 
 
| 1 | $query = "SELECT * FROM sidedata"; | Etablering af variablen $query, der har SQL-sætningen som sin værdi. |  | 2 | $result = mysqli_query ($db_link, $query) or die (mysqli_error ($db_link)); | Etablering af variablen $result, der har ODBC-funktionerne mysqli-query og mysqli_error som værdi. mysqli_query udtrækker data fra databasen til $result baseret på de 2 parametre, hvoraf $query er defineret på linien ovenover og $db_link i includeprogrammet db_connect.php
 De udtrukne data placeres i $result-variablen.
 
 mysqli_error tager over, hvis noget gået galt under dataudtrækket.
 |  | 3 | $row = mysqli_fetch_assoc ($result);.
 .
 
 | Med ODBC-funktionen mysqli_fetch_assoc hentes en række (ad gangen) fra databaseudtrækket til lagring i variablen $row som "associativ" array for videre individuel benyttelse i php. |  | 3a | while($row = mysqli_fetch_assoc ($result)).
 .
 | Den videre brug af row-dataene kan ske ganske hurtigt. |  
 
 
 DataUdtræk 1
 Generelt udtræk og visning af flere felter fra den først udtrukne record. 
 
| 
<?php$query = "SELECT * FROM sidedata";
 $result = mysqli_query ($db_link, $query) or die (mysqli_error ($db_link));
 $row = mysqli_fetch_assoc ($result);
 echo $row['omos_id'];
 echo nl2br ($row['side_tekst']);
 ?>
 | Indsættes på HTML-siden der hvor dataene skal vises. |  
 
 
 Udtræk 2
 Generelt udtræk og visning af et felt fra hver record i udtrækket. 
 | 
<?php$query = "SELECT * FROM sidedata";
 $result = mysqli_query ($db_link, $query) or die (mysqli_error ($db_link));
 while($row = mysqli_fetch_assoc ($result))
 {
 echo nl2br ($row['side_tekst']);
 }
 | Indsættes på HTML-siden der hvor dataene skal vises. | 
 
 
 
 Udtræk 3
 Generelt udtræk og visning af data fra specifik record i udtrækket. 
 | 
<?phpDen sidste del kan også kodes således:$query = "SELECT * FROM 04div_tabel02";
 $result = mysqli_query ($db_link, $query) or die (mysqli_error ($db_link));
 while($row = mysqli_fetch_assoc ($result))
 {
 if($row["04div_id"] == 3)
 {
 echo $row['04div_id']; ?>
 <?php echo "<h1>" . $row ['04div_overskr'] . "</h1>"; ?>
 <?php echo nl2br ($row['04div_tekst']); ?>
 <?php
 }
 }
 ?>
 
 
while($row = mysqli_fetch_assoc ($result)){
 if($row["04div_id"] == 3)
 {
 echo $row['04div_id'];
 echo "<h1>" . $row ['04div_overskr']). "</h1>";
 echo $row nl2br (['04div_tekst']);
 }
 }
 ?>
 | Indsættes på HTML-siden der hvor dataene skal vises. | 
 
 
 
 Udtræk 4
 Indbygning af udtræk i f.eks. liste eller tabel. Nedenfor er den første listelinie hardkodet. 
 | <ul> <li><a href='index.php'>Forside</a></li>
 <?php
 $query = " SELECT * FROM hold ORDER BY hold_navn ASC ";
 $result = mysqli_query ($db_link, $query) or die (mysqli_error ());
 
 while ($row = mysqli_fetch_assoc ($result))
 {
 echo "<li><a href='elever.php?hold_id=$row[hold_id]'>$row[hold_navn]</a&ht;</li>";
 }
 ?>
 </ul>
 | Indsættes på HTML-siden der hvor dataene skal vises. | 
 
 
 
 Diverse
 Antal records i "result".
 Efter Result indsættes: | $antal = mysqli_num_rows ($result); if($antal > 0) ...
 | 
 
 
 
 Billeder
 Visning af billeder
    Billeder placeres i mappe i tilknytning til aktuelt site.Billednavne (xx.jpg etc.) placeres i tabel i DB i feltet 'billeder_img'.i udtrækssekvens i php indsættes:
 | echo "<img src=' ". $row['billeder_img']  . " ' >" ; Sti til billede indsættes mellem echo og "<img
 | 
  
         
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 |