Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL] Projekt bazy do system newsów..., ...a konkretnie dodawanie zdjęć
oomaster
post 13.08.2008, 19:34:44
Post #1





Grupa: Zarejestrowani
Postów: 305
Pomógł: 3
Dołączył: 4.08.2006
Skąd: GDA

Ostrzeżenie: (0%)
-----


Witam,

Nie wiem czy dobrze wytłumaczę wam co chcę uzyskać ale do rzeczy próbuję uzyskać efekt który jest np. na ithink.pl, wiadomosci24.pl itd. Otóż przy dodawaniu wiadomości można dodać zdjęcia (nawet kilkadziesiąt) wiadomo ,że stworzy się do tego 2 tabelki smile.gif np.

news
Cytat
-id
-tytlu
-tresc
-data


foto
Cytat
-id
-opis
-adres
-data
-idnews


Ale mój problem polega na połączeniu tych 2 baz. Przecie przy zwyczajnym połączeniu np. w tabeli news jest id a w foto jest idnews i przy pobieraniu fotek pobiorę je według idnews. Czy macie jakieś inne sposoby połączenia tych 2 tabel questionmark.gif? Bo jednak po samym ID newsa mogą wystąpić problemy.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
wookieb
post 13.08.2008, 19:41:10
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A czemu miałyby występować problemy? idnewsa bedzie unikalne wiec jaki problem widzisz? Do danego newsa od podanym id pobierasz zdjecia o idnewsa. Nie widze problemu.


--------------------
Go to the top of the page
+Quote Post
oomaster
post 13.08.2008, 20:59:57
Post #3





Grupa: Zarejestrowani
Postów: 305
Pomógł: 3
Dołączył: 4.08.2006
Skąd: GDA

Ostrzeżenie: (0%)
-----


Ale gdyby ktoś dodał w tym samym momencie newsa to zdjęcia by niestety źle trafiły według mnie. Chociaż to mało możliwe ,żeby ktoś w tym samym momencie dodał newsy i by się zrobiły np. 2 newsy o tym samym id.

EDIT: teoretycznie i praktycznie wszystko będzie działać smile.gif w sumię przeanalizowałem wszystkie możliwości. Różne kombinacje, dodanie w tym samym czasie. Za nic nie da się wymieszać itd. Będzie działać

Ten post edytował oomaster 13.08.2008, 21:01:57
Go to the top of the page
+Quote Post
nospor
post 13.08.2008, 21:01:38
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




robisz pole autoincrement i ono zawsze sie zwieksza o 1, niezaleznie czy w tym samym momemcie jest 1000 newsow czy 1


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
oomaster
post 14.08.2008, 13:58:25
Post #5





Grupa: Zarejestrowani
Postów: 305
Pomógł: 3
Dołączył: 4.08.2006
Skąd: GDA

Ostrzeżenie: (0%)
-----


OK, znalazłem mały chaczyk w tym wszystkim. Bo jeśli do newsa nie zostanie dodana fota to pole ID w foto będzie zaniżone gdy będzie to automatycznie :/ I pozatym jak ktoś chce dodać kilka fotek to one będą miały inne id niż news. A chodzi oto aby jakoś połączyć 2 tabeli foto i news sad.gif
Go to the top of the page
+Quote Post
nospor
post 14.08.2008, 14:01:43
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ale ID z newsa a ID z foto to dwa rozne id i one nie są ze sobą w zaden sposob powiązane

Ciebie interesuje w tabeli FOTO pole IDNEWS i w to pole masz wkladac id newsa, do ktorego nalezy to zdjęcie. Przeciez id newsa znasz przy wkladaniu do niego zdjęcia.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
oomaster
post 14.08.2008, 14:50:39
Post #7





Grupa: Zarejestrowani
Postów: 305
Pomógł: 3
Dołączył: 4.08.2006
Skąd: GDA

Ostrzeżenie: (0%)
-----


Właśnie w tym problem ,że nie znam do końca numeru ID. Bo przecież zdjęcia dodają się razem z newsem i nigdy nie wiem czy one trafią do tego newsa którego ja chcę np. gdy przy dodawaniu fotki bym musiał poprać stary z tabeli news ID+1 ale nigdy nie wiadomo czy w tym samym momencie ktoś nie doda też newsa i się wszystko wymiesza :/

Widziałem takie rozwiązania na innych stronach (popularnych) gdzie jest możliwość dodania 2 newsów jednocześnie...
Go to the top of the page
+Quote Post
golaod
post 14.08.2008, 15:00:03
Post #8





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


To za dużo widziałeś a za mało wiesz.
MySQL (jeśli na takiej bazie pracujesz) w mechanizmie innodb ma kolejkowanie zapytań.
W php jest funkcja która wydobywa id ostatnio dodanego newsa i wtedy przy dodawaniu zdjęć w polu idnewsa wprowadzasz właśnie tą daną.
Go to the top of the page
+Quote Post
robos85
post 14.08.2008, 15:00:13
Post #9





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


To najpierw dodaj newsa poprzez INSERT, a następnie użyj mysql_insert_id" title="Zobacz w manualu PHP" target="_manual
np
  1. <?php
  2. $sql=mysql_query("INSERT INTO `news`(...) VALUES (...)");
  3. $id_newsa=mysql_insert_id;
  4. ?>


W ten sposób zmienna $id_newsa będzie przechowywała id dodanego newsa. Po tym już dodajesz zdjęcia
  1. <?php
  2. mysql_query("INSERT INTO `fotki`(...,`newsid`) VALUES (....'".$id_newsa."')");
  3. ?>


Ten post edytował robos85 14.08.2008, 15:08:05
Go to the top of the page
+Quote Post
nospor
post 14.08.2008, 15:03:25
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Po tym już dodajesz zdjęcia .... WHERE `newsid`='".$id_newsa."'....
No chyba cos ci nie wyszlo. WHERE daje sie w select a nie w insert winksmiley.jpg


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
robos85
post 14.08.2008, 15:05:37
Post #11





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


hehe, pisząc to myślałem o czym innym i mi jeszcze insert z poprzedniej linijki w głowie został biggrin.gif
Zaraz zmienię poprzedni post;)
Go to the top of the page
+Quote Post
oomaster
post 14.08.2008, 15:36:21
Post #12





Grupa: Zarejestrowani
Postów: 305
Pomógł: 3
Dołączył: 4.08.2006
Skąd: GDA

Ostrzeżenie: (0%)
-----


OK dzięki chłopaki bardzo za pomoc zaraz sprawdzę te rozwiązania przez was zaproponowane. Tylko teraz jeszcze przed przetestowanie zastanawiam się na tym kodem smile.gif:

Kod
<?php
$sql=mysql_query("INSERT INTO `news`(...) VALUES (...)");
$id_newsa=mysql_insert_id;
?>


W jaki sposób $sql połączy się z mysql_insert_id. Nie mam żadnego logicznego wytłumaczenia tongue.gif
Go to the top of the page
+Quote Post
mike
post 14.08.2008, 15:40:53
Post #13





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Samo się domyśli i się połączy tongue.gif
Sam to musisz zrobić. Najpierw skorzystaj z mysql_insert_id(), pobierz dane i wstaw je do zapytania. Czyli do $sql.
Przykład w manualu pokazuje użycie. Czego chcieć więcej tongue.gif
Go to the top of the page
+Quote Post
oomaster
post 14.08.2008, 20:42:18
Post #14





Grupa: Zarejestrowani
Postów: 305
Pomógł: 3
Dołączył: 4.08.2006
Skąd: GDA

Ostrzeżenie: (0%)
-----


OK, wszystko niby ładnie, pięknie ale czemu wywala mi błąd ?

Warning: mysql_insert_id(): supplied argument is not a valid MySQL-Link resource in /home/miasto/domains/coscos.pl/public_html/add.php on line 93

Kod
$sql = "INSERT INTO news SET tytul='$tytul', tresc='$tresc'";
$idk_news = mysql_insert_id($sql);
  if (mysql_query($sql)) {
    echo "OK";
  } else {
    exit('Błąd');
  }


Dlaczego wywala błąd ? HELP !

Ten post edytował oomaster 14.08.2008, 20:42:59
Go to the top of the page
+Quote Post
nospor
post 14.08.2008, 20:44:22
Post #15





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




kurcze....
http://pl2.php.net/manual/pl/function.mysql-insert-id.php
co w tym przykladzie z manuala jest dla ciebie nie jasnego?

I przestan walic pomogl kazdemu kto w tym temacie cos napisal, a juz w szczegolnosci po x pomogl dla tej samej osoby


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Crozin
post 14.08.2008, 20:58:23
Post #16





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Próbujesz pobrać ID dodanego rekordu... przed jego dodaniem.
  1. <?
  2.  
  3. $sql = "INSERT INTO news SET tytul = '$tytul', tresc = '$tresc';";
  4. $result = mysql_query($sql);
  5.  
  6. if($result){
  7. echo 'Dodano newsa';
  8.  
  9. $newsID = mysql_insert_id();
  10. $sql = "INSERT INTO foto SET ..., newsID = $newsID;";
  11. $result = mysql_query($sql);
  12.  
  13. echo $result ? 'Dodano zdjęcia' : 'Nie dodano zdjęć';
  14. }else{
  15. echo 'Nie dodano newsa';
  16. }
  17. ?>
Go to the top of the page
+Quote Post
oomaster
post 15.08.2008, 09:18:49
Post #17





Grupa: Zarejestrowani
Postów: 305
Pomógł: 3
Dołączył: 4.08.2006
Skąd: GDA

Ostrzeżenie: (0%)
-----


Dzięki wielkie ale mam kolejny problem czy można jakimś sposobem wyświetlić zmienną która jest wykonywana niżej np.

Kod
echo"tekst nr. ".$zmienna." w którym jest zmienna";
$zmienna="44";


Czy jest jakaś możliwość ?
Go to the top of the page
+Quote Post
decha-design
post 15.08.2008, 10:21:09
Post #18





Grupa: Zarejestrowani
Postów: 415
Pomógł: 46
Dołączył: 26.05.2007
Skąd: Sandomierz

Ostrzeżenie: (0%)
-----


niestety nie można takich czarów robić ... zmienna musi być zdeklarowana wyżej


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:13