torsdag 13 oktober 2011
Lagra bilder i Mysql (skapa dynamiskt galleri)
Lagra bilder i Mysql (skapa dynamiskt galleri)
I detta inlägg kommer jag gå igenom hur man laddar upp bilder till din databas och sedan hanterar (lägger till tar bort) dem. Ursprungliga har jag hittat på nätet.
/*Uppdaterad,
fixat sql fråga. tack till peetra
*/
Det vi ska börja med är att skapa tabellen i vår databas.
CREATE TABLE `img_gallery` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(64) character SET utf8 NOT NULL, `ext` varchar(8) character SET utf8 NOT NULL, `image_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `data` mediumblob NOT NULL, PRIMARY KEY (`id`) );
Nästa steg är att skapa en Phpfil, namge den till "image.php" eller något passande, jag har lagt all kod i samma fil.
<?php
$db_host = "";
//Användarnamn för vår MySQL databas
$db_username = "";
//Lösenord för vår MySQL databas
$db_pass = "";
//namn för vår MySQL databas
$db_name = "";
$table = 'img_gallery';
//
if (!mysql_connect($db_host, $db_username, $db_pass))
die("Can't connect to database");
if (!mysql_select_db($db_name))
die("Can't select database");
function sql_safe($s)
{
if (get_magic_quotes_gpc())
$s = stripslashes($s);
return mysql_real_escape_string($s);
}
//___________________________________________________________________________________________________________________________
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$title = trim(sql_safe($_POST['title']));
$text = trim(sql_safe($_POST['text']));
if ($title == '') // om titeln inte är satt
$title = 'Okänd titel';// Så använder vi detta som titel
if (isset($_FILES['photo']))
{
@list(, , $imtype, ) = getimagesize($_FILES['photo']['tmp_name']);
if ($imtype == 3) // Kollar bildtyp
$ext="png";
elseif ($imtype == 2)
$ext="jpeg";
elseif ($imtype == 1)
$ext="gif";
else
$msg = 'Error: unknown file format';
if (!isset($msg)){
$data = file_get_contents($_FILES['photo']['tmp_name']);
$data = mysql_real_escape_string($data);
mysql_query("INSERT INTO {$table}
SET ext='$ext', title='$title',
data='$data', text='$text'");
$msg = 'Filen laddades upp!';
}
}
elseif (isset($_GET['title']))
$msg = 'Error: filen laddades inte upp';
//___________________________________________________________________________________________________________________________
if(!empty($_REQUEST['Delete'])){
$id = intval($_POST['opt']);
mysql_query("DELETE FROM {$table} WHERE id=$id");
$msg = 'Bild Raderad';
}
$notemsg = 'Ladda upp bild';
//___________________________________________________________________________________________________________________________
if(!empty($_REQUEST['Change'])){
$id = intval($_POST['opt']);
$result = mysql_query("SELECT id, title, data, text FROM {$table} WHERE id=$id");
list($id, $imgtitle, $imgdata, $imgtext) = mysql_fetch_row($result);
$notemsg = 'Ändra bilddata';
$savebutton = '<label for="photo">Foto:</label><br>
<input type="file" name="updatephoto" id="updatephoto"><br><br> <input type="submit" name="Save" value="Spara">';
}
//___________________________________________________________________________________________________________________________
if(!empty($_REQUEST['Save'])){
if (isset($_FILES['updatephoto'])){
@list(, , $imtype, ) = getimagesize($_FILES['updatephoto']['tmp_name']);
if ($imtype == 3)
$ext="png";
elseif ($imtype == 2)
$ext="jpeg";
elseif ($imtype == 1)
$ext="gif";
else
$errormsg = 'Error: Okänt filformat';
if (!isset($errormsg)){
$data = file_get_contents($_FILES['updatephoto']['tmp_name']);
$data = mysql_real_escape_string($data);
}
}
$id = intval($_POST['opt']);
mysql_query("UPDATE {$table} SET ext='$ext', title='$_POST[title]', data='$data', text='$_POST[text]' WHERE id='$id'");
$msg = 'Sparat';
}
//___________________________________________________________________________________________________________________________
}
elseif (isset($_GET['show'])){
$id = intval($_GET['show']);
$result = mysql_query("SELECT ext, UNIX_TIMESTAMP(image_time), data
FROM {$table}
WHERE id=$id LIMIT 1");
if (mysql_num_rows($result) == 0)
die('no image');
list($ext, $image_time, $data) = mysql_fetch_row($result);
$send_304 = false;
if (php_sapi_name() == 'apache'){
$ar = apache_request_headers();
if (isset($ar['If-Modified-Since']) &&
($ar['If-Modified-Since'] != '') &&
(strtotime($ar['If-Modified-Since']) >= $image_time))
$send_304 = true;
}
if ($send_304){
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $ts).' GMT', true, 304);
exit();
}
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $image_time).' GMT',
true, 200);
header('Expires: '.gmdate('D, d M Y H:i:s', $image_time + 86400*365).' GMT',
true, 200);
header('Content-Length: '.strlen($data));
header("Content-type: image/{$ext}");
echo $data;
exit();
}
?>
<html><head>
<title>Bildgalleri</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
if (isset($msg)) {
?>
<p style="font-weight: bold;"><?=$msg?>
<br>
<a href="<?=$PHP_SELF?>">Ladda om sida</a>
</p>
<?php
}
?>
<h2>Uppladdade bilder:</h2>
<form action="<?=$PHP_SELF?>" method="post">
<?php
$result = mysql_query("SELECT id, image_time, title FROM {$table} ORDER BY id DESC");
if (mysql_num_rows($result) == 0) // om tabellen är tom
echo '<ul><li>Inga bilder hämtades..</li></ul>';
else
{
echo '<ul>';
while(list($id, $image_time, $title) = mysql_fetch_row($result))
{
// Skriver ut
echo "<li><input type='radio' name='opt' value='{$id}'>";
echo "<a href='{$PHP_SELF}?show={$id}'>{$title}</a> – ";
echo "<small>{$image_time}</small></li>";
}
echo '</ul>';
echo '<input type="submit" name="Delete" value="Radera Vald">';
echo '<input type="submit" name="Change" value="Ändra Vald">';
}
?>
</form>
<h2><?php echo $notemsg; ?></h2>
<form action="<?=$PHP_SELF?>" method="POST" enctype="multipart/form-data">
<label for="title">Titel:</label><br>
<input type="text" name="title" id="title" value="<?php echo $imgtitle;?>" size="30"><br><br>
<label for="text">Bildtext:</label><br>
<textarea name="text" rows="10" cols="30"><?php echo $imgtext;?></textarea><br><br>
<?php echo "<input type='hidden' name='opt' value=".$_POST['opt'].">"; ?>
<?php
if(empty($_REQUEST['Change']))
{
echo '<label for="photo">Foto:</label><br>
<input type="file" name="photo" id="photo"><br><br>
<input type="submit" value="Ladda upp">';
}
echo $savebutton;
?>
</form>
</body>
</html>
Starta och kör.
Det kan kännas som väldigt mycket kod, och lite förklaring, men tanken är att du själv ska anpassa den efter hur du vill ha den. Och att jag slipper skriva så mycket ;)
Har du problem så kommentera gärna nedan, så hjälper jag till.
onsdag 12 oktober 2011
Php - mailserver
I detta inlägg kommer jag gå igenom hur man skapar ett enkelt mailsystem.
Koden hittade jag för länge sen när jag var ute och fiskade på nätet, jag har även en version där jag skickar med en bild i mailet.
Du kommer kunna fylla i ett bokningsformulär med information, som sedan skickas till din mail-adress.
Steg1
Skapa en ny php-fil med namnet "boka_form"
Kopiera och klistra in följande mellan <body> och </body>:
<table cellpadding="0" cellspacing="0" border="0" width="520px">
<tr><td style="height:10px"></td></tr>
<tr>
<td colspan="2" style="text-align:justify; line-height:15px;" class="body">
<form name="frm" method="POST" action="send_mail.php" enctype="multipart/form-data">
<tr>
<td width="23%" class="body"> Namn</td>
<td width="3%" class="body">:</td>
<td width="74%"><input type="text" name="strname" class="textfield"></td>
</tr>
<tr><td style="height:3px"></td></tr>
<tr>
<td width="23%" class="body"> Kontakt nr.</td>
<td width="3%" class="body">:</td>
<td width="74%"><input type="text" name="strno" class="textfield"></td>
</tr>
<tr><td style="height:3px"></td></tr>
<tr>
<td width="23%" class="body"> Email</td>
<td width="3%" class="body">:</td>
<td width="74%"><input type="text" name="stremail" class="textfield"></td>
</tr>
<tr><td style="height:3px"></td></tr>
<tr>
<td width="23%" class="body"> Kommentar<br /> (max 125 tecken)</td>
<td width="3%" class="body">:</td>
<td width="74%"><textarea cols="26" maxlength="125" name="strcomments"></textarea></td>
</tr>
<tr><td style="height:3px"></td></tr>
<tr>
<td colspan="3" align="center">
<input type="submit" value="Skicka" name="submit" <input type="reset" value="Rensa" name="reset">
</td>
</tr>
</form>
</table>
Steg2
Skapa en ny php-fil med namnet "send_mail"
Kopiera och klistra in följande:
<?php
$strname=ucfirst($_REQUEST["strname"]);
$phone=$_REQUEST["strno"];
if($phone != ""){ $strno=$phone; } else { $strno="-"; }
$stremail=$_REQUEST["stremail"];
$strcomments=ucfirst($_REQUEST["strcomments"]);
$strresume_name=$_FILES["strresume"]["name"];
$strresume_type=$_FILES["strresume"]["type"];
$strresume_size=$_FILES["strresume"]["size"];
$strresume_temp=$_FILES["strresume"]["tmp_name"];
if (isset($strname) && isset($stremail) && isset($strcomments))
{
$message= '
<table cellspacing="0" cellpadding="8" border="0" width="400">
<tr>
<td colspan="2"></td>
</tr>
<tr bgcolor="#eeeeee">
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Namn</strong></td>
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$strname.'</td>
</tr>
<tr><td colspan="2" style="padding:0px;"><img src="images/whitespace.gif" alt="" width="100%" height="1" /></td></tr>
<tr bgcolor="#eeeeee">
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Kontakt nr.</strong></td>
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$strno.'</td>
</tr>
<tr><td colspan="2" style="padding:0px;"><img src="images/whitespace.gif" alt="" width="100%" height="1" /></td></tr>
<tr bgcolor="#eeeeee">
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Email</strong></td>
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$stremail.'</td>
</tr>
<tr><td colspan="2" style="padding:0px;"><img src="images/whitespace.gif" alt="" width="100%" height="1" /></td></tr>
<tr bgcolor="#eeeeee">
<td colspan="2" style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Kommentar</strong></td>
</tr>
<tr bgcolor="#eeeeee">
<td colspan="2" style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$strcomments.'</td>
</tr>
<tr><td colspan="2" style="padding:0px;"><img src="images/whitespace.gif" alt="" width="100%" height="1" /></td></tr>
</table>';
$subject = "Nytt mail från svenskphp.blogspot.com";
// Till emailadress:
$to="din@emailadress.se";
// Email header med attachment
$fp = fopen($strresume_temp, "rb");
$file = fread($fp, $strresume_size);
$file = chunk_split(base64_encode($file));
$num = md5(time());
//Normala headers
$headers = "From: ".$strname."<".$stremail.">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; ";
$headers .= "boundary=".$num."\r\n";
$headers .= "--$num\r\n";
// Hjälper till att ta bort spamm
$headers .= "Message-ID: <".gettimeofday()." TheSystem@".$_SERVER['SERVER_NAME'].">\r\n";
$headers .= "X-Mailer: PHP v".phpversion()."\r\n";
// Med meddelande
$headers .= "Content-Type: text/html; charset=iso-8859-1\r\n";
$headers .= "Content-Transfer-Encoding: 8bit\r\n";
$headers .= "".$message."\n";
$headers .= "--".$num."\n";
// Ifall du har en "attachment", tex bild osv
$headers .= "Content-Type:".$strresume_type." ";
$headers .= "name=\"".$strresume_name."\"r\n";
$headers .= "Content-Transfer-Encoding: base64\r\n";
$headers .= "Content-Disposition: attachment; ";
$headers .= "filename=\"".$strresume_name."\"\r\n\n";
$headers .= "".$file."\r\n";
$headers .= "--".$num."--";
// Skicka mail
@mail($to, $subject, $message, $headers);
fclose($fp);
echo '<font style="font-family:Verdana, Arial; font-size:11px; color:#333333; font-weight:bold">Din information skickades.<br /></font>';
}
else
{
echo '<font style="font-family:Verdana, Arial; font-size:11px; color:#F3363F; font-weight:bold">Filen skickades inte, kontrollera att du fyllt i alla fält.</font>';
}
?>
Du enkelt ändra utseendet för ditt meddelande i variabeln $message
Ifall du har problem med åä och ö har du förmodligen problem med din charset, testa då att lägga in
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Längst upp i dokumentet och testa igen.
Koden hittade jag för länge sen när jag var ute och fiskade på nätet, jag har även en version där jag skickar med en bild i mailet.
Du kommer kunna fylla i ett bokningsformulär med information, som sedan skickas till din mail-adress.
Steg1
Skapa en ny php-fil med namnet "boka_form"
Kopiera och klistra in följande mellan <body> och </body>:
<table cellpadding="0" cellspacing="0" border="0" width="520px">
<tr><td style="height:10px"></td></tr>
<tr>
<td colspan="2" style="text-align:justify; line-height:15px;" class="body">
<form name="frm" method="POST" action="send_mail.php" enctype="multipart/form-data">
<tr>
<td width="23%" class="body"> Namn</td>
<td width="3%" class="body">:</td>
<td width="74%"><input type="text" name="strname" class="textfield"></td>
</tr>
<tr><td style="height:3px"></td></tr>
<tr>
<td width="23%" class="body"> Kontakt nr.</td>
<td width="3%" class="body">:</td>
<td width="74%"><input type="text" name="strno" class="textfield"></td>
</tr>
<tr><td style="height:3px"></td></tr>
<tr>
<td width="23%" class="body"> Email</td>
<td width="3%" class="body">:</td>
<td width="74%"><input type="text" name="stremail" class="textfield"></td>
</tr>
<tr><td style="height:3px"></td></tr>
<tr>
<td width="23%" class="body"> Kommentar<br /> (max 125 tecken)</td>
<td width="3%" class="body">:</td>
<td width="74%"><textarea cols="26" maxlength="125" name="strcomments"></textarea></td>
</tr>
<tr><td style="height:3px"></td></tr>
<tr>
<td colspan="3" align="center">
<input type="submit" value="Skicka" name="submit" <input type="reset" value="Rensa" name="reset">
</td>
</tr>
</form>
</table>
Steg2
Skapa en ny php-fil med namnet "send_mail"
Kopiera och klistra in följande:
<?php
$strname=ucfirst($_REQUEST["strname"]);
$phone=$_REQUEST["strno"];
if($phone != ""){ $strno=$phone; } else { $strno="-"; }
$stremail=$_REQUEST["stremail"];
$strcomments=ucfirst($_REQUEST["strcomments"]);
$strresume_name=$_FILES["strresume"]["name"];
$strresume_type=$_FILES["strresume"]["type"];
$strresume_size=$_FILES["strresume"]["size"];
$strresume_temp=$_FILES["strresume"]["tmp_name"];
if (isset($strname) && isset($stremail) && isset($strcomments))
{
$message= '
<table cellspacing="0" cellpadding="8" border="0" width="400">
<tr>
<td colspan="2"></td>
</tr>
<tr bgcolor="#eeeeee">
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Namn</strong></td>
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$strname.'</td>
</tr>
<tr><td colspan="2" style="padding:0px;"><img src="images/whitespace.gif" alt="" width="100%" height="1" /></td></tr>
<tr bgcolor="#eeeeee">
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Kontakt nr.</strong></td>
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$strno.'</td>
</tr>
<tr><td colspan="2" style="padding:0px;"><img src="images/whitespace.gif" alt="" width="100%" height="1" /></td></tr>
<tr bgcolor="#eeeeee">
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Email</strong></td>
<td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$stremail.'</td>
</tr>
<tr><td colspan="2" style="padding:0px;"><img src="images/whitespace.gif" alt="" width="100%" height="1" /></td></tr>
<tr bgcolor="#eeeeee">
<td colspan="2" style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Kommentar</strong></td>
</tr>
<tr bgcolor="#eeeeee">
<td colspan="2" style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$strcomments.'</td>
</tr>
<tr><td colspan="2" style="padding:0px;"><img src="images/whitespace.gif" alt="" width="100%" height="1" /></td></tr>
</table>';
$subject = "Nytt mail från svenskphp.blogspot.com";
// Till emailadress:
$to="din@emailadress.se";
// Email header med attachment
$fp = fopen($strresume_temp, "rb");
$file = fread($fp, $strresume_size);
$file = chunk_split(base64_encode($file));
$num = md5(time());
//Normala headers
$headers = "From: ".$strname."<".$stremail.">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; ";
$headers .= "boundary=".$num."\r\n";
$headers .= "--$num\r\n";
// Hjälper till att ta bort spamm
$headers .= "Message-ID: <".gettimeofday()." TheSystem@".$_SERVER['SERVER_NAME'].">\r\n";
$headers .= "X-Mailer: PHP v".phpversion()."\r\n";
// Med meddelande
$headers .= "Content-Type: text/html; charset=iso-8859-1\r\n";
$headers .= "Content-Transfer-Encoding: 8bit\r\n";
$headers .= "".$message."\n";
$headers .= "--".$num."\n";
// Ifall du har en "attachment", tex bild osv
$headers .= "Content-Type:".$strresume_type." ";
$headers .= "name=\"".$strresume_name."\"r\n";
$headers .= "Content-Transfer-Encoding: base64\r\n";
$headers .= "Content-Disposition: attachment; ";
$headers .= "filename=\"".$strresume_name."\"\r\n\n";
$headers .= "".$file."\r\n";
$headers .= "--".$num."--";
// Skicka mail
@mail($to, $subject, $message, $headers);
fclose($fp);
echo '<font style="font-family:Verdana, Arial; font-size:11px; color:#333333; font-weight:bold">Din information skickades.<br /></font>';
}
else
{
echo '<font style="font-family:Verdana, Arial; font-size:11px; color:#F3363F; font-weight:bold">Filen skickades inte, kontrollera att du fyllt i alla fält.</font>';
}
?>
Du enkelt ändra utseendet för ditt meddelande i variabeln $message
Ifall du har problem med åä och ö har du förmodligen problem med din charset, testa då att lägga in
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Längst upp i dokumentet och testa igen.
tisdag 11 oktober 2011
Introduktion till PHP
Introduktion
Denna introduktion kommer vara kort men effektiv, tanken är att du ska försöka dig fram själv, learn by doing är i de flesta fall överlägset när det kommer till att komma ihåg kunskap.
Tanken är att ni ska få en knuff i rätt riktning nu i början för att sedan försöka själva med mer avancerade saker, jag är helt självlärd, på både gott och ont.
PHP står för Hypertext Preprocessor och används främst för webben.
PHP är ett utmärkt sätt att utöka sina färdigheter inom webbutveckling eller dylikt.
Det rekommenderas starkt att du har en grundläggande kunskap inom HTML innan du börjar med PHP, men alla lär sig olika.
Har du ingen webbserver att testa emot?
Det första vi kommer göra är att ladda ner apache xampp. Du förstår förmodligen inte vad det betyder kortfattat skapas en virtuell server på din dator, där du kan skapa hemsidor och testköra kod.
Steg1
Ladda ner Xampp för Windows
Steg2
Installera efter angivna platser
Steg3
Kontrollera installationen genom att skriva "localhost" i din webbläsare. (127.0.0.1 i Internet Explorer ifall det inte fungerar med localhost)
Har du en webbserver eller virtuell server:
För att börja använda PHP gör du likadant som ifall du skulle göra en htmlfil. Men filändelsen ska vara .php istället för .html
index.php = PHP
index.html = HTML
När du skapat en .php fil, så testa skriv följande
<?php
echo 'Hejhopp';
?>
Spara filen på webbserven, eller för virtuell server (c:/xampp/htdocs/)
Öppna sedan in webbläsare och skriv in url-vägen till din fil.
Exempel localhost/index.php
Detta kommer att skriva ut "hejhopp".
Det som finns inom <?php och ?> är phpkod.
echo används för att skriva ut data.
Varje rad i PHP avslutas med ett semikolon.
Denna introduktion kommer vara kort men effektiv, tanken är att du ska försöka dig fram själv, learn by doing är i de flesta fall överlägset när det kommer till att komma ihåg kunskap.
Tanken är att ni ska få en knuff i rätt riktning nu i början för att sedan försöka själva med mer avancerade saker, jag är helt självlärd, på både gott och ont.
PHP står för Hypertext Preprocessor och används främst för webben.
PHP är ett utmärkt sätt att utöka sina färdigheter inom webbutveckling eller dylikt.
Det rekommenderas starkt att du har en grundläggande kunskap inom HTML innan du börjar med PHP, men alla lär sig olika.
Har du ingen webbserver att testa emot?
Det första vi kommer göra är att ladda ner apache xampp. Du förstår förmodligen inte vad det betyder kortfattat skapas en virtuell server på din dator, där du kan skapa hemsidor och testköra kod.
Steg1
Ladda ner Xampp för Windows
Steg2
Installera efter angivna platser
Steg3
Kontrollera installationen genom att skriva "localhost" i din webbläsare. (127.0.0.1 i Internet Explorer ifall det inte fungerar med localhost)
Har du en webbserver eller virtuell server:
För att börja använda PHP gör du likadant som ifall du skulle göra en htmlfil. Men filändelsen ska vara .php istället för .html
index.php = PHP
index.html = HTML
När du skapat en .php fil, så testa skriv följande
<?php
echo 'Hejhopp';
?>
Spara filen på webbserven, eller för virtuell server (c:/xampp/htdocs/)
Öppna sedan in webbläsare och skriv in url-vägen till din fil.
Exempel localhost/index.php
Detta kommer att skriva ut "hejhopp".
Det som finns inom <?php och ?> är phpkod.
echo används för att skriva ut data.
Varje rad i PHP avslutas med ett semikolon.
Skapa en dynamisk PHP-Mysql sida
I detta inlägg kommer jag gå igenom hur du ska göra för att skapa en dynamisk sida, som hämtar information från databasen för varje sida du är inne på.
Detta sköts genom att länka tex "index.php?id=1" till att hämta data från vår databas.
Nedan är ett enkelt exempel:
1. Först behöver du skapa en ny tabell i din databas, döp den till pages(eller det som passar)
Nu har du skapat en tabell som heter pages, som har en unik id, och text för varje sida.
2. Nu ska vi använda oss av PHP för att bygga ett enkelt menysystem, där vi ska länka till våra sidor.
Jag kommer använda funktioner, se tidigare inlägg Funktioner för mer information.
Det första vi ska göra är att skapa en variabel
$pageid = $_GET['pid'];
Variabeln $pageid får värdet som skickas via pid
Sedan skapar jag en testlänk, Ifall du trycker på den så ska $pageid få värdet 1, testa skriva ut $pageid för att se att allt fungerar.
<a href="index.php?pid="1">sida1</a>
Nu när allt verkar fungera, så ska vi radera länken vi nyss gjorde, och göra nya, dynamiska länkar som visas beroende på vad vi har för information i databasen.
Under variabeln $pageid skriver jag:
$page= execute_query("SELECT id, body FROM `pages` where id ='$pageid'");
foreach($page as $page) {
$body = $page['body'];
}
Här hämtar vi body från databasen, där id är densamma som $pageid.
Så ifall $pageid är 1, så hämtas också texten ur body där id är ett.
Jag tror ni börjar fatta galoppen nu.
Det vi ska göra nu är att skriva ut länkarna, detta gör vi på ett liknande sätt:
$menu= execute_query("SELECT id FROM `pages`");
foreach($menu as $menu) {
echo '<a href="index.php?pid='.$menu['id'].'">'.$menu['id'].'</a>';
}
Det sista som behöver göras är att skriva ut variabeln $body, lägg den mellan <body> och </body>.
Viktigt!
Du bör ändra din $pageid variabel till:
$pageid = preg_replace("[^0-9]","",$_GET['pid']);
$pageid = preg_replace('/\/[a-z][a-z]\//', '/', $_GET['pid']);
Detta används för att förhindra mysql-injection, din sida blir säkrare. (preg_replace kan variera beroende på viljen php-version du kör, får du upp felkoder kan du testa ändra till ereg_replace, annars kolla upp på php-net)
Hela php-koden:
<?php
include_once("database.php");
$pageid = $_GET['pid'];
$page= execute_query("SELECT id, body FROM `pages` where id ='$pageid'");
foreach($page as $page) {
$body = $page['body'];
}
$menu= execute_query("SELECT id FROM `pages`");
foreach($menu as $menu) {
echo '<a href="index.php?pid='.$menu['id'].'">'.$menu['id'].'</a>';
}
?>
</head>
<body>
<?php echo $body; ?>
</body>
Detta sköts genom att länka tex "index.php?id=1" till att hämta data från vår databas.
Nedan är ett enkelt exempel:
1. Först behöver du skapa en ny tabell i din databas, döp den till pages(eller det som passar)
CREATE TABLE IF NOT EXISTS `pages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`body` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Data i tabell `pages`
--
INSERT INTO `pages` (`id`, `body`) VALUES
(1, 'Text till sida 1'),
(2, 'Text till sida 2');
Nu har du skapat en tabell som heter pages, som har en unik id, och text för varje sida.
2. Nu ska vi använda oss av PHP för att bygga ett enkelt menysystem, där vi ska länka till våra sidor.
Jag kommer använda funktioner, se tidigare inlägg Funktioner för mer information.
Det första vi ska göra är att skapa en variabel
$pageid = $_GET['pid'];
Variabeln $pageid får värdet som skickas via pid
Sedan skapar jag en testlänk, Ifall du trycker på den så ska $pageid få värdet 1, testa skriva ut $pageid för att se att allt fungerar.
<a href="index.php?pid="1">sida1</a>
Nu när allt verkar fungera, så ska vi radera länken vi nyss gjorde, och göra nya, dynamiska länkar som visas beroende på vad vi har för information i databasen.
Under variabeln $pageid skriver jag:
$page= execute_query("SELECT id, body FROM `pages` where id ='$pageid'");
foreach($page as $page) {
$body = $page['body'];
}
Här hämtar vi body från databasen, där id är densamma som $pageid.
Så ifall $pageid är 1, så hämtas också texten ur body där id är ett.
Jag tror ni börjar fatta galoppen nu.
Det vi ska göra nu är att skriva ut länkarna, detta gör vi på ett liknande sätt:
$menu= execute_query("SELECT id FROM `pages`");
foreach($menu as $menu) {
echo '<a href="index.php?pid='.$menu['id'].'">'.$menu['id'].'</a>';
}
Det sista som behöver göras är att skriva ut variabeln $body, lägg den mellan <body> och </body>.
Viktigt!
Du bör ändra din $pageid variabel till:
$pageid = preg_replace("[^0-9]","",$_GET['pid']);
$pageid = preg_replace('/\/[a-z][a-z]\//', '/', $_GET['pid']);
Detta används för att förhindra mysql-injection, din sida blir säkrare. (preg_replace kan variera beroende på viljen php-version du kör, får du upp felkoder kan du testa ändra till ereg_replace, annars kolla upp på php-net)
Hela php-koden:
<?php
include_once("database.php");
$pageid = $_GET['pid'];
$page= execute_query("SELECT id, body FROM `pages` where id ='$pageid'");
foreach($page as $page) {
$body = $page['body'];
}
$menu= execute_query("SELECT id FROM `pages`");
foreach($menu as $menu) {
echo '<a href="index.php?pid='.$menu['id'].'">'.$menu['id'].'</a>';
}
?>
</head>
<body>
<?php echo $body; ?>
</body>
måndag 10 oktober 2011
Anslut till mysql-databas
Anslut till mysql-databas med "traditionella" metoden.
Detta kan användas för er som redan använder denna metod, men kanske vill se hur andra har gjort, om du är ny för detta rekommenderar jag dig att titta in tidigare inlägg php-mysql funktioner. Även ifall exemplet i detta inlägg kan se enklare ut, så kommer du spara mycket tid och energi att lära dig funktioner direkt.
Steg1
Skapa en fil med namnet connect_to_mysql.php
<?php
// db host-namn.
$db_host = "localhost";
//användarnamn för MySQL databas
$db_username = "";
//Lösenord för MySQL databas
$db_pass = "";
//namn för MySQL databas
$db_name = "";
//Anslutning
$myConnection = mysql_connect("$db_host","$db_username","$db_pass", "$db_name") or die ("could not connect to mysql");
?>
Ändra db_host,db_username,db_pass,db_name till dina egna värden.
Det vi har gjort nu är att lagt alla våra inloggningsuppgifter och skapat en "mysql_connect", vi ansluter alltså till vår databas via variabeln $myConnection
Detta kan användas för er som redan använder denna metod, men kanske vill se hur andra har gjort, om du är ny för detta rekommenderar jag dig att titta in tidigare inlägg php-mysql funktioner. Även ifall exemplet i detta inlägg kan se enklare ut, så kommer du spara mycket tid och energi att lära dig funktioner direkt.
Steg1
Skapa en fil med namnet connect_to_mysql.php
<?php
// db host-namn.
$db_host = "localhost";
//användarnamn för MySQL databas
$db_username = "";
//Lösenord för MySQL databas
$db_pass = "";
//namn för MySQL databas
$db_name = "";
//Anslutning
$myConnection = mysql_connect("$db_host","$db_username","$db_pass", "$db_name") or die ("could not connect to mysql");
?>
Ändra db_host,db_username,db_pass,db_name till dina egna värden.
Det vi har gjort nu är att lagt alla våra inloggningsuppgifter och skapat en "mysql_connect", vi ansluter alltså till vår databas via variabeln $myConnection
PHP-funktioner, anslut till en mysql databas
PHP funktioner - ansluta till en mysql databas
Jag hittade ett inlägg på bl.a Paulwest (Den finns dock på flera ställen, vet inte vem som var först)
Där används php-funktioner för att ansluta, och skicka frågor till en mysql databas, tex "phpmyadmin".
Följande kod har jag lagt i en phpfil och döpt till "database.php"
Allt som behöver ändras är de första raderna "db_server,db_user,db_password,db_table"
(Jag använder php 5)
<?php
function connect() {
$db_server = 'localhost';
$db_user = '';
$db_password = '';
$db_table = '';
$con = mysql_connect($db_server, $db_user, $db_password);
if(!$con){
rigger_error("Problem connecting to server");
}
$db = mysql_select_db($db_table, $con);
if(!$db){
trigger_error("Problem selecting database");
}
return $con;
}
//Stäng
function disconnect($con) {
$discdb = mysql_close($con);
if(!$discdb){
trigger_error("Problem disconnecting database");
}
}
//Kör frågor
function execute_query($sql) {
$con = connect();
$result = mysql_query($sql, $con);
if(!$result){
trigger_error("Problem slecting data");
}
while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
$result_array[] = $row;
}
disconnect($con);
return $result_array;
}
//Uppdatera
function execute_update($sql){
$con = connect();
$result = mysql_query($sql, $con);
if(!$result){
trigger_error("Problem updating data");
}
disconnect($con);
}
?>
Nu har du en komplett fil med funktioner för att köra frågor, uppdatera och radera till din databas.
Användning:
För att använda funktionerna för att tex hämta data så har jag gjort följande:
1.skapa en index.php fil.
2.Skriv:
<?php
include_once("database.php"); //vägen till database.php
$clients = execute_query("SELECT id FROM `clients`"); //Väljer ut id från clients, ändras efter egen databas!
foreach($clients as $clients) { //Ändra variabeln clients till något som passar
echo $clients['id']; //Skriver ut id
echo '<br />';
}
?>
Prenumerera på:
Kommentarer (Atom)