Paul 0 Zgłoś post Napisano Marzec 6, 2012 Hej, Poszkuję rozwiązania na dość nurtujące mnie pytanie Chciałbym zrobić coś jak mini cms tzn. jedna tabela mysql i potem wyświetlanie tego na www. - Czy mógłby ktoś mi polecić jak to zrobić Tabela w mysql mogła by wyglądać tak SQL - nazwa "dane" zawartość id|nazwa|opis|obrazek 1|Jan|Opis|jan.jpg 2|Anna|Opis|anna.jpg 3|Zofia|Opis|zofia.jpg 4|Krystyna|Opis|krystyna.jpg 5|Beata|Opis|beata.jpg na stronie chciałbym żeby to bylo wyświetlane w sposób http://www.adres.pl/index.php?id=1 itd. (chętniej seo czyli http://www.adres.pl/jan ). <html> <head></head> <body> <img src="jan.jpg"><br/> <b>Imię</b>: Jan<br/> <b>Opis</b>: Opis<br/> </body> </html> Dzieki. Pozdrawiam, Udostępnij ten post Link to postu Udostępnij na innych stronach
wiktor12348 12 Zgłoś post Napisano Marzec 6, 2012 (edytowany) Znasz takie coś jak php ? <? $id=$_GET['id']; mysql_connect("adres serwera", "login", "hasło")or die("BLAD: nie mozna sie polaczyc z serverem MySQL"); mysql_select_db("NAZWA_BAZY"); $zapytanie=mysql_query("Select * from nazwa_bazy where id=$id"); echo'<b>Imię</b>: '.$zapytanie['nazwa'].'<br/> '; ?> Polecam: http://webmade.org i inne tego typu portale. Oczywiście trzeba to jeszcze dopracować i zabezpieczyć Edytowano Marzec 6, 2012 przez wiktor12348 (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
xorg 693 Zgłoś post Napisano Marzec 6, 2012 (edytowany) Znasz takie coś jak php ? A Ty znasz? Chyba nie.. <?php $id = (int) $_GET['id']; if(!$id) { die('Brak indentyfikatora'); } mysql_connect("adres serwera", "login", "hasło") or die("BLAD: nie mozna sie polaczyc z serverem MySQL"); mysql_select_db("NAZWA_BAZY"); $sql = mysql_query("SELECT * FROM `nazwabazy` WHERE `id` = '$id' ORDER BY `id` ASC"); if($sql) { echo ' <table cellspacing="1" cellpadding="5"> <tr> <th>Imie</th><th>Opis</th><th>Zdjęcie</th> </tr>'; while($row = mysql_fetch_array($sql, MYSQL_ASSOC)) { echo '<tr> <td>' . $row['nazwa'] . '</td> <td>' . $row['opis'] . '</td> <td><img src="' . $row['obrazek'] . '" alt="' . $row['nazwa'] . '"></td> </tr> '; } echo '</table>'; } mysql_close(); ?> Edytowano Marzec 6, 2012 przez xorg (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
wiktor12348 12 Zgłoś post Napisano Marzec 6, 2012 (edytowany) Ja mu to dałem w formie uproszczonej. Wszystko zawarte w tym było co potrzebuje. Nie wiem o co Ci chodzi Doczytaj komentarz. Aj i no oczywiście mysql_fetch Jeśli chce się nauczyć, nikt za niego tego zrobić nie może. Do twojej formy też można się przyczepić, jakbym był już taki drobiazgowy :PP Chociażby zapezpieczenie zmiennej przez mysql_escape_string() Edytowano Marzec 6, 2012 przez wiktor12348 (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
xorg 693 Zgłoś post Napisano Marzec 6, 2012 Ja mu to dałem w formie uproszczonej. Wszystko zawarte w tym było co potrzebuje. Chyba nie - mysql_query nie zwraca wyników, tylko jego identyfikator. Do twojej formy też można się przyczepić, jakbym był już taki drobiazgowy :PPChociażby zapezpieczenie zmiennej przez mysql_escape_string() Kolejna wtopa jako parapetr otrzymujemy zmienną typu int, co jest filtowane w tym kawałku kodu $id = (int) $_GET['id']; - jeżeli wprowadzony parametr nie jest liczbą, zostanie zamieniony na zero. Nastepnie if(!$id) { die('Brak indentyfikatora'); } zatrzymuje wykonywanie kodu jeżeli parametr id jest równy zero bądź mniejszy. Nie potrzebujemy "eskejpowania" wprowadzanych danych, bo nie są to ciągi znaków w które można wprowadzić przykładowo znaki ' bądź ". Zanim zaczniesz kogoś pouczać upewnij się że wiesz co mówisz Udostępnij ten post Link to postu Udostępnij na innych stronach
Paul 0 Zgłoś post Napisano Marzec 7, 2012 xorg, dzięki za pomoc Zrobiłem tak jak Ty napisałeś z tym, że dodałem jedno pole w tabeli: -- -- Struktura tabeli dla `dane` -- CREATE TABLE IF NOT EXISTS `dane` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nazwa` tinytext CHARACTER SET latin1 NOT NULL, `prefix` tinytext CHARACTER SET latin1 NOT NULL, `opis` text CHARACTER SET latin1 NOT NULL, `obrazek` varchar(50) CHARACTER SET latin1 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=3 ; -- -- Zrzut danych tabeli `dane` -- INSERT INTO `dane` (`id`, `nazwa`, `prefix`, `opis`, `obrazek`) VALUES (1, 'Jan', 'janek', 'Jasiek', 'jan.jpg'), (2, 'Zofia', 'zoska', 'Zo?ka', 'zofia.jpg'); natomiast kod index.php <?php $prefix = (int) $_GET['prefix']; if(!$prefix) { die('Brak indentyfikatora'); } mysql_connect("localhost", "root", "root") or die("BLAD: nie mozna sie polaczyc z serverem MySQL"); mysql_select_db("test"); $sql = mysql_query("SELECT * FROM `dane` WHERE `prefix` = '$prefix' ORDER BY `prefix` ASC"); if($sql) { echo ' <table cellspacing="1" cellpadding="5"> <tr> <th>Imie</th><th>Opis</th><th>Zdjęcie</th> </tr>'; while($row = mysql_fetch_array($sql, MYSQL_ASSOC)) { echo '<tr> <td>' . $row['nazwa'] . '</td> <td>' . $row['opis'] . '</td> <td><img src="' . $row['obrazek'] . '" alt="' . $row['nazwa'] . '"></td> </tr> '; } echo '</table>'; } mysql_close(); ?> Prefix dodałem w celu wywoływania tzn. http://www.adres.pl/index.php?prefix=janek - ale niestety to nie działa Co potrzeba poprawić? Jak zrobić, żeby po wejściu na index.php wyświetlały się wszystkie pozycje z tabeli np. <ul> <li><a href="index.php?prefix=janek">Janek</a></li> <li><a href="index.php?prefix=zoska">Zofia</a></li> </ul> Udostępnij ten post Link to postu Udostępnij na innych stronach
xorg 693 Zgłoś post Napisano Marzec 7, 2012 (edytowany) `prefix` tinytext Pewnie dlatego <?php $prefix = $_GET['prefix']; if(empty($prefix)) { die('Brak indentyfikatora'); } mysql_connect("localhost", "root", "root") or die("BLAD: nie mozna sie polaczyc z serverem MySQL"); mysql_select_db("test"); $prefix = mysql_real_escape_string($prefix); $sql = mysql_query("SELECT * FROM `dane` WHERE `prefix` = '$prefix' ORDER BY `prefix` ASC"); if($sql) { echo ' <table cellspacing="1" cellpadding="5"> <tr> <th>Imie</th><th>Opis</th><th>Zdjęcie</th> </tr>'; while($row = mysql_fetch_array($sql, MYSQL_ASSOC)) { echo '<tr> <td>' . $row['nazwa'] . '</td> <td>' . $row['opis'] . '</td> <td><img src="' . $row['obrazek'] . '" alt="' . $row['nazwa'] . '"></td> </tr> '; } echo '</table>'; } mysql_close(); ?> Jak zrobić, żeby po wejściu na index.php wyświetlały się wszystkie pozycje z tabeli np. Hm. Tutaj już trochę bardziej strukturalne programowanie by się przydało, ale da radę bez. <?php $prefix = $_GET['prefix']; mysql_connect("localhost", "root", "root") or die("BLAD: nie mozna sie polaczyc z serverem MySQL"); mysql_select_db("test"); $prefix = mysql_real_escape_string($prefix); if(empty($prefix)) { $sql = mysql_query("SELECT `prefix`, `nazwa` FROM `dane` ORDER BY `prefix` ASC"); if($sql) { echo '<ul>'; while($row = mysql_fetch_array($sql, MYSQL_ASSOC)) { echo '<li><a href="index.php?prefix=' . $row['prefix'] . '">' . $row['nazwa'] . '</a></li>'; } echo '</ul>'; } } else { $sql = mysql_query("SELECT * FROM `dane` WHERE `prefix` = '$prefix' ORDER BY `prefix` ASC"); if($sql) { echo ' <table cellspacing="1" cellpadding="5"> <tr> <th>Imie</th><th>Opis</th><th>Zdjęcie</th> </tr>'; while($row = mysql_fetch_array($sql, MYSQL_ASSOC)) { echo '<tr> <td>' . $row['nazwa'] . '</td> <td>' . $row['opis'] . '</td> <td><img src="' . $row['obrazek'] . '" alt="' . $row['nazwa'] . '"></td> </tr> '; } echo '</table>'; } } mysql_close(); ?> Edytowano Marzec 7, 2012 przez xorg (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Paul 0 Zgłoś post Napisano Marzec 7, 2012 xorg, hmm czyli co powinienem zmienić w tym "prefix" w bazie danych? - co zrobić, żeby w polu "opis" w mogły być PL znaki? - jak na stronie głównej (tzn. index.php) było wylistowania wszystkich wpisów z bazy danych? Dziękuję. Pozdrawiam, Udostępnij ten post Link to postu Udostępnij na innych stronach
xorg 693 Zgłoś post Napisano Marzec 7, 2012 hmm czyli co powinienem zmienić w tym "prefix" w bazie danych? Nic. Po prostu kod nie był dostosowany. - co zrobić, żeby w polu "opis" w mogły być PL znaki? Zmienić kodowanie na latin2 bądź utf8. - jak na stronie głównej (tzn. index.php) było wylistowania wszystkich wpisów z bazy danych? Drugi kod stąd to robi Udostępnij ten post Link to postu Udostępnij na innych stronach
Paul 0 Zgłoś post Napisano Marzec 7, 2012 ok, dzięki ustawiłem kodowanie z bazie na - utf8_general_ci - w phpmyadminie wyświetlają mi się pl znaki natomiast na stronie już nie... dodałem oczywiście "<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />" w phpmyadmin wyświetla mi się - ąęśćłółźż, na stronie natomiast ?????�??? jeśli w phpmyadmin zmieniłem na ąęśćłółźż to na stronie jest ok czyli ąęśćłółźż Udostępnij ten post Link to postu Udostępnij na innych stronach
xorg 693 Zgłoś post Napisano Marzec 7, 2012 w phpmyadmin wyświetla mi się - ąęśćłółźż, na stronie natomiast ?????�???jeśli w phpmyadmin zmieniłem na ąęśćłółźż to na stronie jest ok czyli ąęśćłółźż To w czym problem? Udostępnij ten post Link to postu Udostępnij na innych stronach
Paul 0 Zgłoś post Napisano Marzec 7, 2012 Ops, przepraszam skrypt forum zamienił hasze na zwykłe literki jeszcze raz jeśli w phpmyadmin wkleję ąęśćłółźż, na stronie natomiast ?????�??? natomiast jeśli wkleję &.#261;&.#281;&.#347;&.#263;&.#322;&.#243;&.#322;&.#378;&.#380; (oczywiście bez kropek ) to wyświetla się na stronie ąęśćłółźż - czyli ok Znasz może jakiś mega prosty sposób na zrobienie do tego admin.php tzn. żeby można było dodawać nowe wpisy/edytować i usuwać? Dzięki Udostępnij ten post Link to postu Udostępnij na innych stronach
regdos 1848 Zgłoś post Napisano Marzec 7, 2012 A spróbuj po połączeniu z bazą wykonać zapytanie SET NAMES UTF-8 Udostępnij ten post Link to postu Udostępnij na innych stronach
Paul 0 Zgłoś post Napisano Marzec 7, 2012 ok, z kodowanie już wszystko ok Teraz poszukuję jakiegoś prostego sposobu jak stworzyć plik np. admin.php który umożliwiał by mi dodawanie rekordów do tabeli fajnie jak by można było również je edytować i usuwać Udostępnij ten post Link to postu Udostępnij na innych stronach
Paul 0 Zgłoś post Napisano Marzec 8, 2012 samu, dzięki skorzystałem z tego arta do którego podałeś linka - jest tam example (http://www.freewebmasterhelp.com/static/tutorials/phpmysql/example.zip) lecz w nim sporo rzeczy nie działa a najłatwiej jest nauczyć się patrząc jak gdzieś jest zrobione i robić podobnie - nie działa tam np. edycja i dodawanie wpisów do bazy... Może ktoś ma jakiś przykład w którym by to działało? Udostępnij ten post Link to postu Udostępnij na innych stronach
Paul 0 Zgłoś post Napisano Marzec 8, 2012 samu to, tak w example nie działa: 1. dodawanie tzn. jest plik add.html który przekierowuje do insert.php który powinien dodawać do mysql i dodaje ale wyłącznie pusty rekord - nie dodaje tekstu wpisanego w pola formularza... 2. edycja - jest plik który powinien odp. za edycję update.php ale nijak nie idzie żeby działało tzn. wpisuje update.php?id=1 i nie pokazuje mi się formularz w którym mógłbym edytować pola... 3. w opisie jest ale niestety szkoda, że w example nie zostało dodane jak usuwać (nie ma delete.php ani nic takiego ) Dzięki. Udostępnij ten post Link to postu Udostępnij na innych stronach
Paul 0 Zgłoś post Napisano Marzec 8, 2012 (edytowany) Znalazłem tez tutaj - http://www.phpeasyst...om/mysql/9.html - jak zrobić edytowania ale niestety to nie działa Po prostu formularz nie zapisuje danych w bazie danych Próbowałem zrobić na tej samej zasadzie usuwanie: <?php $host="localhost"; // Host name $username="root"; // Mysql username $password="root"; // Mysql password $db_name="test_mysql"; // Database name $tbl_name="test_mysql"; // Table name // Connect to server and select database. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); // update data in mysql database $sql="DELETE FROM $tbl_name WHERE id='$id'"; $result=mysql_query($sql); // if successfully updated. if($result){ echo "Successful"; echo "<BR>"; echo "<a href='list_records.php'>View result</a>"; } else { echo "ERROR"; } ?> - wyświetla się komunikat, że wszystko poszło ok ale wpis nadal jest w BD. Pozdrawiam, Edytowano Marzec 8, 2012 przez Paul (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
xorg 693 Zgłoś post Napisano Marzec 8, 2012 że wszystko poszło ok ale wpis nadal jest w BD. $sql="DELETE FROM $tbl_name WHERE id='$id'"; Wypada to pierw pobrać "skąś" Udostępnij ten post Link to postu Udostępnij na innych stronach
Paul 0 Zgłoś post Napisano Marzec 9, 2012 xorg, dzięki nie zauważyłem a co tutaj można poprawić: update.php <?php $host="localhost"; // Host name $username="root"; // Mysql username $password="root"; // Mysql password $db_name="test_mysql"; // Database name $tbl_name="test_mysql"; // Table name // Connect to server and select database. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); // get value of id that sent from address bar $id=$_GET['id']; // Retrieve data from database $sql="SELECT * FROM $tbl_name WHERE id='$id'"; $result=mysql_query($sql); $rows=mysql_fetch_array($result); ?> <table width="400" border="0" cellspacing="1" cellpadding="0"> <tr> <form name="form1" method="post" action="update_ac.php"> <td> <table width="100%" border="0" cellspacing="1" cellpadding="0"> <tr> <td> </td> <td colspan="3"><strong>Update data in mysql</strong> </td> </tr> <tr> <td align="center"> </td> <td align="center"> </td> <td align="center"> </td> <td align="center"> </td> </tr> <tr> <td align="center"> </td> <td align="center"><strong>Name</strong></td> <td align="center"><strong>Lastname</strong></td> <td align="center"><strong>Email</strong></td> </tr> <tr> <td> </td> <td align="center"><input name="name" type="text" id="name" value="<? echo $rows['name']; ?>"></td> <td align="center"><input name="lastname" type="text" id="lastname" value="<? echo $rows['lastname']; ?>" size="15"></td> <td><input name="email" type="text" id="email" value="<? echo $rows['email']; ?>" size="15"></td> </tr> <tr> <td> </td> <td><input name="id" type="hidden" id="id" value="<? echo $rows['id']; ?>"></td> <td align="center"><input type="submit" name="Submit" value="Submit"></td> <td> </td> </tr> </table> </td> </form> </tr> </table> <? // close connection mysql_close(); ?> update_ac.php <?php $host="localhost"; // Host name $username="root"; // Mysql username $password="root"; // Mysql password $db_name="test_mysql"; // Database name $tbl_name="test_mysql"; // Table name // Connect to server and select database. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); // update data in mysql database $sql="UPDATE $tbl_name SET name='$name', lastname='$lastname', email='$email' WHERE id='$id'"; $result=mysql_query($sql); // if successfully updated. if($result){ echo "Successful"; echo "<BR>"; echo "<a href='list_records.php'>View result</a>"; } else { echo "ERROR"; } ?> Plik update.php wyświetla zawartość bazy ale nie aktualizuje się.. Udostępnij ten post Link to postu Udostępnij na innych stronach
regdos 1848 Zgłoś post Napisano Marzec 9, 2012 Nadal to co pisał xorg, w pliku update_ac.php $id zawsze jest puste, formularz wysyłasz do pliku update_ac.php i tam też powinieneś odczytać id, swoja drogą nigdzie go nie przekazujesz z update.php. Opanuj jakiekolwiek podstawy php i html-a. Udostępnij ten post Link to postu Udostępnij na innych stronach
Paul 0 Zgłoś post Napisano Marzec 9, 2012 w update.php dodałem, żeby w GET była zmienna czyli <form name="form1" method="post" action="update_ac.php?id=<? echo $rows['id']; ?>"> natomiast w update_ac.php dodałem: // get value of id that sent from address bar $id=$_GET['id']; niestety to wyczyściło wpis i nie zapisuje jak coś ponownie się wpisuje... Udostępnij ten post Link to postu Udostępnij na innych stronach
regdos 1848 Zgłoś post Napisano Marzec 9, 2012 Po raz kolejny podstawy podstaw, skąd update_ac.php ma wiedzieć co jest w zmiennych $name, $lastname i $email? Skrypt po prostu wykonuje to co mu karzesz czyli wpisuje puste wartości w odpowiednie pola. Udostępnij ten post Link to postu Udostępnij na innych stronach