malinka94
3.01.2015, 18:06:04
Chciałabym dodać do każdego zdjęcia z galerii checkbox, by móc wybrać część zdjęć i coś tam na nich zrobić.
Niby zrobiłam ten checkbox, ale wyświetla mi się tylko ostatnio dodane zdjęcie. Jak to powinno prawidłowo wyglądać?
<?php
//pobranie ustawien (sciezka, itd.)
require_once 'settings.php';
$xml = simplexml_load_file($zdjecia_xml);
$menu = '<a href="logout.php">Wyloguj</a><br/>';
$menu .= '<a href="zaloguj.php">Zaloguj</a><br/>';
$menu .= '<a href="rejestracja.php">Zarejestruj sie</a><br/>';
$menu .= '<a href="uploader.php">Dodaj nowy obrazek</a><br/>';
$tresc = '';
foreach ($xml->children() as $zdjecie)
{
$tytul = $zdjecie;
$nazwa_pliku = $zdjecie['nazwa_pliku'];
//$tresc.= '<div class="image_box">' . $tytul . '<a href="' . $znak_dir . $nazwa_pliku . '" target="_blank"><img src="' . $miniatura_dir . $nazwa_pliku . '" alt="Tu nie ma pliku" class="mini"/></a></div>';
$tresc = '<div class="image_box">'.'<input type="checkbox" name="zdjecie[]" form"zapamietaj_wybrane" value="1"/>'. $tytul . '<a href="' . $znak_dir . $nazwa_pliku . '" target="_blank"><img src="' . $miniatura_dir . $nazwa_pliku . '" alt="Tu nie ma pliku" class="mini"/></a></div>';
}
if ($tresc == '')
{
$tresc = 'Brak obrazkow z bazie :(';
}
include_once 'szablon.php';
?>
<form id="zapamietaj_wybrane" action="index.php" method="post">
<input type="submit" value="Zapamiętaj"/>
</form>
trueblue
3.01.2015, 18:09:47
form"zapamietaj_wybrane"
malinka94
3.01.2015, 18:29:50
Poprawiłam już, ale nic to nie zmieniło.
trueblue
3.01.2015, 18:34:00
W jaki sposób odczytujesz zaznaczone checkboxy?
malinka94
3.01.2015, 18:45:08
Póki co, jesli chodzi o checkboxy, to więcej kodu nie mam. Najpierw chciałam go wstawić, a potem martwić się, co dalej.
Jestem dosyć początkująca w pisaniu w phpie.
trueblue
3.01.2015, 18:48:23
Ah, rozumiem. Na razie nie działa samo wyświetlanie.
W pętli nadpisujesz sobie wciąż $tresc, to co zakomentowałaś było ok - powinnaś doklejać.
malinka94
3.01.2015, 19:00:36
Co masz na myśli przez to, że powinnam doklejać?
trueblue
3.01.2015, 19:01:04
Cytat(trueblue @ 3.01.2015, 18:48:23 )

to co zakomentowałaś było ok - powinnaś doklejać.
W każdej iteracji pętli doklejać kod do zmiennej $tresc.
malinka94
3.01.2015, 19:11:57
W jaki sposób? Jakoś nie bardzo rozumiem o co Ci chodzi z tym doklejaniem kodu. :/
trueblue
3.01.2015, 19:13:34
W linii 22 zmień z:
Kod
$tresc = '<
na:
Kod
$tresc. = '<
malinka94
3.01.2015, 19:36:31
Już jest ok. Mam jeszcze jedno pytanie - jakie wartości identyfikujące dane zdjęcie zostaną pobrane do tablicy zdjecie[]? Powinnam ustawić dla value np. zmienną $nazwa_pliku i wtedy w tablicy zostaną umieszczone te nazwy?
trueblue
3.01.2015, 19:38:50
Tak, takie jak tam wstawisz.
Jeśli wstawisz "aaa", to tak będzie, jeśli wstawisz zmienną $abc, to podstawi się jej wartość.
malinka94
3.01.2015, 22:25:48
Okej.

Dziękuję za pomoc.
Mam jeszcze jedno pytanie

Jestem w trakcie robienia wyświetlania wybranych przez checkbox zdjęć. Napisałam coś takiego:
<?php
require_once 'settings.php';
$xml = simplexml_load_file($zdjecia_xml);
$menu = '<a href="logout.php">Wyloguj</a><br/>';
$menu .= '<a href="galeria.php">Strona główna</a><br/>';
if(isset($_POST['zdjecie'])) {
$tresc = 'Zapamiętane zdjęcia:'.'<br/><br/>';
for($i = 0; $i < sizeof($_POST['zdjecie']); $i++) {
//$tresc .= $_POST['zdjecie'][$i].'<br/>';
$temp = $_POST['zdjecie'][$i];
foreach ($xml->children() as $zdjecie)
{
if($zdjecie['nazwa_pliku'] == $temp) //jesli nazwa z pliku xml jest taka sama jak nazwa z tablicy zdjecie[]
{
$tytul = $zdjecie;
$nazwa_pliku = $zdjecie['nazwa_pliku'];
$tresc.= '<div class="image_box">' . $tytul . '<a href="' . $znak_dir . $nazwa_pliku . '" target="_blank"><img src="' . $miniatura_dir . $nazwa_pliku . '" alt="Tu nie ma pliku" class="mini"/></a></div>';
}
}
}
}
else
{
$tresc = 'Brak zdjęć';
}
include_once 'szablon.php';
?>
Dlaczego nie da się wejść w ostatniego ifa? Wszystko do tablicy się dodaje, iteruje, wchodzi w xmla, ale nie chce porównać tych dwóch zmiennych.
trueblue
3.01.2015, 22:36:16
foreach ($xml->children() as $zdjecie)
{
Dodaj po tym:
malinka94
3.01.2015, 22:56:07
No to wysypało mi coś takiego:
object(SimpleXMLElement)#5 (1) { [0]=> string(20) "800px-SMSSMovie3.jpg" }
string(21) "800px-SMSSMovie3.jpg " object(SimpleXMLElement)#4 (1) { [0]=> string(20) "20610_d_gray_man.jpg" }
string(21) "800px-SMSSMovie3.jpg " ?
Poprawiłam if:
if((string)$zdjecie['nazwa_pliku'] == $temp)
ale nadal nie wchodzi. Nawet zwykłego echo nie chce wypisać z tej pętli.
trueblue
4.01.2015, 10:30:43
(string)$zdjecie['nazwa_pliku'][0]
malinka94
4.01.2015, 10:43:19
Niestety nic to nie zmieniło
trueblue
4.01.2015, 10:44:51
Pokaż fragment xml'a.
malinka94
4.01.2015, 10:59:39
<?xml version="1.0" encoding="UTF-8"?>
<zdjecia>
<zdjecie nazwa_pliku="800px-SMSSMovie3.jpg">chibiusa</zdjecie><zdjecie nazwa_pliku="20610_d_gray_man.jpg">aaa</zdjecie><zdjecie nazwa_pliku="0534.jpg">way</zdjecie></zdjecia>
Jeszcze ten mój if po poprawkach:
if((string)$zdjecie['nazwa_pliku'][0] == $temp) //jesli nazwa z pliku xml jest taka sama jak nazwa z tablicy zdjecie[]
{
$tytul = $zdjecie;
$nazwa_pliku = $zdjecie['nazwa_pliku'];
$tresc.= '<div class="image_box">' . $tytul . '<a href="' . $znak_dir . $nazwa_pliku . '" target="_blank"><img src="' . $miniatura_dir . $nazwa_pliku . '" alt="Tu nie ma pliku" class="mini"/></a></div>';
}
trueblue
4.01.2015, 11:09:36
Ok, to teraz zrób po ifie:
var_dump((string
)$zdjecie['nazwa_pliku'][0
]);
malinka94
4.01.2015, 11:14:46
string(20) "800px-SMSSMovie3.jpg"
string(21) "800px-SMSSMovie3.jpg "
string(20) "20610_d_gray_man.jpg"
string(21) "800px-SMSSMovie3.jpg "
string(8) "0534.jpg"
string(21) "800px-SMSSMovie3.jpg "
trueblue
4.01.2015, 11:16:51
Widzisz już czym się różnią nazwy zdjęć z xml i z tablicy $_POST?
malinka94
4.01.2015, 11:31:17
Aaaaa... długością. Przyjrzałam się wypisom - wchodzi dodatkowa spacja na końcu.
Zrobiłam coś takiego:
Teraz działa
trueblue
4.01.2015, 11:32:36
malinka94
4.01.2015, 13:10:04
Teraz przerobiłam ten kod, by użyć $_SESSION. Wybrane zdjęcia są już zapamiętywane. W jaki sposób mogę zrobić coś takiego, że gdy chcę zapamiętać jeszcze jedno zdjęcie, to pamiętam wszystkie tamte + nowe, a nie że to nowe zastępuje poprzednie? Myślałam o dodatkowej zmiennej, do której mogę przepisać dotychczasowe dane, a potem do mojej zmiennej sesyjnej dodać nowe dane + stare z tej zmiennej.

Coś takiego by zadziałało? I czy nie ma jakiejś prostrzej metody?
trueblue
4.01.2015, 13:11:16
Zmienna sesyjna, w której przechowujesz nazwy zdjęć ma być tablicą.
malinka94
4.01.2015, 13:58:50
Ale zmienna sesyjna $_SESSION jest tablicą samą w sobie nie?
trueblue
4.01.2015, 14:13:52
Tak.
Ale:
$_SESSION['zdjecia'][]=$nowe_zdjecie;
$_SESSION['zdjecia'][]=$kolejne_nowe_zdjecie;
itd.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.