180 likes | 335 Views
Webprogrammering. SQL og databaser del 1. I dag. Databaser og MySQL Regner med at alle har inngående kjennskap til dette da alle har faget databaser. Går ikke igjennom SQL i dette faget! Introduksjon til MySQL og PHP Gjennomgått raskt i databasekurset. Mer grundig gjennomgang
E N D
Webprogrammering SQL og databaser del 1
I dag • Databaser og MySQL • Regner med at alle har inngående kjennskap til dette da alle har faget databaser. • Går ikke igjennom SQL i dette faget! • Introduksjon til MySQL og PHP • Gjennomgått raskt i databasekurset. • Mer grundig gjennomgang • Litt om de ulike grafiske databaseverktøyene • HeidiSQL, SQL Admin, phpMyAdmin
For å bruke SQL i PHP • Knytte til server hvor databasen ligger • Knytte til databasen • Lage en sql setning • Utføre denne • Ved selectloop’e igjennom resultatet • Feilhåndtering
SQL i PHP (uten feilhåndtering) Bruker <?php $db_server = mysql_connect("localhost","root",""); // evt. $db_server = mysql_connect(" cube.iu.hio.no", " s99999",""); $db = mysql_select_db(”test"); // evt. $db = mysql_select_db(" s99999"); $sql = "Insert INTO Ansatt (Fornavn,Etternavn,Adresse,Postnr,Poststed)"; $sql .="Values ('Per','Hansen', ’Osloveien 2','0202','Oslo')"; $resultat = mysql_query($sql); ?> Passord Merk her er ikke nummeret lagt inn (autonummer) Single funtter!
Feilhåndtering knytning til DB: <?php $db_server = mysql_connect("localhost","root",""); if(!$db_server) { die("Kunne ikke knytte til server". mysql_error()); } $db = mysql_select_db("Test"); if(!$db) { die("Feil, fant ikke databasen " . mysql_error()); } ?>
Feilhåndtering med feilhåndterer: <?php $db_server = mysql_connect("localhost","root",""); if(!$db_server) { trigger_error(mysql_error()); die (”Kunne ikke knytte til server "); } $db = mysql_select_db("Test"); if(!$db) { trigger_error(mysql_error()); die ("Feil, fant ikke databasen "); } ?>
Feilhåndtering SQL/Insert: include " connect-db "; $sql = "Insert INTO ansatt (Fornavn,Etternavn,Adresse,Postnr,Poststed)"; $sql .="Values ('Per','Hansen','Osloveien 82','0202','Oslo')"; $resultat = mysql_query($sql); if(!$resultat) { trigger_error(mysql_error()); echo "Feil, klarte ikke å sette inn data"; } elseif(mysql_affected_rows ()==0) { echo "Feil, ingen rader er satt inn"; } mysql_close($db_server); Ikke strengt tatt nødvendig
Select uten feilhåndtering include " connect-db "; $sql="Select * from ansatt"; $resultat = mysql_query($sql); $antallRader = mysql_affected_rows(); echo "Fornavn, Etternavn, Adresse, Postnr, Poststed<br/>"; for($i=0;$i<$antallRader;$i++) { $rad = mysql_fetch_array($resultat); echo $rad["Fornavn"].$rad["Etternavn"].$rad["Adresse"]; echo $rad["Postnr"].$rad["Poststed"]."<br/>"; }
Select med feilhåndtering $sql="Select * from ansatt"; $resultat = mysql_query($sql); if(!$resultat) { echo "Feil i henting av data fra databasen"; } else { $antallRader = mysql_affected_rows(); echo "Fornavn, Etternavn, Adresse, Postnr, Poststed<br/>"; for($i=0;$i<$antallRader;$i++) { $rad = mysql_fetch_array($resultat); echo $rad["Fornavn"].$rad["Etternavn"].$rad["Adresse"]; echo $rad["Postnr"].$rad["Poststed"]."<br/>"; } }
Alternativ Select med While (uten feilhåndtering) $sql="Select * from ansatt"; $resultat = mysql_query($sql); echo "Fornavn, Etternavn, Adresse, Postnr, Poststed<br/>"; while ($rad=mysql_fetch_array($resultat)) { echo $rad["Fornavn"].$rad["Etternavn"].$rad["Adresse"]; echo $rad["Postnr"].$rad["Poststed"]."<br/>"; }
Array med dobbel informasjon: Array $sql = "SELECT * FROM person"; $resultat = mysql_query($sql); $rad = mysql_fetch_array($resultat);
Eksempel på returnert array: Array $sql = "SELECT * FROM person"; $resultat = mysql_query($sql); $rad = mysql_fetch_array($resultat MYSQL_ASSOC);
Lagre fra et skjema: <form action=”” method=”post”> Fornavn:<inputtype="test" name="fornavn"/><br/> Etternavn:<inputtype="test" name="etternavn"/><br/> Adresse:<inputtype="test" name="adresse"/><br/> Postnr:<inputtype="test" name="postnr"/><br/> Poststed:<inputtype="test" name="poststed"/><br/> <input type="submit" name="knapp" value="knapp"/><br/> </form>
Hente data fraskjemaoglagre if(isset($_REQUEST["knapp"])) { $fornavn=$_REQUEST["fornavn"]; $etternavn=$_REQUEST["etternavn"]; $adresse=$_REQUEST["adresse"]; $postnr=$_REQUEST["postnr"]; $poststed=$_REQUEST["poststed"]; $sql = "Insert INTO ansatt (Fornavn,Etternavn,Adresse,Postnr,Poststed)"; $sql .="Values ('$fornavn','$etternavn','$adresse','$postnr','$poststed')"; $resultat = mysql_query($sql); if(!$resultat) { echo "Feil, klarte ikke å sette inn data". mysql_error(); } elseif(mysql_affected_rows ()==0) { echo "Feil, ingen rader er satt inn"; } } Enklere å lese lokale variabler her
Slette data Skriv etternavnet til personen for sletting: slettEtternavn <?php include "sql-connect-inc.php"; $slettEtternavn = $_REQUEST["slettEtternavn "]; $sql= "DELETE FROM Kunde WHERE etternavn = '$slettEtternavn'"; if(mysql_query($sql)) { if (mysql_affected_rows()>0) { echo" * Persondata er slettet * "; } else { echo" * Fant ikke etternavnet for sletting * "; } } else { echo mysql_error(); } Merk single fnutt før dobbel!
som skal endres: Oppdatere, sjekk for endring <?php include "sql-connect-inc.php"; $sql= " UPDATE Kunde SET Fornavn ='".$_REQUEST[" endreFornavn "]. "' "; $sql . = " WHERE Etternavn = '" .$_REQUEST[" endreEtternavn "]."' "; if(mysql_query($sql)) { if (mysql_affected_rows()>0) { echo" * Persondata er endret * "; } else { echo" * Fant ikke etternavnet for endring * "; } } else { echo mysql_error(); } Prikksyntaks med REQUEST array rett i SQL
Vise bilde fra database <?php echo "Liste over ansatte med bilde :<br/>"; echo " <table> <tr> <td>Nr</td> <td>Etternavn</td> <td>Fornavn</td> <td>Bilde</td> </tr>"; include "sql-connect-inc.php"; $sql = "SELECT * FROM ansatt"; $resultat = mysql_query($sql); while ($row = mysql_fetch_array($resultat,MYSQL_ASSOC)) { echo "<tr>"; //ny linje echo "<td>".$row['Nr']."</td>"; echo "<td>".$row['Etternavn']."</td>"; echo "<td>".$row['Fornavn']."</td>"; $bildeStreng="<img src='".$row['Bilde']."' width ='100' Height='100'"; echo "<td>$bildeStreng</td>"; echo "</tr>"; // slutt på ny linje. } echo "</table>"; include "sql-close-inc.php"; ?>
Databaseverktøy • Putty • HeidiSQL • På lab, freeware, enkel • MySQLworkbench • Freeware, mer avansert, ikke på lab • phpMyAdmin • Følger med XAMPP når det installeres lokalt