Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] jak przekazać zmienną do kolejnego pliku
Forum PHP.pl > Forum > Przedszkole
Immanuel
Próbuję zrobić UPDATE rekordu w bazie.
Napisałem coś takiego:

  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. <LINK href="style.css" type=text/css rel=StyleSheet>
  6. <TITLE>Przeglądaj Bazę Danych</TITLE>
  7. </HEAD>
  8. <BODY>
  9. <? 
  10. $id=$_POST['xxxx']; // tutaj mam przypisaną liczbę...
  11.  
  12. echo '
  13.  
  14. <center><h4>Dokonaj korekty wybranego rekordu</h4></center>
  15.  
  16. <center><table width=600 bgcolor=#444444>
  17. <tr><td width=200>
  18. <form action=edycja2.php method=post>
  19. Podaj imie: </td><td width=300><input type=text name=imie maxlenght=100 size=50></td></tr>
  20. <tr><td width=200>Podaj tytuł nazwisko: </td><td width=300><input type=text name=nazwisko maxlenght=100 size=50></td></tr>
  21. <tr><td width=200>Podaj notatki: </td><td width=300><input type=text name=notatki maxlenght=100 size=50></td></tr>
  22. <tr><td width=200>Id </td><td width=300><input type=radio name=id value=$id></td></tr>
  23. <tr><td width=200>&nbsp;</td><td width=300><input type=submit value=ZAPISZ></td></tr>
  24. </form>
  25. </table></center>
  26.  
  27. ';
  28.  
  29. ?>
  30.  
  31. </BODY>
  32. </HTML>


i skrypt:

  1. <html>
  2. <head>
  3. <title> Dodawanie rekordów do bazy </title>
  4. </head>
  5. <body>
  6. <?php
  7. $imie=$_POST['imie'];
  8. $nazwisko=$_POST['nazwisko'];
  9. $notatki=$_POST['notatki'];
  10. $id=$_POST['id'];
  11.  
  12. if (!$imie || !$nazwisko || !$notatki || !$id)
  13. {
  14. echo "Nie podano wszystkich potrzebnych danych.<br>
  15. Wróć do poprzedniej strony i spróbuj ponownie.";
  16. }
  17.  
  18. {
  19. $imie = addslashes($imie);
  20. $nazwisko = addslashes($nazwisko);
  21. $notatki = addslahes($notatki);
  22. $id = addslashes($id);
  23. }
  24.  
  25. mysql_connect ("localhost","root","krasnal") or
  26. die ("Nie można połączyć się z MySQL");
  27. mysql_select_db ("dziennik") or
  28. die ("Nie można połączyć się z Bazą Dziennik");
  29.  
  30. $zapytanie = "UPDATE uczen SET imie='$imie' nazwisko='$nazwisko' notatki='$notatki' WHERE id='$id' LIMIT 1";
  31. $wynik = mysql_query($zapytanie);
  32. if ($wynik)
  33. {
  34. echo 'Korekta dokonana.<br><a href=admin_wprowadz_korekty.php>Powrót do korekt</a>';
  35. }
  36. else
  37. {
  38. echo 'Błąd podczas wykonywania..';
  39. }
  40.  
  41. ?>
  42.  
  43. </body>
  44. </html>


1) Po pierwsze to cały czas wyskakuje błąd podczas wykonywania.
2) Czy nie da się zmiennej $id w lepszy sposób przekazać do skryptu ?
maryaan
1. wstaw do posta tresc bledu
2. da sie,
  1. <input type="hidden" value="lolololol">

3. robisz edycje rekordu wiec pasowaloby wstawiac do pol wartosci ktore juz wczesniej byly zapisane (to akurat malo wazne)
4. teraz juz widze co masz zle, tabele wyswietlasz w '' i $id jest przekazywane jako lancuch $id a nie jako jego wartosc
5. tak chyba ladniej wyglada? snitch.gif
  1. <HEAD>
  2. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">
  3. <meta http-equiv="Content-Language" content="pl">
  4. <LINK href="style.css" type=text/css rel=StyleSheet>
  5. <style type="text/css">
  6. h4 {
  7. text-align: center;
  8. }
  9.  
  10. table {
  11. background-color: #444444;
  12. width: 600px;
  13. margin: 0 auto 0 auto;
  14. }
  15. td:first-child{
  16. width: 200px;
  17. }
  18. </style>
  19. <TITLE>Przeglądaj Bazę Danych</TITLE>
  20. </HEAD>
  21. <BODY>
  22. <?
  23. $id=$_POST['xxxx']; // tutaj mam przypisan&#261; liczb&#281;...
  24.  
  25. echo '
  26. <h4>Dokonaj korekty wybranego rekordu</h4>
  27. <form action=edycja2.php method=post>
  28. <input type=hidden name=id value="'.$id.'">
  29. <tr>
  30. <td>
  31. Podaj imie:
  32. </td>
  33. <td>
  34. <input type=text name=imie maxlenght=100 size=50>
  35. </td>
  36. </tr>
  37. <tr>
  38. <td>
  39. Podaj tytuł nazwisko:
  40. </td>
  41. <td>
  42. <input type=text name=nazwisko maxlenght=100 size=50>
  43. </td>
  44. </tr>
  45. <tr>
  46. <td>
  47. Podaj notatki:
  48. </td>
  49. <td>
  50. <input type=text name=notatki maxlenght=100 size=50>
  51. </td>
  52. </tr>
  53. <tr>
  54. <td>
  55. <input type=submit value=ZAPISZ>
  56. </td>
  57. </tr>
  58.  
  59. </form>
  60. ';
  61.  
  62. ?>
  63.  
  64. </BODY>
  65. </HTML>
tabulatory sie rozjezdzaja troche ale wiadomo ocb
Immanuel
dalej wyskakuje ten sam błąd:
"Błąd podczas wykonywania.."

coś w skrypcie może jest nie tak:
  1. <html>
  2. <head>
  3. <title> Dodawanie rekordów do bazy </title>
  4. </head>
  5. <body>
  6. <?php
  7. $imie=$_POST['imie'];
  8. $nazwisko=$_POST['nazwisko'];
  9. $notatki=$_POST['notatki'];
  10. $id=$_POST['id'];
  11.  
  12. if (!$imie || !$nazwisko || !$notatki || !$id)
  13. {
  14. echo "Nie podano wszystkich potrzebnych danych.<br>
  15. Wróć do poprzedniej strony i spróbuj ponownie.";
  16. }
  17.  
  18. {
  19. $imie = addslashes($imie);
  20. $nazwisko = addslashes($nazwisko);
  21. $notatki = addslahes($notatki);
  22. $id = addslashes($id);
  23. }
  24.  
  25. mysql_connect ("localhost","root","krasnal") or
  26. die ("Nie można połączyć się z MySQL");
  27. mysql_select_db ("dziennik") or
  28. die ("Nie można połączyć się z Bazą Dziennik");
  29.  
  30. $zapytanie = "UPDATE uczen SET imie='$imie' nazwisko='$nazwisko' notatki='$notatki' WHERE id='$id' LIMIT 1";
  31. $wynik = mysql_query($zapytanie);
  32. if ($wynik)
  33. {
  34. echo 'Korekta dokonana.<br><a href=admin_wprowadz_korekty.php>Powrót do korekt</a>';
  35. }
  36. else
  37. {
  38. echo 'Błąd podczas wykonywania..';
  39. }
  40.  
  41. ?>
  42.  
  43. </body>
  44. </html>
maryaan
po tym jak przepisujesz zmienne z tablicy $_POST, wyswietl sobie te wszystkie cztery zmienne (echo $imie.'<br>'.$nazwisko. itd...) i przed linijka $wynik = mysql_query($zapytanie);[/php] wstaw
Kod
]<?php
echo $zapytanie;
?>
i skopiuj cale zapytanie ktore sie wyswietli
Immanuel
Marcin
Kowalski
Ma problemy z matmą.
1

UPDATE uczen SET imie='Marcin' nazwisko='Kowalski' notatki='Ma problemy z matmą.' WHERE id='1' LIMIT 1

Błšd podczas wykonywania..
maryaan
zmien ta linie z wykonaniem zapytania w ten sposob
Kod
$wynik = mysql_query($zapytanie) or die(mysql_error());

i odpal strone
Immanuel
Something is wrong in your syntax obok 'nazwisko='Nowakowski' notatki='Ma problemy z matmą.' WHERE id='1' w linii 1
mike
Cytat(Immanuel @ 17.01.2007, 22:45:28 ) *
UPDATE uczen SET imie='Marcin' nazwisko='Kowalski' notatki='Ma problemy z matmą.' WHERE id='1' LIMIT 1

A powinno być:
UPDATE uczen SET imie='Marcin', nazwisko='Kowalski', notatki='Ma problemy z matmą.' WHERE id='1' LIMIT 1

~Immanuel ten wątek Najczęstsze błędy, Zanim zapytasz, to sprawdź. powstał między innymi dla Ciebie. (szczególnie 2. Problemy z zapytaniem SQL)
Gdybyś zadał sobie trud przeczytania go to zlokalizowanie problemu zajęło by Ci minutę.
Immanuel
mike_mech, dziękuję smile.gif
wszysto śmiga
maryaan
heh glupek ze mnie, przeciez nie masz przecinkow miedzy kolejnymi polami

edit no wlasnie smile.gif
Immanuel
  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. <LINK href="style.css" type=text/css rel=StyleSheet>
  6. <TITLE>Nowa Lekcja</TITLE>
  7. </HEAD>
  8. <BODY>
  9. <? 
  10.  
  11. $id_nauczyciel=$_POST['nauczyciel'];
  12. $klasa=$_POST['xxxx'];
  13.  
  14. echo "Nauczyciel " . "$id_nauczyciel";
  15. echo "<br>Klasa " . "$klasa";
  16.  
  17.  
  18. mysql_connect ("localhost", "root", "krasnal") or 
  19. die ("Nie można połączyć się z MySQL");
  20. mysql_select_db ("dziennik") or 
  21. die ("Nie można połączyć się z bazą.");
  22.  
  23.  $wynik = mysql_query ("SELECT * FROM uczen") or 
  24. die ("błąd w pytaniu");
  25.  
  26. print "<center>Sprawdz obecnosc:</center><br><center><form action=nauczyciel_nowa_lekcja3.php method=post><TABLE CELLPADDING=5 BORDER=1><TR><td>Id</td><TD>Imie</TD><TD>Nazwisko</TD><TD>Zaznacz</TD></TR>n";
  27.  
  28. while ($rekord = mysql_fetch_array ($wynik)) {
  29. $id = $rekord[0];
  30. $imie = $rekord[1];
  31. $nazwisko = $rekord[2];
  32. $stopien = $rekord[3];
  33. $id_przedmiotu = $rekord[4];
  34.  
  35.  
  36. print "<TR><td>&nbsp;$id</td><TD>&nbsp;$imie</TD><TD>&nbsp;$nazwisko</TD><td><input type=checkbox checked=checked name=xxxx value=$id>&nbsp;</td></TR>n";
  37. }
  38.  
  39. print "</TABLE>
  40. <input type=submit value=ZAPISZ></form></center>";
  41.  
  42. ?>
  43.  
  44. </BODY>
  45. </HTML>


wartość xxxx zwraca mi tylko ostatnią znaną wartość
jak przez submit zapisać do zmiennych tylko te zmienne, które będą checked ?
chodzi tutaj o sprawdzenie obecności
jeżeli coś będzie odznaczone to znaczy, że go nie ma na zajęciach
domyślnie są zaznaczone
np. żeby wynik był taki:
1 - 1
2 - 1
3 - 1
4 - 0
5 - 1
...
gdzie
1 - obecny
0 - nieobecny
Cienki1980
Spróbuj może tak :
  1. <input type=checkbox checked=checked name=xxxx[$id] value=$id>


W wyniku dostaniesz tablicę z taką ilością elementów ile masz wierszy.
Immanuel
  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. <LINK href="style.css" type=text/css rel=StyleSheet>
  6. <TITLE>Nowa Lekcja</TITLE>
  7. </HEAD>
  8. <BODY>
  9. <? 
  10.  
  11.  
  12. $id_nauczyciel=$_POST['xxxx'];
  13.  
  14.  
  15. $db = new mysqli ('localhost'.'dziennik'.'ocena_obecnosc');
  16.  
  17.  
  18. if (mysqli_connect_errno())
  19. {
  20.  
  21. echo 'Błąd: połączenie z bazą danych nie powiodło się.';
  22. }
  23.  
  24. $zapytanie = "INSERT INTO ocena_obecnosc values ('','$id_nauczyciel')";
  25.  
  26.  
  27. $wynik = $db->query($zapytanie);
  28. if ($wynik)
  29. echo $db->affected_rows . 'Informacja dodana do bazy.';
  30.  
  31.  
  32. ?>
  33.  
  34. </BODY>
  35. </HTML>


Fatal error: Class 'mysqli' not found in c:\usr\apache\httpd\html\dziennik\nauczyciel_nowa_lekcja1.php on line 15

o co biega ?
mike
Biblioteka MySQL Improved Extension nie jest standardowo instalowana do php.
Zainstaluj sobie lub jeśli masz serwer u kogoś to poproś admina.
Immanuel
  1. <?php
  2. $id_nauczyciel=$_POST['wybor_nauczyciela'];
  3. echo "$id_nauczyciel";
  4. $id_klasa=$_POST['wybor_klasy'];
  5. echo "<br>" . "$id_klasa";
  6. $temat=$_POST['temat'];
  7. echo "<br>" . "$temat";
  8. $data=$_POST['data'];
  9. echo "<br>" . "$data";
  10. $notatki=$_POST['notatki'];
  11. echo "<br>" . "$notatki";
  12.  
  13.  
  14. mysql_connect ("localhost", "root", "krasnal") or 
  15. die ("Nie można połączyć się z MySQL");
  16. mysql_select_db ("dziennik") or 
  17. die ("Nie można połączyć się z bazą.");
  18.  
  19. $sql_zap = mysql_query ("INSERT INTO lekcja
  20. (id,id_nauczyciel,id_przedmiot,id_klasa,data,temat,notatki)
  21. values
  22. ('','$id_nauczyciel','$id_nauczyciel','$id_klasa','$data','$temat','$notatki')")
  23. or die ("bład w pytaniu sprawdz.php");
  24. ?>


dlaczego wyskakuje:
Kod
bład w pytaniu sprawdz.php


?

Dodam tylko, że na początku specjalnie wypisałem zmienne, żeby sprawdzić, czy wszystko zostało poprawnie odczytane z bazy.
Cienki1980
Wyświetl zapytanie i zobacz czy w zapytaniu wszystko jest OK.
Immanuel
  1. <?php
  2. $row = mysql_fetch_array($sql_zap);
  3. echo '<pre>';
  4. print_r($row);
  5. echo '</pre>';
  6. ?>


nic się nie wyświetla
Cienki1980
Zapytanie ... czyli $sql_zap a nie wynik tego zapytania dry.gif
Immanuel
Kod
INSERT INTO lekcja(id, id_nauczyciel, id_przedmiot, id_klasa, data, temat, notatki)
                       VALUES ('', '7', '7', '4', '21-01-2007', 'Obliczanie ułamków.', 'Dokończyć mnożenie ułamków.')


Takie coś się wyświetla.
maryaan
zamiast "or die("blad blablabla")" daj "or die(mysql_error());"
tematy przyklejone naprawde nie sa tylko po to zeby zajmowaly miejsce na forum :]
mike
~Immanuel już napisano Ci kilka razy: zajrzyj do wątku o najczęstszych błędach i zacznij stosować to co jest tam napisane.

Nie chcesz, trudno.
My nie będziemy w kółko powtarzać tego samego.

Zamykam
Może to wreszcie Cię do czegoś zmusi.
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.