Siemka :)
W ostatniej części "Tworzymy skracacz linków" pisałem o planach, bazie danych i formularzu -
zobacz.
Dzisiaj opiszę o działaniach PHP z bazą danych, zaczniemy od połączenia z bazą, później sprawdzania czy w bazie jest dany skrót, a później dodaniu skrótu do bazy.
Łączenie z bazą.
Tworzymy plik np. w Notepad++ w PHP i ustawiamy format na "Koduj z UTF-8 (bez BOM)" i dajemy nazwę np. db_connect.php, a jego zawartość będzie wyglądać tak.
<?php
mysql_connect("localhost", "login", "haslo") or die("Błąd połączenia z bazą danych");
mysql_select_db("nazwa tabeli") or die("Błąd połączenia z tabelą");
?>
Gdzie mysql_connect(); służy do połączenia z serwerem MySQL, a mysql_selest_db(); do wybrania bazy MySQL z którą chcemy się połączyć.
die(); zawiera komunikat w razie problemu z połączeniem i gdy problem się pojawi, to wyświetli ten komunikat.
Kod skryptu powinien wyglądać mniej więcej tak:
<?php
include_once("db_connect.php");
$zapSQL = mysql_query("SELECT * FROM skroty WHERE nazwa = '".$_GET['url']."'");
if($_GET['url'] == TRUE && mysql_num_rows($zapSQL) > 0){
while($pokaz = mysql_fetch_assoc($zapSQL)) {
echo 'Trwa przekierowanie <br />Jeśli nie nastąpi w ciągu kilku sekund, <a href="'.$pokaz['link'].'">kliknij tutaj</a>';
?>
<script type="text/javascript">
setTimeout(function(){
window.location.href = "<?php echo $pokaz['link']; ?>";
},
5000);
</script>
<?php
}
}else{
if($_POST['skroc']){
if($_POST['skroc'] && $_POST['adres'] && $_POST['nazwa']){
$zapSQL2 = mysql_query("SELECT * FROM skroty WHERE nazwa = '".$_POST['nazwa']."'");
if(mysql_num_rows($zapSQL2) > 0) {
echo 'Skrót o nazwie <b>'.$_POST['nazwa'].'</b> już istnieje :( <br />';
}else{
mysql_query("INSERT INTO skroty SET nazwa='".$_POST['nazwa']."', link='".$_POST['adres']."'");
echo 'Skrót o nazwie <b>'.$_POST['nazwa'].'</b> został dodany <br />
Adres skrótu: <a href="https://nazwa-stro.ny/?url='.$_POST['nazwa'].'">https://nazwa-stro.ny/?url='.$_POST['nazwa'].'</a><br />';
}
}else{
echo 'Nie wypełniono wszystkich pól! <br />';
}
}
?>
Gdzie:
- include_once();
wyświetla połączenie z bazą danych i tabelą
$zapSQL = mysql_query("...");
zapytanie wyświetlające skrót o nazwie podanej w linku https://nazwa-stro.ny/?url=nazwa-skrotu
if($_GET['url'] == TRUE && mysql_num_rows($zapSQL) > 0){
Jeśli jest wpisany link ?url= i w bazie danych istnieje dany skrót, to wykona daną czynność zawartą w
if(){ tutaj }
while($pokaz = mysql_fetch_assoc($zapSQL)) {
echo 'Trwa przekierowanie <br />Jeśli nie nastąpi w ciągu
kilku sekund, <a href="'.$pokaz['link'].'">kliknij
tutaj</a>';
?>
<script type="text/javascript">
setTimeout(function(){
window.location.href = "<?php echo $pokaz['link']; ?>";
},
5000);
</script>
<?php
}
Wyświetla skrót i przez JavaScript przekieruje nad do niego w ciągu 5 sekund.
}else{
if($_POST['skroc']){
//tutaj kod po kliknieciu na przycisk
}
//tutaj formularz
}
Jeśli nie wpisano nazwy skrótu w ?url= i nie ma jej w bazie, to wyświetla funkcje funkcje sprawdzającą czy wysłano formularz oraz poniżej kod formularza.
$zapSQL2 = mysql_query("SELECT * FROM skroty WHERE nazwa = '".$_POST['nazwa']."'");
if(mysql_num_rows($zapSQL2) > 0) {
echo 'Skrót o nazwie <b>'.$_POST['nazwa'].'</b> już istnieje :( <br />';
}else{
mysql_query("INSERT INTO skroty SET nazwa='".$_POST['nazwa']."', link='".$_POST['adres']."'");
echo 'Skrót o nazwie <b>'.$_POST['nazwa'].'</b> został dodany <br />
Adres skrótu: <a
href="https://nazwa-stro.ny/?url='.$_POST['nazwa'].'">https://nazwa-stro.ny/?url='.$_POST['nazwa'].'</a><br
/>';
}
Gdy przycisk został kliknięty, czyli wysłany formularz, to sprawdza czy dany skrót istnieje w bazie, jeśli tak wyświetla o tym komunikat, a jeśli nie dodaje go do bazy.
I to jest gotowy skracacz, taki troszkę okrojony, przydało by się go jeszcze zabezpieczyć i ładniejszy link skrótu np. nazwa-skrotu.nazwa-stro.ny albo nazwa-stro.ny/nazwa-skrotu.
Ale tym zajmiemy się w następnej części.
Jeśli chcesz pobrać ten skrypt, kliknij poniżej:
Pobierz skryptPozdrawiam
DraG