Aby uniknąć tematów typu: Jak połączyć się z bazą, jak dodać rekord? Itd...
Napiszę ten temat...
Chcesz coś napisać to napisz
Regulamin FAQ:
1. Pytanie piszemy pogrubionym tekstem, niebieskim kolorem. Przykład:
Pytanie: Jak połączyć się z bazą danych?
2. Odpowiedź normalnie, a kod PHP czy MySQL w ramach code.
To zaczynam od pierwszego pytania...
_______________________
1. Pytanie: Jak połączyć się z bazą danych?
Najlepiej łączyć się za pomocą funkcji.
Napiszmy więc ją...:
Zakładamy plik np: functions.php
Kod funkcji:
Kod:
<?php
function baza_polacz() {
$mysql_serwer = "localhost"; // Tutaj wpisujemy serwer bazy
$mysql_admin = "uzytkownik"; // Administrator bazy
$mysql_pass = "haslo"; // Hasło do bazy
$mysql_db = "baza_danych"; // Nazwa bazy danych
@mysql_connect($mysql_serwer, $mysql_admin, $mysql_pass)
or die('Błąd podczas łączenia z serwerem');
// łączymy się z bazą danych
@mysql_select_db($mysql_db)
or die('Błąd przy wybieraniu bazy danych');
}
?>
Funkcje wywołujemy następująco:
Kod:
<?
require 'functions.php';
baza_polacz();
// INSTRUCJE...
?>
Sposób inny, łączymy się bezpośrednio w pliku bez użycia funkcji:
Kod:
<?php
$connection = @mysql_connect('localhost', 'uzytkownik', 'haslo')
or die('Błąd połączenia<br />Komunikat: '.mysql_error());
echo "Połączono<br />";
$db = @mysql_select_db('nazwa_bazy', $connection)
or die('Błąd w łączeniu z bazą danych<br />Komunikat: '.mysql_error());
echo "Połączono z bazą danych!";
// INSTRUKCJE...
mysql_close($connection);
?>
2a. Pytanie: Jak dodać rekord do bazy danych?Służy do tego kod:
Kod:
INSERT INTO tabela (pole1, pole2, pole3) VALUES (tresc1, tresc2, tresc3) WHERE warunek
Prawda że proste?
2b. Jak dodać rekord do bazy za pomocą formularza?Tworzymy odpowiedni dla nas formularz:
Kod:
<form action="dodaj.php" method="post">
Imię: <input type="text" name="imie"><br/>
Nazwisko: <input type="text" name="nazwisko"><br/>
<input type="submit" value="Dodaj">
</form>
Teraz plik dodaj.php:
Kod:
<?
$imie = $_POST['imie'];
$nazwisko = $_POST['nazwisko'];
// Łączenie z bazą pomijam....
$query = "INSERT INTO spis (imie, nazwisko) VALUES ('$imie', '$nazwisko');";
$result = mysql_query($query);
echo 'Dodano';
?>
3a. Pytanie: Jak pobrać dane z bazy danych?Struktura zapytania:
Kod:
SELECT pole FROM tabela WHERE warunek ORDER BY sortowanie
W miejsce pole wstawiamy nazwę pola z tabeli (np. imie) lub * (wybieramy wszystko).
W praktyce ma się to tak:
Kod:
<?
// Łączenie z bazą....
$wynik = mysql_query("SELECT * FROM osoby WHERE aktywna='1' ORDER BY id DESC");
while ($row = mysql_fetch_array($wynik)) {
$imie = $row['imie'];
$nazwisko = $row['nazwisko'];
echo $imie;
echo '<br>';
echo $nazwisko;
echo '<br><br';
}
?>
Pojawiła się pętla (wihle) Po co?
A żeby pobrać wszystkie rekordy za jednym razem i je wyświetlić.
3b. Pytanie: Jak wyświetlić ostatnie X rekordów z bazy?Służy to tego parametr
Kod:
LIMIT X
Trochę praktyki:
Kod:
// Łączenie z bazą....
$wynik = mysql_query("SELECT * FROM osoby WHERE aktywna='1' ORDER BY id DESC LIMIT 5");
// Dalej pętla
?>
To spowoduje wyświetlenie pięciu pozycji.
4. Pytanie: Jak zabezpieczyć stronę hasłem?Można to zrobić na wiele sposobów, jeden z nich (nie jest za bardzo bezpieczny i nie polecam stosować do przechowywania ważnych informacji):
Tworzymy formularz logowania:
Kod:
<form action="loguj.php" metchod="post">
Nick: <input type="text" name="login"><br/>
Hasło: <input type="password" name="pass"><br/>
<input type="submit" value="Zaloguj">
</form>
Plik sprawdzający poprawność wpisanych danych (loguj.php) powinien mieć mniej więcej taką strukturę:
Kod:
<?
$nick = $_POST['nick']; // Pobieramy nick z formularza
$haslo = $_POST['pass']; // Pobieramy hasło z formularza
if ( $nick == $_POST['nick']; && $haslo == $_POST['pass']; ) { // Sprawdzamy poprawność danych
echo 'Treść dla zalogowanego...';
else {
echo 'Błąd';
}
?>
5a. Pytanie: Jak usunąć rekord z bazy?Struktura zapytania, pozwalająca na usunięcie rekordu:
Kod:
DELETE pole FROM tabela WHERE warunek
W praktyce:
Kod:
<?
// Łączenie z bazą....
$wynik = mysql_query("DELETE FROM osoby WHERE ban='1'");
?>
5b. Pytanie: Jak usunąć rekord za pomocą linku? Aby to zrobić, musimy pobrać jakąś istotną informacje (pole) z tabeli i pokierować ją do zapytania, pod postacią wartości warunku... A więc pokażmy rekordy (linki):
Kod:
<?
// Łączenie z bazą....
$wynik = mysql_query("SELECT * FROM osoby WHERE ban='1'");
while ($row = mysql_fetch_assoc($wynik)) {
$id = $row['id'];
$imie = $row['imie'];
echo "<a href='delete.php?id=$id'>$imie - usuń</a>";
}
?>
W ten sposób pokazaliśmy dane z bazy, i przekazaliśmy zmienną id do pliku delete.php...
Plik Delete.php:
Kod:
<?
$id = $_GET['id'];
$wynik = mysql_query("DELETE FROM osoby WHERE id='$id'");
echo 'Usunięto!';
?>
6. Pytanie: Jak zaktualizować rekord?Struktura zapytania:
Kod:
UPDATE tabela SET pole='tresc1', pole2='tresc2' WHERE warunek
W praktyce wygląda to tak:
Kod:
<?
$imie = "Daniel";
$nazwisko = "XXX";
$wynik = mysql_query("UPDATE osoby SET imie='$imie', nazwisko='$nazwisko' WHERE id=".$_GET['id']."");
echo 'Zaktualizowano';
?>
7. Pytanie: Co to są zmienne i jak ich używać?Zmienne to coś mniej więcej: zdefiniowana wcześniej wartość, którą możemy wywołać...
Przykład zmiennych:
Kod:
<?
$imie = "Daniel";
$liczba = 1;
?>
Wywołanie zmiennych odbywa się w następujący sposób:
Kod:
<?
echo $imie;
echo $liczba;
echo "$imie - $liczba";
?>
Można z tym kombinować wg. upodobań
8. Pytanie: Jak wysłać e-maila z poziomu strony?Kod:
<?php
if(isset($_POST['tresc'])) { // Jeżeli z formularza przyjdzie tresc
mail('email@odbiorcy.pl','Temat wiadomości','Treść wiadomości...','From: Szczepan Wąs <twoj@email.com>'); // Wysyłamy maila!
?>
To tyle - w kodzie wszystko pisze :]
Aby wysłać maila ze strony trzeba mień włączoną funkcję mail() na serwerze.
9. Pytanie: Jak zrobić licznik odwiedzin strony oparty na plikach tekstowych?Kod:
<?
$licznik = 'licznik.txt'; // Nazwa pliku z licznikiem
if(!file_exists($licznik) // Jeżeli plik licznik.txt nie istnieje
{
$plik = fopen($licznik, 'w'); // Utwórz plik licznik.txt
fwrite($plik, '0'); // Zapisz do niego 0
fclose($plik); // Zamknij niepotrzebny już wskaźnik pliku
echo 'Odwiedzin: 0';
}
else
{
$ilosc = file_get_contents($licznik); // Pobierz zawartość pliku licznik.txt
$ilosc++; // Zwiększamy liczbę odwiedzin o jeden
echo 'Odwiedzin: '.$ilosc; // Wyświetlamy liczbę odwiedzin
$plik=fopen($licznik,'w'); // Kasujemy zawartość pliku licznik.txt
fwrite($plik, $ilosc); // Zapisujemy nową liczbę odwiedzin
fclose($plik);
}
?>
Kod utworzy plik licznik.txt i będzie do niego zapisywał odsłony strony
10. Pytanie: Jak wylosować losową liczbę?Struktura kodu wygląda tak:
Kod:
<?
$losowa_liczba = rand(x, y)
?>
X - Liczba minimalna
Y - Liczba maxymalna
Skrypt losuje liczbę z przedziły x i y.
Służy do tego jak widać funkcja rand()
Możemy też napisać:
Kod:
print rand();
Wyświetli to całkiem losową liczbę.
Można to stosować do generowania kodów przy rejestracji

Praktyka:
Kod:
<?
$liczba_losowa = rand(100, 999);
print 'Liczba losowa: '.$liczba_losowa;
?>
KOPIOWANIE BEZ MOJEJ ZGODY ZABRONIONE!!![/code]