ďťż
Podstrony
|
telcocafeWitam...problem jest taki:dodaje zdjęcie w systemie zdjecieX.jpg gdzie X to liczba która jest zwiększana -> jeśli plik istnieje to X jest zwiększane o 1 i tak dopóki nie trafi na pusty numer. Wszystkie dane dodawane są do bazy dzięki czemu ID w tabeli zgadza się z X, ale kiedy usune zdjęcie to pojawia się problem... dajmy na to, że mam 10 zdjęć i usuwam zdjecie5.jpg wtedy dzieje się następująca rzecz: zdjecie5.jpg i wszystkie dane z tabeli o ID=5 są usuwane. Następnie gdy dodaje nowe zdjęcie to tworzy się zdjecie5.jpg (bo to pierwsza wolna liczba) ale w tabeli mamy ID=11 więc nie moge wyciągać danych wg. identyfikatora. Jak zrobić żeby nawet po usunięciu zdjęcia nowopowstałe było zdjecie11.jpg żeby zgadzało się z ID...czy może jest sposób żeby ID (auto_increment) zamiast 11 przyjmowało jak zdjęcie pierwszą wolną wartość?potrzebna pomoc zrób przy tworzeniu zdjęcia tak: $wynik=mysql_fetch_array(mysql_query("select * from zdjecia order by id desc;")); $numerek=$wynik["id"]++; $nazwazdj="zdjecie".$numerek.".jpg"; Użytkownik loguś edytował ten post 19 luty 2007, 20:13 a możesz pomóc? bo siedze ze 4 godzine i już troche nie czaje $query = "INSERT INTO `fotografie` (foto_id, foto_title, foto_autor, foto_desc) "; $query .= "VALUES (NULL, '$tytul', '$autor', '$opis')"; $result = mysql_query($query); if(!$result){ print("Problem z bazą danych"); exit; } $katalog = 'zdjecia/zdjecie'; $nazwa = 1; while (file_exists($katalog.$nazwa.'.jpg')) $nazwa++; if(move_uploaded_file($_FILES['plik']['tmp_name'], $katalog.$nazwa.'.jpg')) { echo 'Plik został przesłany'; } else { echo 'Wystapił błąd!'; } To jest skrypt dodawania zdjęcia. Tu to wstawić? Jak? Użytkownik Dawid-San edytował ten post 19 luty 2007, 20:21 $query = "INSERT INTO `fotografie` (foto_id, foto_title, foto_autor, foto_desc) "; $query .= "VALUES (NULL, '$tytul', '$autor', '$opis')"; $result = mysql_query($query); if(!$result){ print("Problem z bazą danych"); exit; } $wynik=mysql_fetch_array(mysql_query("select * from fotografie order by foto_id desc;")); $numerek=$wynik["foto_id"]; $nazwazdj="zdjecie".$numerek.".jpg"; $katalog = 'zdjecia/'; $nazwa = 1; if(move_uploaded_file($_FILES['plik']['tmp_name'], $katalog.$nazwazdj.'.jpg')) { echo 'Plik został przesłany'; } else { echo 'Wystapił błąd!'; } dobra a możesz mi coś poradzić? bo jednej rzeczy nie wziąłem pod uwagę zupełnie... jak wyświetlam sobie fotki to (do tej pory) zliczałem po prostu ilość zdjec ($ilosc_zdjec) i robiłem pętle while $i <= $ilosc_zdjec echo bla bla bla no ale teraz jest problem...jeżeli id w bazie może przyjąc wartość 20 a zdjęc będzie np. 10 to to nie ma racji bytu bo nie wyświetli zdjęć które mają większe ID niż $ilosc_zdjec...jak to rozwiazac? $zrob=mysql_query("select * from fotografie order by foto_id desc;"); $ilefotek = mysql_num_rows($zrob); $zrob=mysql_query("select * from fotografie order by foto_id desc;"); $ilefotek = mysql_num_rows($zrob); Jeżeli potrzebna jest wyłącznie ilość wierszy jakie zwróciłoby zapytanie należy stosować COUNT(*) SELECT COUNT(*) as ile FROM fotografie ORDER BY foto_id DESC; ale to przecież tak czy siak dostanę taką samą wartość...nie ważne przecież czy zlicze ilość zdjęć z foldera czy ilość wpisów z tabeli....bo przecież ich jest tyle samo... chyba prędzej potrzebuje pobrać ostatni ID czyli ten największy potem dać $i <= $ostatnie_id i zapytanie warunkowe z file_exists() tylko jak pobrać to ostatnie ID? chodzi o wydajność zapytania. COUNT(*) w zapytaniu jest znacznie bardziej wydajniejsze od count($tablica) w php czy też od mysql_num_rows. ale co mi po wydajności jak to nie działa jak potrzeba?:P przecież nie w tym tkwi problem...potrzebuje rady jak rozwiązać ten problem, wydajnością będe się martwił potem próbowałem coś z mysql_insert_id() ale nie zdaje egzaminu w tym wypadku Użytkownik Dawid-San edytował ten post 19 luty 2007, 21:43 no teraz to ja już kompletnie nie rozumiem co ty chcesz osiągnąć. Chcesz pobrać największe id z bazy? oto kod: $wynik=mysql_fetch_array(mysql_query("select * from fotografie order by foto_id desc;")); $najwiekszeid=$wynik["foto_id"]; loguś chce znaleźć odpowiedź i to jedyny pomysł mi przychodzi do głowy. wyświetlanie fotografii do tej pory polegało na tym. 1. zliczam ilość zdjęć w katalogu i przypisuje wartość do $ilosc_zdjec 2. robie pętle whilee która ma się robić dopóki $i <= $ilosc zdjec 3. za każdym zwiększeniem $i wypisuje zdjecie: zdjecie1.jpg, zdjecie2.jpg, zdjecie3.jpg itp itd. ale skoro teraz zdjec może być 5 a mogą się nazywać zdjęcie23.jpg albo zdjecie50.jpg to to nie zda egzaminu bo $ilosc_zdjec bedzie mialo wartosc 5 więc $i nigdy nie dojdzie do 50 i nie wyświetli pożadanego zdjęcia. Dlatego myśle, że skoro liczba przy nazwie jest taka sama jak ostatnie ID w tabeli to mogę zrobić tak: 1. do zmiennej $ilosc przypisuje wartosc największego ID 2. robie pętle while $i <= $ilosc 3. wewnątrz pętli sprawdzam czy zdjecie o podanym $i istnieje. Jesli istnieje wyświetla zdjęcie jeśli nie to $i++ i szukam dalej i tak do ostatniej wartości $ilosc chyba, że masz lepsze rozwiażanie mam lepsze Można to zrobić bez użycia bazy$folder= dir("zdjecia"); while($nazwa= $folder->read()) { if(eregi(".jpg",$nazwa)) { echo "<img src='zdjecia/$nazwa'>"; } } } Użytkownik loguś edytował ten post 19 luty 2007, 21:58 a pomożesz z przerobieniem tego na twój sposób? for ($j = 1; $j <= $ilosc_zdjec; $j++) { if($j%3 == 1) echo "<tr>"; echo "<td width='438'> <a href='strona.php?zmienna=".$j."'> <img src='zdjecia/zdjecie".($j-1).".jpg' width='140' height='140' /></a> </td>"; if($j%3 == 0) echo "</tr>"; if($j == $ilosc_zdjec && $ilosc_zdjec%3 != 0) echo "<td colspan='".(3-$ilosc_zdjec%3)."'> </td></tr> "; } ten kod ma na celu wyświetlanie zdjeć w 3 kolumnach + dodanie linka z przekazaniem zmiennej id przez get żebym mógł się odwołąć na następnej podstronie do danych z tabeli wg. id Użytkownik Dawid-San edytował ten post 19 luty 2007, 22:06 echo "<table><tr>" $j=1; $folder= dir("zdjecia"); while($nazwa= $folder->read()) { if(eregi(".jpg",$nazwa)) { if($j%3==1)echo"</tr><tr>"; $j++; $idek=str_replace("zdjecie", "", $nazwa); $idek=str_replace(".jpg", "", $nazwa); echo "<td><a href='strona.php?zmienna=$idek'><img src='zdjecia/$nazwa'></a></td>"; } } } echo "</tr></table>" o coś takiego ci chodziło? Użytkownik loguś edytował ten post 19 luty 2007, 22:28 w 90% tak... nie da się żeby wartość zmiennej to było 18 a nie zdjecie18? bo jeżeli da to już dalej nie bedzie najmniejszego problemu dla mnie $idek=str_replace("zdjecie", "", $nazwa); $idek=str_replace(".jpg", "", $nazwa); ten kod właśnie powoduje że to się zamienia, a co, nie działa? no właśnie działą tak, że strona.php?zmienna=$idek to daje strona.php?zmienna=zdjecie19 ale dobra chyba można to ominąć bo wystarczy, że do tabeli dodam dodatkowe pole które będzie miało wypełniane nazwą (a nie tytułem) pliku czyli zdjecieX i wtedy zamiast po ID bede dobierał po nazwie he, no tak, już wiem co było źle, aż wstyd sie przyznać. To jest poprawiony kod który podaje ci id: $idek=str_replace("zdjecie", "", $nazwa); $idek=str_replace(".jpg", "", $idek); |
|||
Sitedesign by AltusUmbrae. |