Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL] dodawanie wpisu do określonej komórki
Forum PHP.pl > Forum > Przedszkole
bakss
witam smile.gif
chciałbym dodac, zrobic update danej komórki niemogę nigdzie znaleźc, wydukac sobie odpowiedniego polecenia.

moja TABELA składa się z :
[numer] [data] [tytul] [kategoria] [tresc] [osoba] [komentarze]
i właśnie odnośnie tej ostatniej komórki mam pytanie... jak do niej dotrzec... czy przy zastosowaniu zmiennej i numeru wiersza/wpisu ?

i kolejne pytanie,

jeżeli w danej komórce wartosc będzie dodawana i dodawana to jak potem przeprowadzic jej selekcje, aby cala treśc się nie zlała?
np skoro jest to komórka komentarze i dodawany do wpis będzie miał postac autor [tresc] i zaraz po niej będzie autor [tresc]
co w rezultacie będzie wyglądało autor [tresc] autor [tresc] to jak oddzielic je od siebie, przy odczytywaniu danych z komórki? żeby chociaz minimalnie je sformatowac między sobą?

pozdrawiam bakss
rodipl
Do tego służą relacyjne bazy danych.

Dla komentarzy powinieneś stworzyć osobną tabelę.

Przykład:

wpisy
id INT auto_increment klucz podstawowy // jest to id danego wpisu
tresc TEXT
osoba VARCHAR 200
data DATETIME

kometarz
id INT auto_increment klucz podstawowy // jest to id danego komentarza
id_wpis INT // przy dodawaniu kategorii wpisujesz tutaj id wpisu do którego ma być komentarz
tresc TEXT
osoba VARCHAR 200
data DATETIME
bakss
też myślałem o osobnej tabeli, ale jakoś nie mogę sobię wyobrazic, jak połączyc dany komentarz z danym wpisem
blue_boy
dokładnie tak jak napisał Ci rodipl - czyli wykorzystując "klucze obce" w tabeli.
Tworzysz dwie tabele:
{wpisy}
[id_wpisu PK][tresc][osoba][data]
  1. CREATE TABLE wpisy (
  2. id_wpisu int UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  3. tresc text,
  4. osoba varchar(200),
  5. DATA datetime
  6. );


{komentarze}
[id_komentarza PK][id_wpisu FK][tresc][osoba][data]
  1. CREATE TABLE komentarze (
  2. id_komentarza int UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  3. [b]id_wpisu int[/b],
  4. tresc text,
  5. osoba varchar(200),
  6. DATA datetime
  7. );


teraz chcąc dodać wpis używasz zapytania:
  1. INSERT INTO wpisy VALUES (NULL, 'jakaś treść wpisu', 'imię nazwisko nick', now());

załóżmy, że był to pierwszy wpis w tej tabeli i jego id_wpisu wynosi 1.

Teraz chcąc dodać komentarz do tego wpisu musisz użyć zapytania:
  1. INSERT INTO komentarze VALUES (NULL, [b]1[/b], 'jakaś treść komentarza', 'imię nazwisko nick', now());


Tworząc wpisy i komentarze w taki sposób możesz łatwo wybrać odpowiednie komentarze z wpisami poprzez zapytanie:
  1. SELECT * FROM komentarze WHERE id_wpisu=1;
bakss
fajna sprawa z tymi kluczami smile.gif

jednak, nie dodaje mi w komentarzach cyfry tego nr_wpis, chciałem ten numer pobrac i dodac metodą $koment = $_GET['kat'] tak samo jak używam tej zmiennej do selekcjonowania wpisów... jednak gdy jest ona wpisana w formularzu, to nie dodaje wogóle komentarzu do tabeli...

tak mniejwięcej u mnie to wygląda:


Kod
  <?

   include('admin/config.php');
  $koment = $_GET['kat'];

  $wynik = mysql_query ("SELECT * FROM blog_koment WHERE nr_wpis='$koment' " );

      while ($rekord = mysql_fetch_assoc ($wynik)) {
        $osoba = $rekord['osoba'];
        $data = $rekord['data'];
        $tresc = $rekord['tresc'];

        print "<TABLE CELLPADDING=5 BORDER=0><TR><TD>$osoba </TD><TD>$data </TD><TD>$tresc</TD></TR>\n";;
      }
      print "</TABLE>";

    ?>




<?
      $koment = $_GET['kat'];

      $tresc = addslashes(htmlentities ($_POST['tresc']));
      $osoba = addslashes(htmlentities ($_POST['osoba']));


      if ($tresc && $osoba) {

   include('config.php');

         $query = "INSERT INTO blog_koment ( nr_koment, nr_wpis, tresc, osoba, ".
           " data) VALUES ('null', '$koment', '$tresc', '$osoba', ".
           "now());";
         $wynik = mysql_query ($query);
         print "Wpis".
               "dodany pomyślnie";

      } else {
         print "<H3>komentarz:</H3>";
         print "<FORM METHOD=POST><B>tresc:</B><BR>";
         print "<INPUT TYPE=\"text\" NAME=\"tresc\" VALUE=\"$tresc\" ";
         print "SIZE=60><BR><B>osoba:</B><BR>";
         print "<INPUT TYPE=\"text\" NAME=\"osoba\" ";
         print " VALUE=\"$osoba\" SIZE=60><BR>";
         print "<INPUT TYPE=\"submit\" VALUE=\"Wy¶lij\">";
         print "</FORM>";
      }
    ?>
blue_boy
nie wiem w czym dokładnie leży problem, ale jeżeli chcesz aby formularz komentarza wysyłał poprawne zapytanie do bazy możesz spróbować tak:

  1. <?php
  2. if (isset($_POST['wyslane'])) { //sprawdzamy czy użytkownik wysłał formularz z komentarzem
  3.   if($_POST['tresc'] != "" && $_POST['osoba'] != "") { //dodatkowe sprawdzenie - warto zrobić, żeby użytkownik nie wysłał niewypełnionego formularza
  4.      $koment=$_GET['kat']; //tu jak rozumiem pobierany jest numer wpisu, dla którego użytkownik będzie mógł wprowadzić swój komentarz
  5.      $tresc=$_POST['tresc'];      
  6.      $osoba=$_POST['osoba'];
  7.  
  8.      include('config.php');
  9.      $zapytanie = "insert into blog_koment values (null, $koment, '$tresc', '$osoba', now())";
  10.      mysql_query($zapytanie);
  11.  
  12.      $num=$mysql_affected_rows($uchwyt_polaczenia_z_bd); //uchwyt połączenia uzyskasz w miejscy gdzie łączysz się z BD $uchwyt_polaczenia_z_bd=mysql_connect(host, user, password);
  13.  
  14.      if($num==1) { //warto sprawdzić, czy faktycznie komentarz został dopisany do bazy
  15.            echo "pomyślnie dodano komentarz"
  16.      }
  17.   } else { //jeśli źle wypełnił formularz
  18.   echo "wypełnij formularz poprawnie";
  19.  }
  20. } else { //jeśli w ogóle nie wysłał formularza to należy go wyświetlić
  21.  
  22.  
  23. <form action="ta_strona.php" method="POST">
  24. Osoba: <input type="text" name="osoba"><br />
  25. Text: <textarea name="tresc"></textarea><br />
  26. <input type="hidden" name="wysłane" value=true>
  27. <input type="submit" name="submit" value="Wyślij">
  28. </form>
  29.  
  30. ';
  31.  
  32. }
  33. ?>


jeżeli dalej nie dodaje tego numerka to zrób prosty test i upewnij się, że pobierasz właściwą wartość:

  1. <?php
  2. echo $koment=$_GET['kat'];
  3. ?>
bakss
mój skrypcik też dobry był smile.gif popełniłem błąd przy tworzeniu tabeli ^^

dzięki wielkie za poświęcony czas i pozdrawiam
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.