Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php mysql] wyswietlanie tabli w przegladarce
jjerry
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 1.08.2006

Ostrzeżenie: (0%)
-----


witam, jako ze jestem bardzo poczatkujacy moje pytanie pewnie wyda sie wam glupi i mimo iz ja mecze sie juz 2 dni nie moge sobie poradzic, w zwiazku z tym prosze o pomoc:

oto kod dodawania ksiazki do bazy magazyn (oczywiscie tabela i baza istnieje)
a przedstawione skrypty sa w 1 pliku

  1. <form action="dodaj.php" method="post">
  2. <tr><td>tytul</td><td> <input type="text" name="tytul" /> </td></tr>
  3. <tr><td>autor</td><td> <input type="text" name="autor" /> </td></tr>
  4. <tr><td>ilosc</td><td> <input type="text" name="ilosc" /> </td></tr>
  5. <tr><td></td><td> <input type="submit" value="dodaj" /> </td></tr>
  6. </table>
  7. </form>
  8. <hr />

  1. <?php
  2. $laczenie = mysql_connect('127.0.0.1','root','krasnal');
  3. $wybierz = mysql_query("use magazyn");
  4. $tworz = "create table ksiazki (id int unsigned not null auto_increment, tytul varchar(24) not null, autor varchar(24) not null, ilosc int not null, primary key (id))";
  5. $dodaj = ("insert into ksiazki values('0', '$_POST[tytul]','$_POST[autor]','$_POST[ilosc]')");
  6.  
  7.  
  8. if ($laczenie && $wybierz) {
  9. echo 'polaczyles sie z baza <br />';
  10. if (mysql_query($tworz)) {
  11. echo 'tabela stworzona';
  12. } else {
  13. echo 'tabela nie stworzona '.mysql_error();
  14. if ($_POST[tytul] <> NULL && $_POST[autor] <> NULL && $_POST[ilosc] > 0) {
  15. mysql_query($dodaj); # PROBELM WYSTEPUJE TUTAJ
  16. echo '<br />dodano rekord';
  17. } 
  18. }
  19. } else {
  20. echo 'brak polaczenia <br />';
  21. }
  22.  
  23.  
  24.  
  25. ?>

chodzi mi o to zeby w 15 linijce przed zapytaniem mysql wprowadzic instrukcje if zeby sprawdzala czy dana ksiazka jest juz w magazynie a jesli tak zeby jej nie dodawala, i aby po kazdorazowym dodaniu ksiazki wyswietlony zostal stan magazynu, probowalem select * from ksiazki ale jakos nie moge sobie poradzic, przypominam ze jestem poczatkujacy wiec bede wdzieczny za objasnienia,
z gory dzieki

Ten post edytował jjerry 7.08.2006, 12:30:54
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
MagnuM
post
Post #2





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 7.05.2004
Skąd: Jelenia Góra

Ostrzeżenie: (0%)
-----


A Wam wszystkim ciężko opisać problem, tylko z błota w bagno kolege wprowadzacie?

Więc może ja spróbuje pomóc. Opiszmy więc problem.
  1. <?php
  2. $laczenie = mysql_connect('127.0.0.1','root','krasnal');
  3. $wybierz = mysql_query("use magazyn");
  4. $tworz = "create table ksiazki (id int unsigned not null auto_increment, tytul 
  5. varchar(24) not null, autor varchar(24) not null, ilosc int not null, primary key (id))";
  6. $dodaj = ("insert into ksiazki values('0', '$_POST[tytul]','$_POST[autor]','$_POST[ilosc]')");
  7.  
  8. if ($laczenie && $wybierz) {
  9. echo 'polaczyles sie z baza <br />';
  10. if (mysql_query($tworz)) {
  11. echo 'tabela stworzona';
  12. } else {
  13. echo 'tabela nie stworzona '.mysql_error();
  14. if ($_POST[tytul] <> NULL && $_POST[autor] <> NULL && $_POST[ilosc] > 0) {
  15. mysql_query($dodaj); # PROBELM WYSTEPUJE TUTAJ
  16. echo '<br />dodano rekord';
  17. } 
  18. }
  19. } else {
  20. echo 'brak polaczenia <br />';
  21. }
  22. ?>

Do linijki 2 jest dobrze, a w niej:
  1. <?php
  2. mysql_query("use magazyn");
  3. ?>

Jeżeli nie korzystasz z mysql w formie okienkowej, tylko łączysz się za pomocą standardowych funkcji w php, to polecenie wygląda nieco inaczej:
  1. <?php
  2. $wybierz = mysql_select_db('magazyn');
  3. ?>

Linia nr. 3. Niby wszystko ok, ale zapewne jesteś nastawiony na przyjmowanie tego typu zgłoszeń, czyli książek, więc śmiało możesz ręcznie (poprzez np. phpMyAdmin'a) wstawić tabelę do bazy danych aby nie przejmować się tym później w skrypcie. Możesz śmiało wyrzucić tę linijkę.

Linia nr. 5. Zapytanie możesz śmiało zadeklarować w momencie w którym będzie ono potrzebne więc linijka jest do przeniesienia.

Przechodzimy do if'a. Dobrze jest sprawdzana pierwsze zmienna, czyli '$laczenie', druga zaś, tak jak wcześniej wspomniałem, jest zbędna.

Przejdźmy do pierwszego zagnieżdzonego if'a:
  1. <?php
  2. if (mysql_query($tworz))
  3. ?>

- to zapytanie spróbuje utworzyć tabelę w bazie danych, co wywoła niepotrzebnie zapytanie, to już omawialiśmy.

Dalej:
  1. <?php
  2. if ($_POST[tytul] <> NULL && $_POST[autor] <> NULL && $_POST[ilosc] > 0)
  3. ?>

Jeżeli chodzi o tablice asocjacyjne to należy nazwy pól ujmować w apostrofy lub cudzysowy, czyli ilustrując przykładem:
  1. <?php
  2. $_POST['tytul'] // a nie $_POST[tytul]
  3. ?>
.
I tutaj w tym miejscu należy wykonać zapytanie. Nie jest koneiczne najpierw umieszczanie treści zapytania w zmiennej a później deklarowanie w funkcji mysql_query(), bo to niepotrzebne zajmowanie pamięci.
Czyli teraz deklarujemy zapytanie:
  1. <?php
  2. $zapytanie = mysql_query("INSERT INTO ksiazki VALUES('". $_POST['tytul'] ."', '". $_POST['autor'] ."', '". $_POST['ilosc'] ."') ");
  3. ?>

W tym miejscu zanim wypiszemy treść: 'dodano rekord', przydałoby się sprawdzić czy zapytanie zostało poprawnie wykonane. Pomoże nam w tym zmienna $zapytanie, do której 'wrzucony' został efekt wykonywania zapytania.
  1. <?php
  2. if ( $zapytanie )
  3. {
  4. echo 'dodano rekord <br />';
  5. }
  6. ?>

Ok więc omówinie skryptu chyba zakończone. Przejdźmy do dalszych pytań.
Cytat
chodzi mi o to zeby w 15 linijce przed zapytaniem mysql wprowadzic instrukcje if zeby sprawdzala czy dana ksiazka jest juz w magazynie a jesli tak zeby jej nie dodawala

Powinniśmy więc zaraz za sprawdzenie połączenia wywołać zapytanie które sprawdzi czy istnieje dana książka w bazie danych. Nie mamy tutaj neistety zabardzo jak zidentyfikować książki, np. po identyfikatorze ISBN, więc posłużymy się tytułem.
  1. <?php
  2. $zapytanie = mysql_query("SELECT tytul FROM ksiazki WHERE tytul = '". $_POST['tytul'] ."' ");
  3. $rows = mysql_num_rows( $zapytanie ); // zmienna $tablica zawiera dane dotyczace ilosci rekordow z tytulem podanym w for
    mularzu
  4. // pozostaje sprawdzic czy liczba jest wieksza od 0
  5. if ( $rows > 0 )
  6. {
  7. echo 'książka o podanym tytule znajduje się już w bazie danych';
  8. } else
  9. {
  10. // dalsza część skryptu związana z dodaniem książki do bazy
  11. }
  12. ?>

Cytat
aby po kazdorazowym dodaniu ksiazki wyswietlony zostal stan magazynu

Więc zaraz za funkcją dodającą książkę należy wyświetlić stan:
  1. <?php
  2. $zapytanie = mysql_query("SELECT * FROM ksiazki"); // brak klauzuli WHERE oznacza że pobrane zostan szystkie rekordy z tabeli
  3. while( $tablica = mysql_fetch_assoc( $zapytanie ) )
  4. {
  5. echo 'ID: '. $tablica['id'] .' tytuł '. $tablica['id'] .'<br />';
  6. }
  7. ?>


Ok. Troszkę namotałem więc przedstawię jak to powinno wyglądać w caej okazałości.
  1. <?php
  2. $laczenie = mysql_connect('127.0.0.1','root','krasnal');
  3. $wybierz = mysql_select_db('magazyn');
  4. if ( $laczenie && $wybierz )
  5. {
  6. echo 'polaczyles sie z baza <br />';
  7.  
  8. $zapytanie = mysql_query("SELECT tytul FROM ksiazki WHERE tytul = '". 
  9.  
  10. $_POST['tytul'] ."' ");
  11. $rows = mysql_num_rows( $zapytanie ); // zmienna $tablica zawiera dane dotyczace 
  12.  
  13. ilosci rekordow z tytulem podanym w formularzu
  14.  // pozostaje sprawdzic czy liczba jest wieksza od 0
  15. if ( $rows > 0 )
  16. {
  17. echo 'książka o podanym tytule znajduje się już w bazie danych';
  18. } else
  19. {
  20.  
  21. if ( $_POST['tytul'] <> NULL && $_POST['autor'] <> NULL )
  22. {
  23. $zapytanie = mysql_query("INSERT INTO ksiazki VALUES('". $_POST['tytul'] 
  24.  
  25. ."', '". $_POST['autor'] ."', '". $_POST['ilosc'] ."') ");
  26. if ( $zapytanie )
  27. {
  28. echo 'dodano rekord <br />';
  29.  
  30. $zapytanie = mysql_query("SELECT * FROM ksiazki"); // brak klauzuli 
  31.  
  32. WHERE oznacza &#380;e pobrane zostan szystkie rekordy z tabeli
  33. while( $tablica = mysql_fetch_assoc( $zapytanie ) )
  34. {
  35.  echo 'ID: '. $tablica['id'] .' tytuł '. $tablica['id'] .'<br />';
  36. }
  37. }
  38. }
  39. }
  40. } else
  41. {
  42. echo 'brak polaczenia <br />';
  43. }
  44. ?>


Uff... chyba wszystko jest ok

EDIT: oops, zapomnialem o wybraniu bazy, omg - juz dodałem do tego ostatniego kodu

Ten post edytował MagnuM 7.08.2006, 14:00:54
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 21:04