Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Licznik wypełnienie formularzu[Solved]
Forum PHP.pl > Forum > Przedszkole
Manifested01
Na stronie article.php?id=35 jest formularz dodawania rekordów do bazy mysql. Ten formularz to zwykły form który używa zewnetrznego pliku insert.php. Chciałbym żeby przy każdym nowym wpisie do kolumny "licznik" dodawało się +1. Problem w tym że nie wiem jak to zrobić żeby dodawało się do wiersza o id strony z formularzem. I nie wiem czy to wlasciwie jest mozliwe.;p

insert formularza

  1. <?php
  2. $con = mysql_connect(&#092;"sql5.ss.ss.pl\",\"ss_ss\",\"ss\");
  3. if (!$con)
  4. {
  5. die('Could not connect: ' . mysql_error());
  6. }
  7.  
  8. mysql_select_db(&#092;"ss_ss\", $con);
  9.  
  10. $sql=&#092;"INSERT INTO Glosy (imieglos, nazwiskoglos, emailglos, komentarz, ipglos, dataglos)
  11. VALUES
  12. ('$_POST[imieglos]','$_POST[nazwiskoglos]','$_POST[emailglos]','$_POST[komentarz]','$_SERVER[REMOTE_ADDR]',NOW())&#092;";
  13. if (!mysql_query($sql,$con))
  14. {
  15. die('Error: ' . mysql_error());
  16. }
  17. echo &#092;"Glos oddany\";
  18.  
  19. ?>


formularz
  1. <div id="container">
  2. <form action="insertvote.php" method="post" class="form">
  3. <input type="text" id="imieglos" name="imieglos" size="30" value="Imie"/>
  4.  
  5.  
  6.  
  7. <input type="text" id="nazwiskoglos" name="nazwiskoglos" size="30" value="Twoje nazwisko"/>
  8.  
  9.  
  10.  
  11.  
  12. <input type="text" id="emailglos" name="emailglos" size="30" value="Twój email"/>
  13.  
  14.  
  15.  
  16. <textarea id="komentarz" name="komentarz" rows="10" value="Popieram tą petycje" cols="30"> </textarea>
  17.  
  18.  
  19.  
  20. <input type="submit" value="Wyślij" size="30"/>
  21. </form>
  22. </div>


strona z formularzem na ktorej jest id
  1. <?php
  2. $id =(int)$_GET[&#092;"id\"];
  3. $id = trim((int)$_GET[&#092;"id\"]);
  4.    define(DB_HOST,&#092;"sql5.ss.ss.pl\");
  5.    define(DB_USER,&#092;"ss_ss\");
  6.   define(DB_PASS,&#092;"ss\");                     // tu hasło
  7.   define(DB_NAME,&#092;"ss_ss\");            // tu nazwa bazy danych
  8.          $polaczenie = mysql_connect(DB_HOST,DB_USER,DB_PASS) or die(&#092;"Nie mogę połączyć się MySQL-em!\");
  9.            $baza = mysql_select_db(DB_NAME, $polaczenie) or die(&#092;"Nie mogę wybrać bazy danych!\");
  10.                $sql = &#092;"SELECT * FROM `Petycje` WHERE `id`= '$id'\";
  11.                    $result = @mysql_query($sql, $polaczenie)    or die(&#092;"brak odpowiedzi z zapytania\");
  12.            while ($row = mysql_fetch_array($result)) {
  13.                $id = $row['id'];
  14.                $tytul = $row['tytul'];
  15.                $adresat = $row['adresat'];
  16.                $tresc = $row['tresc'];
  17.                $email = $row['email'];
  18. echo '';
  19. echo $tytul;
  20. echo '';
  21. }
  22. ?>


skrypt dodawania nie wiem czy dziala bo nie wiem co z tym id zrobic
Kod
mysql_query("UPDATE licznik SET licznik = licznik + 1");
artur_dziocha
Po wysłaniu formularza pobierasz jego id(nie wiem jak chcesz postem getem) u updejtujesz wiersz z tym id
EDIT~ id wrzucasz w pole hidden
pobierasz licznik i id z bazy
dodajesz do licznika 1 lub ile tam chcesz
upddejtujesz
Manifested01
napisałem coś takiego no ale jak dodaje to z licznikiem id to nie działa;/

  1. <?php
  2.    $con = mysql_connect("sql5.ss.ss.pl","ss_ss","ss");
  3.    if (!$con)
  4.    {
  5.    die('Could not connect: ' . mysql_error());
  6.    }
  7.  
  8.    mysql_select_db("ss_ss", $con);
  9.  
  10.    $sql="INSERT INTO Glosy (imieglos, nazwiskoglos, emailglos, komentarz, ipglos, dataglos)
  11.    VALUES
  12.    ('$_POST[imieglos]','$_POST[nazwiskoglos]','$_POST[emailglos]','$_POST[komentarz]','$_SERVER[REMOTE_ADDR]',NOW())";
  13.    if (!mysql_query($sql,$con))
  14.    {
  15.    die('Error: ' . mysql_error());
  16.    }
  17.    echo "Glos oddany";
  18.    $sql = mysql_query("SELECT id, licznik FROM Petycje");
  19.    while($row = mysl_fetch_array($sql)){
  20.    mysql_query("UPDATE licznik SET licznik = '".++$row['licznik']."' WHERE id = '".$row['id']."'");
  21.  
  22.    mysql_close($con)
  23.    ?>
Parse error: syntax error, unexpected $end in /home/users/sobolczyk_moja/www/scripts/insertvote.php on line 24


erix
Sprawdź średniki...
Manifested01
wiem ze dla Ciebie to jest takie proste i nie dając mi konkretniej odpowiedzi chcesz mnie jakos stymulowac/zmusic do myslenia
ale masz doczynienina z totalnym laikiem jesli chodzi o programowanie wiec prosiłbym o konkrety
erix
Cytat
ale masz doczynienina z totalnym laikiem jesli chodzi o programowanie wiec prosiłbym o konkrety

Konkretem będzie, jeśli zajrzysz najpierw do kursu PHP. Tam na pewno przeczytasz, że niektóre instrukcje muszą być zakończone średnikiem.
gcdreak
@erix
pomóż koledze, bo ma problem

--
Czy Twoja wypowiedź wnosi coś do tematu? Regulamin, pkt 3a

erix
Manifested01
no ok zamknołem

  1. <?php
  2.      $con = mysql_connect("sql5.ds.dsd.pl","ds","moja");
  3.      if (!$con)
  4.      {
  5.      die('Could not connect: ' . mysql_error());
  6.      }
  7.  
  8.      mysql_select_db("dsd_dsd", $con);
  9.  
  10.      $sql="INSERT INTO Glosy (imieglos, nazwiskoglos, emailglos, komentarz, ipglos, dataglos)
  11.      VALUES
  12.      ('$_POST[imieglos]','$_POST[nazwiskoglos]','$_POST[emailglos]','$_POST[komentarz]','$_SERVER[REMOTE_ADDR]',NOW())";
  13.      if (!mysql_query($sql,$con))
  14.      {
  15.      die('Error: ' . mysql_error());
  16.      }
  17.      echo "Glos oddany";
  18.      $sql = mysql_query("SELECT id, licznik FROM Petycje");
  19.      while($row = mysl_fetch_array($sql)){
  20.      mysql_query("UPDATE licznik SET licznik = '".++$row['licznik']."' WHERE id = '".$row['id']."'");
  21.  }
  22.  
  23.      mysql_close($con)
  24.      ?>


Glos oddany
Fatal error: Call to undefined function mysl_fetch_array() in /home/users/sobolczyk_moja/www/scripts/insertvote.php on line 19


= 1 funkcja do tabeli `Glosy` dziala
licznik nie dziala
teraz to sie kwalifikuje na pomoc?
gcdreak
Kod
mysql_fetch_array()

Literówki
Manifested01
oO ok zmienione teraz nie wyskakuje zaden błąd
ale ta druga funkcja nie działa tzn nie dodaje się +1 do licznik
gcdreak
Dokładnie się na tym nie znam ale spróbuj zamienić metodę odwoływania sie do rekordu. Dokładniej mówiąc chodzi mi o to, żebyś zamiast preinkrementacji zastosował coś na wzór:
$row= $row +1
erix
~gcdreak:
Cytat
pomóż koledze, bo ma problem

Przecież pomagam. Nie moja wina, że ~Manifested01 nie przeczytał kursu, ani manuala.

Cytat
preinkrementacji zastosował coś na wzór:

A po co?

  1. <?php
  2. mysql_query("UPDATE licznik SET licznik = '".++$row['licznik']."' WHERE id = '".$row['id']."'");
  3. ?>

przecież to może równie dobrze zrobić MySQL:
  1. <?php
  2. mysql_query("UPDATE licznik SET licznik = licznik+1 WHERE id = '".$row['id']."'");
  3. ?>


I wówczas cały poprzedzający select staje się zbędny.
gcdreak
erix
chodziło mi dokładnie o coś takiego jak napisałeś
Manifested01
zmieniłem tak jak powiedziałes ale efekt jest ten sam z formularza do `glosy` sie dodaje a licznik nie dziala chociaz nie ma niby zadnego błędu



/scripts/insertvote.php
  1. <?php
  2.     $con = mysql_connect("sss","ss","ss");
  3.     if (!$con)
  4.     {
  5.     die('Could not connect: ' . mysql_error());
  6.     }
  7.  
  8.     mysql_select_db("sss", $con);
  9.  
  10.     $sql="INSERT INTO Glosy (imieglos, nazwiskoglos, emailglos, komentarz, ipglos, dataglos)
  11.     VALUES
  12.     ('$_POST[imieglos]','$_POST[nazwiskoglos]','$_POST[emailglos]','$_POST[komentarz]','$_SERVER[REMOTE_ADDR]',NOW())";
  13.     if (!mysql_query($sql,$con))
  14.     {
  15.     die('Error: ' . mysql_error());
  16.     }
  17.     echo "Glos oddany";
  18.     $sql = mysql_query("SELECT id, licznik FROM Petycje");
  19.     while($row = mysql_fetch_array($sql)){
  20.     mysql_query("UPDATE licznik SET licznik = '".++$row['licznik']."' WHERE id = '".$row['id']."'");
  21. }
  22.  
  23.     mysql_close($con)
  24.     ?>


http://img13.imageshack.us/my.php?image=tabelekg7.jpg

i to działa niby tak:

na stronie petycje.php?id=99
mam to zmienne id
i wygląda ona tak:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  5. <script language="javascript" type="text/javascript" src="scripts/form.js"></script>
  6. <style type="text/css" media="screen">@import url(style.css);</style>
  7. </head>
  8. <br>
  9. <div id="container">
  10. <form action="scripts/insertvote.php" method="post" class="form">
  11. <input type="text" id="imieglos" name="imieglos" size="30" value="Imie"/><br />
  12. <br>
  13. <input type="text" id="nazwiskoglos" name="nazwiskoglos" size="30" value="Twoje nazwisko"/><br />
  14.  
  15. <br>
  16. <input type="text" id="emailglos" name="emailglos" size="30" value="Twój email"/><br />
  17. <br>
  18. <input type="text" id="komentarz" name="komentarz" size="30" value="Popieram tą petycje."/><br />
  19. <br>
  20.  
  21. <input type="submit" value="Wyslij" name="wyslij" size="10"/>
  22. </form>


generalnie dane z formularza wszystkie sie pieknie dodaja do `Glosy`
ale tylko tylko ten jeden licznik musi sie dodawac do `Petycje` do wiersza zgodnego z id
erix
Przeczytaj mojego poprzedniego posta jeszcze raz i zobacz, co zmieniłem w kodzie. Bo mam wrażenie, że niczego nie zmodyfikowałeś.
Manifested01
zmodyfikowałem ale efekt był taki sam jak tej mojej wersji a potem przez pomyłke skopiowałem stary kod
anyway ani to ani to nie działa :/ juz powoli sie załamuje
Ociu
Panie Manifested01, proszę o używanie odpowiedniego bbCode, dwa posty poprawiłem, ale średnio dzisiaj z czasem u mnie, także proszę poprawić swoje posty. Następny post z niepoprawnym bbCode spowoduje zamknięcie tematu.
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.