Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z zapisem do bazy danych.
Forum PHP.pl > Forum > Bazy danych > MySQL
simoc007
Witam, zrobiłem stronkę która zapisuje i drugą co pobiera informacje z bazy danych. na moim komputerze pod krasnalem wszystko działa ale po przerzuceniu na serwer z ubuntu niechce zapisywać wprowadzonych danych jedyne co robi to dodaje nowy wiersz do tabeli z pustymi komórkami. nie wiem co robić bo jednak dodaje wiersze i je wyświetla tylo że puste bez wprowadzonych danych. Po sprawdzeniu w phpmyadmin niby wszystko gra z phpmyadmina moge je usupełnić i się dobrze wyświetlają. poprostu niechcą się zapisać. podwjżewam, że to wina chomod gdzieś ale niewiem gdzie na cały folder var dałem już 777 i nic nie zmieniło to;/ co robić?
alegorn
uuuf, naucz się pisać wyraźniej, to co tu wypociłeś odrzuca po dwóch zdaniach.

jesli dodaje pusty wiersz - znakiem tego ze sql jest poprawny.

wywal sobie jakiś debug zapytania jakie wysyłasz na serwer. myślę że zapytanie masz skopane, sprawdz czy nie masz jakichś notice w php...

po tym co napisałeś, i informacji jaką dostarczyłeś mogę jedynie stwierdzić że skopałeś skrypt.
ta diagnoza jest moim zdaniem jedyną jaką można postawić przy takich informacjach jakie podałeś wink.gif

j.
simoc007
niewiem jak inaczej to opisać ale na innym forum zrozumieli odrazu... ale nie powiedzieli jeszcze jak to usunąć. tu link do tamtego forum: http://forum.linux.pl/viewtopic.php?pid=120536#p120536 może wy coś poradzicie.
sazian
Cytat(simoc007 @ 27.12.2012, 11:47:38 ) *
na moim komputerze pod krasnalem wszystko działa

krasnalem questionmark.gif sciana.gif
tak z ciekawości sprawdziłem ich stronę
Cytat
co nowego:
- nowa wersja Apache 1.3.31
- nowa wersja PHP 4.3.9 i 5.0.2
- nowa wersja MySQLa 3.23.58


php w wersjach 4.x jest już całkowicie niewspierane, a 5.0.2 pochodzi z 2005 roku
mysql 3.23 to rok 2000
apache 1.3.31 z roku 2004
jeśli korzystasz z tak archaicznych rozwiązań, a do tego nie potrafisz opisać problemu to nie dziw się że ludzie nie potrafią pomóc.

Szczerze to nigdy bym nie pomyślał o register_globals pewnie dlatego że tego potworka nie widziałem od kliku(nastu?) lat i nigdy nie używałem
simoc007
kożystam z rozwiązań każdego kursu php. czyli
pole formulaża to:
  1. <INPUT type="text" name="pole">


a wyświetlanie danych to:

  1. echo $pole;


niestety ponoć ta funkcja jest wyłączona w php w ubuntu niewiem czemu. i niemam pojęcia dlaczego niewczytuje mi do bazy danych.

Inaczej opisany problem:
1. mam standardowy formularz html
2.klikam przycisk wysilij
3.przekierowanie do pliku z kodem php który dodaje do bazy danych nowy rekord
4. dodawany jest tylko nowy rekord ale bez danych w formularzu

Jak zrobić by dane się dodały? Ponoć ta funkcja zaplokowana jest tylko niewiem czemu jak to najprostrzy sposub dodawania plików dobazy danych.

co do krasnala to jedyny serv jaki znam. zawsze nanim pracowałem i nigdy mnie nie zawiudł. jeśli nowsze oznacza bardziej skomplikowane i idiotyczne to sorry ale wtedy jest to bez sęsu. Piszę strony w standardowym php i nieśledze co ktoś se wymysilił by niby poprawić kod. moja strona wzorowana jest na zwykłym formulażu i edycji danych takich jak tu: http://www.phpeasystep.com/mysql/9.html

coś jeszcze dodać bo naprwdę niewiem co robić.
sowiq
@simoc007, nie będę za bardzo wnikał, bo poziom Twojej ignorancji jest trochę za wysoki. Napiszę Ci tylko tyle: Zamiast $pole używaj $_POST['pole'].

Jeśli natomiast chciałbyś się nauczyć czegoś więcej, zacznij od bardziej aktualnych wersji oprogramowania, np. równie prosty w obsłudze jak Krasnal XAMPP: http://www.apachefriends.org/en/xampp-windows.html
sazian
Cytat(simoc007 @ 27.12.2012, 22:52:50 ) *
kożystam z rozwiązań każdego kursu php.


należałoby napisać "w każdym kursie php mającym 10lat"

Cytat(simoc007 @ 27.12.2012, 22:52:50 ) *
niestety ponoć ta funkcja jest wyłączona w php w ubuntu niewiem czemu.


dlatego że masz nowe ubuntu, a ta "funkcja" już dawno temu została uznana za zagrażającą bezpieczeństwu

Cytat(simoc007 @ 27.12.2012, 22:52:50 ) *
co do krasnala to jedyny serv jaki znam. zawsze nanim pracowałem i nigdy mnie nie zawiudł. jeśli nowsze oznacza bardziej skomplikowane i idiotyczne to sorry ale wtedy jest to bez sęsu.

czyli rozumiem że systemem operacyjnym jakiego używasz jest DOS ? przecież te nowsze systemy są bardziej skomplikowane i idiotyczne.


Cytat(simoc007 @ 27.12.2012, 22:52:50 ) *
Piszę strony w standardowym php i nieśledze co ktoś se wymysilił by niby poprawić kod.

"standardowe php" to na pewno nie wersja 4.x, obecnie stabilną wersją jest 5.4 więc tą wersję można by uznać za standard



edit:
poczytaj o nowszych wersjach
http://pl.wikibooks.org/wiki/PHP
simoc007
dobra to jak przerobić:

formularz:
  1. <?
  2. @$db = mysql_pconnect("xxxx", "xxxx", "xxxx");
  3. if (!$db)
  4. {
  5. print "wystąpił błąd w połączeniu";
  6. }
  7.  
  8. mysql_select_db("dbspl_cba_pl");
  9.  
  10. $query = "select * from baza_dostawcow";
  11. $result = mysql_query($query);
  12. $num_results = mysql_num_rows($result);
  13. $id=$num_results+1;
  14. ?>
  15. <a href="index.php">strona główna bazy dostawców</a><br>
  16. <br>
  17. <form name="form1" method="post" action="dodaj_baza_dostawcow.php">
  18.  
  19. <!-- Nagłówek-->
  20. <br>
  21.  
  22. <table border="1" bgcolor="#BFF2FD" >
  23. <tr>
  24. <td align="center">Lp</td>
  25. <td align="center" >Nazwa dostawcy</td>
  26. <td align="center" >Adres dostawcy</td>
  27. <td align="center" >NIP</td>
  28. <td align="center" >&nbsp;</td>
  29. </tr>
  30.  
  31.  
  32. <tr>
  33. <td><input type="hidden" name="id" id="id" value="<? echo $row['id']; ?>">
  34. <?
  35. echo $id;
  36. ?>
  37. <td><input style="background-color: cornsilk" name="nazwa_dostawcy" id="nazwa_dostawcy" value="<? echo $row['nazwa_dostawcy']; ?>" size=50 ></td>
  38. <td><input style="background-color: cornsilk" name="adres_dostawcy" id="adres_dostawcy" value="<? echo $row['adres_dostawcy']; ?>" size=50></td>
  39. <td><input style="background-color: cornsilk" name="nip_dostawcy" id="nip_dostawcy" value="<? echo $row['nip_dostawcy']; ?>" size=10></td>
  40. <td align="center"><input type=submit value="dodaj"></td>
  41. </form>
  42.  
  43. </tr>
  44. </table>
  45. <?php
  46. // close connection
  47. ?>



zapis do bazy:

  1. <?
  2. @$db = mysql_pconnect("xxxx", "xxxx", "xxxx");
  3. if (!$db)
  4. {
  5. print "Nie można nawiązać połączenia z bazą danych";
  6. }
  7.  
  8. mysql_select_db("dbspl_cba_pl");
  9.  
  10. $query = "insert into baza_dostawcow values ('".$id."', '".$nazwa_dostawcy."', '".$adres_dostawcy."', '".$nip_dostawcy."' )";
  11. $result = mysql_query($query);
  12.  
  13. if ($result)
  14. header ("Location: index.php");
  15. else { print "BŁĄD"; }
  16.  
  17. ?>




wyświetlenie:

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
  4. <meta http-equiv="Content-Language" content="pl" />
  5. <meta name="Author" content="ITSS EUROPE" />
  6. </head>
  7. <body >
  8. <?
  9. $host="xxxx"; // Host name
  10. $username="xxxx"; // Mysql username
  11. $password="xxxx"; // Mysql password
  12. $db_name="dbspl_cba_pl"; // Database name
  13. $tbl_name="baza_dostawcow"; // Table name
  14.  
  15. // Connect to server and select database.
  16. mysql_connect("$host", "$username", "$password")or die("cannot connect");
  17. mysql_select_db("$db_name")or die("cannot select DB");
  18.  
  19. $sql="SELECT * FROM $tbl_name order by id desc";
  20. $result=mysql_query($sql);
  21. $num_results = mysql_num_rows($result);
  22.  
  23. ?>
  24. <a href="index.php">strona główna bazy dostawców</a><br>
  25. <br>
  26.  
  27. <table border="1">
  28. <tr>
  29. <td align="center">Lp</td>
  30. <td align="center" >Nazwa dostawcy</td>
  31. <td align="center" >Adres dostawcy</td>
  32. <td align="center" >NIP</td>
  33. <td align="center" >&nbsp;</td>
  34. </tr>
  35. <?
  36. for ($i=0; $i <$num_results; $i++) {
  37. $row = mysql_fetch_array($result);
  38. ?>
  39. <form action="zmien_baza_dostawcow.php">
  40. <tr>
  41. <td><input type="hidden" name="id" id="id" value="<? echo $row['id']; ?>">&nbsp;
  42. <?
  43. echo $row['id'];
  44. ?>&nbsp;
  45. </td>
  46. <td>&nbsp;<?
  47. print $row["nazwa_dostawcy"];
  48. ?></td>
  49. <td><?
  50. print stripslashes($row["adres_dostawcy"]);
  51. ?>&nbsp;</td>
  52. <td>&nbsp;<? echo $row['nip_dostawcy']; ?>&nbsp;</td>
  53. <td align="center"><input type=submit value="zmień"></td>
  54. </form>
  55. <?
  56. }
  57. ?>
  58. </tr>
  59. </table>
  60.  
  61.  
  62. </body>
  63. </html>


pliki do zmiany tak samo napisane. więc PROSZĘ co zmienić by działało??
sazian
czułki opadają
np.
masz
  1. <td><input type="hidden" name="id" id="id" value="<? echo $row['id']; ?>">

co można by zapisać krócej jako
[html<td><input type="hidden" name="id" id="id" value="<?=$row['id']; ?>">][/html]
ale mniejsza z tym


obecnie do danych wysłanych z tego pola odwołujesz się przez $id, w nowszych wersjach php będziesz się odwoływał przez $_POST['id']
ale jest jedno ale
jeśli nie podasz metody przesyłania jak np. tu
  1. <form action="zmien_baza_dostawcow.php">

wszystkie pola z formularza nie będą zapisywane w tabeli $_POST tylko $_GET.
Czyli jeśli w formularzu dasz method="post" zostaną zapisane w $_POST, a jeśli dasz method="get" lub nie podasz method to dane zostaną zapisane w $_GET


i kilka uwag
  1. @$db = mysql_pconnect("xxxx", "xxxx", "xxxx");

1)z tego co mi wiadomo lepiej używać mysql_connect
2)jeśli już używasz małpy to powinna być przed nazwą funkcji
3)rada na przyszłość: wygląda na to że twórcy php będą rezygnować z funkcji mysql_* o czym dają delikatnie do zrozumienia. Na razie tylko piszą że te funkcje są niezalecane. Za kilka wersji pewnie będzie się wyświetlał komunikat że są przestarzała, a za klika następnych zostaną całkowicie usunięte. Więc radził bym poczytać o mysqli


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.