Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] [MySQL] dodawanie, wpisów do bazy
Forum PHP.pl > Forum > Przedszkole
miooodek
Siema

Mam sporo zmiennych sesyjnych, które działają i wyswietlają się ładnie na stronie, a teraz chciałbym je zapisac do bazy
I tu zaczynają sie problemy

  1. <?php
  2. include('mysql.inc');
  3. mysql_select_db(transport);
  4.  $zapytanie = "INSERT INTO `zlecenia` ( `ID` , `NR_ZLECENIA` , `KLIENT` , `PLATNIK` , `PRZEWOZNIK` , `RODZAJ_TOWAR
    U` , `WAGA` , `FRACHT` , `SPRZEDANE` , `MIEJSCE_Z` , `SPOSOB_Z` , `DATA_Z` , `GOD
    Z_Z` , `MIEJSCE_R` , `SPOSOB_R` , `DATA_R` , `GODZ_R` , `K_IMIE` , `K_NAZWISKO` ,
     `K_DOWOD` , `K_SAMOCHOD` , `K_NACZEPA` , `K_TELEFON` , `DATA_WPLYWU_DOK` , `NR_F
    AKTURY` , `ANULOWANO` ) 
  5. VALUES (
  6. '', 'nr_zlecenia', 'klient', 'platnik', 'przewosnik', 'towar', 'waga', 'fracht', 'sprzedane', 'miejsce_z', 'sposob_z', 'data_z', 'godz_z', 'miejsce_r', 'sposob_r', 'data_r', 'godz_r', 'imie', 'nazwisko', 'dowod', 'samochod', 'naczepa', 'telefon', '', '', ''
  7. );";
  8.  
  9. $wynik = mysql_query($zapytanie);
  10. ?>


dane zmiennych sesyjnych wyglądają tak

  1. <?php
  2.  
  3. echo file_get_contents('mefisto.dat') - 1;
  4.  
  5. ?> <?php echo date('/m/Y'); ?> | <? echo $_SESSION['klient']; ?> | <? echo $_SESSION['platnik']; ?> | <? echo $_SESSION['przewoznik']; ?> | <?php echo $_SESSION['towar'];?> | <strong><?php echo $_SESSION['waga']; ?> | <?php echo $_SESSION['fracht'];?> | <?php echo $_SESSION['sprzedane'];?><br />
  6. <br />
  7. <?php echo $_SESSION['zaladunek']; ?> | <?php echo $_SESSION['sposob_zal']; ?> | 
  8. <?php if(empty($_SESSION['data_zal_alt']))
  9. {
  10. echo $_SESSION['data_zal'];
  11. }
  12. else
  13. {
  14. echo $_SESSION['data_zal_alt'] . " / " . $_SESSION['data_zal'];
  15. }
  16. ?> | <?php
  17. if(empty($_SESSION['godz_zal']))
  18. {
  19. ?>
  20. <?php drukuj6($_SESSION['zaladunek']); 
  21. }
  22. else
  23. {
  24. ?>
  25. <?php echo $_SESSION['godz_zal'];
  26. }
  27. ?> <br />
  28. <br />
  29. <?php echo $_SESSION['rozladunek']; ?> | <?php echo $_SESSION['sposob_roz']; ?> | <?php if(empty($_SESSION['data_roz_alt']))
  30. {
  31. echo $_SESSION['data_roz'];
  32. }
  33. else
  34. {
  35. echo $_SESSION['data_roz_alt'] . " / " . $_SESSION['data_roz'];
  36. }
  37. ?> | <?php
  38. if(empty($_SESSION['godz_roz']))
  39. {
  40. ?>
  41. <?php drukuj6($_SESSION['rozladunek']); 
  42. }
  43. else
  44. {
  45. ?>
  46. <?php echo $_SESSION['godz_roz'];
  47. }
  48. ?> <br />
  49. <br />
  50. <?php echo $_SESSION['imie']; ?> | <?php echo $_SESSION['nazwisko']; ?> | <?php echo $_SESSION['dowod']; ?> | <?php echo $_SESSION['telefon']; ?> | <?php echo $_SESSION['nr_samochodu']; ?> | <?php echo $_SESSION['nr_naczepy']; ?>


i jak bym nie probowal to nie moge zmiennej sesyjnej podstawic pod wartosc pol z tabeli w bazie

Pozdrawiam, moze ktos wie jak wstawiac zmienne sesyjne do bazy smile.gif
Berg
  1. <?php
  2. $zapytanie = "INSERT INTO `zlecenia` ( `ID` , `NR_ZLECENIA` , `KLIENT` , `PLATNIK` , `PRZEWOZNIK`) 
  3. VALUES (
  4. '', 'questionmark.gif', '".$_SESSION['klient']."', '".$_SESSION['platnik']."', '".$_SESSION['przewoznik']."');";
  5. ?>

Nie było sensu wszystkiego przepisywać, tak jak wyżej jak masz '' to aby wstawić w apostrofy zmienną sesyjną to musisz zamknąć zapytanie, postawić kropkę informującą o dopisaniu do stringu, podstawić zmienną i ponownie podstawić resztę zapytania (czyli '".$zmienna."')
no_face
Zastosuj zapis:
  1. <?php
  2. $imie = $_SESSION['imie'];
  3. ?>


//lub w zapytaniu od razu, czyli bez apostrofow, troche naciagane, ale sprawia mniej problemow poczatkujacym

  1. <?php
  2. $_SESSION[imie];
  3. ?>
webdice
Cytat(no_face @ 2.05.2008, 12:58:48 ) *
//lub w zapytaniu od razu, czyli bez apostrofow, troche naciagane, ale sprawia mniej problemow poczatkujacym

  1. <?php
  2. $_SESSION[imie];
  3. ?>


Nie praktykuje się czegoś takiego, index imie traktowany jest jako stała, jeśli by taka stała istniała nic by się nie wyświetliło (oczywiście oprócz ostrzeżenia).

  1. <?php
  2. print 'to jest tekst, a tu juz jest ' . $_SESSION['imie'] . ' zmienna';
  3. ?>


Mam nadzieje że powyższy przykład wam to trochę rozjaśni.
miooodek
A jak dodac cos takiego do bazy

  1. <?php
  2. if(empty($_SESSION['data_zal_alt']))
  3. {
  4. echo $_SESSION['data_zal'];
  5. }
  6. else
  7. {
  8. echo $_SESSION['data_zal_alt'] . " / " . $_SESSION['data_zal'];
  9. }
  10. ?>


chodzi o to, ze jesli nie bylo podanej alternatywnej daty, wyswietla poprostu date, a jesli byla podana, wsywietla ją wtedy tak
data / data_alternatywna
webdice
  1. <?php
  2. if(empty($_SESSION['data_zal_alt']))
  3. {
  4. $date = $_SESSION['data_zal'];
  5. }
  6. else
  7. {
  8. $date = $_SESSION['data_zal_alt'] . " / " . $_SESSION['data_zal'];
  9. }
  10. ?>


W zapytaniu do bazy używasz zmiennej date.
no_face
Wynik dzialania przypisz do jakiejs zmiennej i wartosc owej zmiennej dodawaj do bazy.

  1. <?php
  2. if(empty($_SESSION['data_zal_alt']))
  3. {
  4. echo $zmienna_data = $_SESSION['data_zal'];
  5. }
  6. else
  7. {
  8. echo $zmienna_data = $_SESSION['data_zal_alt'] . " / " . $_SESSION['data_zal'];
  9. }
  10. ?>


W tym przypadku zachowasz rowniez wyswietlanie danych zaimpementowane wczesniej przez Ciebie.
Berg
Masz dwie tabele w bazie danych przy czym tabela z datą alternatywną ma opcje NULL.
Dodajesz do bazy danych coś w stylu :

  1. <?php
  2. $sql = mysql_query("INSERT INTO `zlecenia` (`data`, `data_alternatywna`) VALUES ('". $_SESSION['data_zal'] ."', '" .$_SESSION['data_zal_alt']. "') ");
  3. ?>


Jeśli $_SESSION['data_zal_alt'] nie będzie posiadała żadnych wartości to do bazy zostanie wstawione NULL. Potem przy odczycie sprawdzasz czy data_alternatywna jest pusta i jeśli nie jest to wyświetlasz w formacie data_alternatywna / data.
miooodek
to nie bylo by zle, tyle ze w kolejnym pliku musial bym znow sprawdzac to co juz bylo sprawdzone, a czy tego kodu nie dalo by sie pod zmienna dopisac?
Berg
Możesz skorzystać z sesji i wpisać do nowej zmiennej poprawny format:

  1. <?php
  2. if(empty($_SESSION['data_zal_alt']))
  3. {
  4. echo $zmienna_data = $_SESSION['data_zal'];
  5. $_SESSION['format_daty'] = $_SESSION['data_zal'];
  6. }
  7. else
  8. {
  9. echo $zmienna_data = $_SESSION['data_zal_alt'] . " / " . $_SESSION['data_zal'];
  10. $_SESSION['format_daty'] = $_SESSION['data_zal_alt'] . " / " . $_SESSION['data_zal'];
  11. }
  12. ?>


Na następnej stronie sprawdzasz czy $_SESSION['format_daty'] nie jest pusty. Jeśli nie jest to możesz ją spokojnie wyświetlić. Jeśli zmienna jest pusta to oznacza, że nastąpiło zniszczenie sesji a format_daty nie został na nowo zapisany. W takim wypadku odczytujesz dane z bazy danych i ponownie ustawiasz poprawny format do $_SESSION['format_daty'].
miooodek
wieczne problemy... chciałem analogicznie do przykladu berga zrobic godzinę

  1. <?php
  2. if(empty($_SESSION['godz_zal']))
  3. {
  4. echo $zmienna_godzina = drukuj6($_SESSION['zaladunek']);
  5. $_SESSION['format_godz_zal'] = drukuj6($_SESSION['zaladunek']); 
  6. }
  7. else
  8. {
  9. echo $zmienna_godzina = $_SESSION['godz_zal'];
  10. $_SESSION['format_godz_zal']= $_SESSION['godz_zal'];
  11. }
  12. ?>


i oczywiscie nie dziala... moze to przez funkce drukuj?
Berg
Podaj więc kod funkcji i sprawdź czy na pewno ta funkcja zwraca jakikolwiek tekst.
miooodek
Tak, zwraca, na stronie sie łądnie wyswietla, tylko do bazy sie oczywiscie nie chce zapisac...

  1. <?php
  2. function drukuj6($miejsce_id)
  3. {
  4. include("mysql.inc");
  5.  mysql_select_db('transport');
  6. $zapytanie = "select * from miejsca WHERE miejsce_id=".$miejsce_id."";
  7. $wynik = mysql_query($zapytanie);
  8. @ $ile_znalezionych = mysql_numrows($wynik);
  9. for ($i=0; $i <$ile_znalezionych; $i++)
  10.  
  11. {
  12. $wiersz=mysql_fetch_array($wynik);
  13.  echo stripslashes($wiersz['godz_zaladunku']);
  14.  }
  15. }
  16. ?>
Berg
Po pierwsze nie widzę w tej funkcji zapisu do bazy danych. Po drugie:
  1. <?php
  2. @ $ile_znalezionych = mysql_numrows($wynik);
  3. ?>

Jeśli wywala błąd to znaczy, że coś jest nie tak, nie wiem po co tłumisz takie błędy. W tym wypadku powinno być mysql_num_rows a nie mysql_numrows.
A po trzecie funkcja nic nie zwraca, kod echo $zmienna_godzina = drukuj6($_SESSION['zaladunek']); próbuje zapisać pod $zmienna_godzina wartość zwracaną przez funkcję drukuj6, w rezultacie przy próbie wywołania $zmienna_godzina zostanie wyświetlony pusty string. Masz niewiarygodny bałagan w kodzie.
miooodek
w tej funkcji nie ma zapisu do bazy danych, ogolnie ona ma za zadanie wyswietlac jedną kolumne z rekordu którego id dostaje w swoim wywołaniu...

działa to dobrze, i wyswietla wyniki na stronie, probelm pojawia sie przy zapisie do bazy danych...
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.