Na forum jestem świeżakiem, ale i w PHP również. Co prawda jakąś styczność już z nim miałem, ale postanowiłem że w długie jesienne wieczory "od nowa" do niego usiąde i postaram się łyknąć trochę więcej.
A teraz do sedna.
Piszę (chcę napisać) malutkiego CMSa pozwalającego na dodawanie newsów i obsługę galerii stron internetowych.
Pracę rozpocząłem od wg. mnie najtrudniejszej części czyli od zarządzania galerią.
Zczytywanie z bazy już mam, dodawanie zdjęć i galerii też. Problem tylko z usuwaniem galerii. Mianowicie mam pętlę która zczytuje z bazy wszystkie galerie i przy każdej tworzy przycisk usuń. Sama jakby idea tego wszystkiego działa, problem w tym że postanowiłem zrobić w jquery okienko które wyrzuci powiadomienie że jesteś świadom że właśnie wywalam z bazy całą galerię i wszystkie fotki w niej, bla bla...
Okej wszedłem na stronkę jqueryUI i znalazłem tam dialog który mi się spodobał.
Implementacja do projektu i... Nie działa. Mianowicie formularz się wysyła ale ciągle usuwa tylko jedną galerię. Jeśli formularz byl submitowany przez php, a raczej html wszystko działalo poprawnie. Teraz już działać nie chce. Przerobiłem (zakomentowałem) skrypt usuwający galerię i okazuje się że ID galerii bez względu na to przy której kliknę usuń zawsze jest takie samo. Tzn pierwsze które "wpisze" się do inputa w pętli while.
Co do samego formularza w pętli, to korzystam z niego żeby zmienna wysyłana była przez POST, ponieważ linka z GETem łatwo będzie można samemu "skonstruować". Próbowałem też użyć sesji, ale wtedy zmienna wynosiła zawsze tyle, ile wpisało się przy ostatnim obrocie pętli.
Kody źródłowe:
index.php
<!doctype html> <html lang="pl"> <head> <meta charset="utf-8" /> <title>SimpleCMS</title> <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" /> <link rel="stylesheet" type="text/css" href="styles/style-admin.css" /> <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> <script> $(function() { $( "#tabs" ).tabs(); }); $(function() { $( "#okno" ).dialog({ autoOpen: false, height: 400, width: 500, modal: true, buttons: { Tak: function() { document.getElementById('MsgForm').submit(); }, Anuluj: function() { $( this ).dialog( "close" ); } } }); $( ".button" ) .button() .click(function() { $( "#okno" ).dialog( "open" ); }); }); </script> </head> <body> <div id="logo"></div> <div id="okno" title="Usuwanie galerii."> <p><span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>Czy na pewno chcesz usunąć wybraną galerię?</p> </div> <div id="tabs"> <ul> <li><a href="#z1">Aktualności</a></li> <li><a href="#z2">Strony</a></li> <li><a href="#z3">Galeria</a></li> <li><a href="#z4">Slider</a></li> <li><a href="#z5">Ustawienia</a></li> </ul> <div id="z1"> </div> <div id="z2"> </div> <div id="z3"> <table id="row"> <thead>Twoje aktualne galerie:</thead> <br><br> <tbody> <?php include ("$_SERVER[DOCUMENT_ROOT]/admin/gallery.php"); ?> </tbody> </table> </div> <div id="z4"> </div> <div id="z5"> </div> </div> </body> </html>
galerry.php
<?php include ("$_SERVER[DOCUMENT_ROOT]/admin/config.php"); $dbc=mysqli_connect($host, $user, $password, $name) or die ('Błąd połączenia z bazą danych: '.mysqli_connect_error()); $result = mysqli_query($dbc, 'SELECT * FROM galleries'); $num = mysqli_num_rows($result); if ($num > 0) { while ($row = mysqli_fetch_array($result)) { $nr = $row['id']; $fotos = mysqli_query($dbc, "SELECT idgal FROM foto WHERE idgal = '$nr'"); $idgal = mysqli_num_rows($fotos); echo "<td> <form action='delete/gallery.php' method='POST' id='MsgForm'> <input type='hidden' name='id' value=".$row['id']."></input> <input class='button' value='Usun'></input> </form> </td>"; }} else { } ?>
/delete/gallery.php - usuwanie galerii
<?php /* include ("$_SERVER[DOCUMENT_ROOT]/admin/config.php"); $dbc=mysqli_connect($host, $user, $password, $name) or die ('Błąd połączenia z bazą danych: '.mysqli_connect_error()); $id = $_POST['id']; $gal = mysqli_query($dbc, "DELETE FROM galleries WHERE id ='$id' LIMIT 1"); $foto = mysqli_query($dbc, "DELETE FROM foto WHERE idgal ='$id'"); $adres = 'http://'.$_SERVER['SERVER_NAME'].'/admin/#z3'; header ('Location: '.$adres); $id = ''; */ $zmienna = $_POST['id']; $zmienna = ''; ?>
Mam nadzieję, że problem jest zrozumiały. Umieściłem to tutaj, ale być może problem leży po stronie skryptu jQuery, więc proszę moderatora o przeniesienie w razie potrzeby.
Pozdrawiam, Maciek (Slide)