Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Sonda
Forum PHP.pl > Forum > Przedszkole
Lee
Robię sondę i mam problem z bazą danych, formularz od dodawania sondy wygląda tak

  1. <?php
  2. <form action="administracja.php?mod=sondy" method="post">
  3. <table cellspacing="0" cellpadding="0" align="center" border="0">
  4. <tr><td class="text_02" align="right"><b>Pytanie:</b></td><td><input type="text" name="pytanie" size="30"></td></tr>';
  5. $i = 0;
  6. for($i;$i<=9;$i++){
  7. echo '<tr><td class="text_02" align="right"><b>Odpowiedź '.$i.':</b></td><td><input type="text" name="odpowiedz['.$i.']" size="30"></td></tr>';
  8. }
  9. echo '
  10. <tr><td><input type="hidden" name="rozpoczeta" value="'.$data.'"></td></tr>
  11. <tr><td colspan=2" align="center"><input type="submit" name="dodaj" value="Dodaj">&nbsp;<input type="reset" name="reset" value="Wyczyść"></td></tr>
  12. </table>
  13. </forum>
  14. ?>
odpowiedzi wiem jak dodać do tabeli (sonda_odp)
  1. <?php
  2. $pytanie = $_POST['pytanie'];
  3. $rozpoczeta = $_POST['rozpoczeta'];
  4. $odpowiedz[] = $_POST['odpowiedz'];
  5. foreach ($odpowiedz as $odp){
  6. $wykonaj = ("INSERT INTO $tbl_sondy_odp (id, pytanie, 
  7. odp_1='$odp[0]', 
  8. odp_2='$odp[1]', 
  9. odp_3='$odp[2]', 
  10. odp_4='$odp[3]', 
  11. odp_5='$odp[4]', 
  12. odp_6='$odp[5]', 
  13. odp_7='$odp[6]', 
  14. odp_8='$odp[7]', 
  15. odp_9='$odp[8]', 
  16. odp_10='$odp[9]', 
  17. '$rozpoaczeta'");
  18. }
  19. ?>

ale nie wiem jak zrobić, żeby do tabeli z pytaniami w kolumnie zawierającą ilośc pytań danej sondy wpisywało sumę pół (odpowiedzi) które nie są puste. Chodzi mi o warunek
  1. <?php
  2. $wykonaj = mysql_query("SELECT * FROM $tbl_sondy_odpowiedzi WHERE....// no włąsnie co ?
  3. ?>


pozdrawiam
kossa
Przyznam się, że zbytnio nie rozumiem Twojego pytania... :-)

Podaj może strukturę tabeli i dokładnie wyjaśnij o co chodzi.

A co do zapytania SQL to może IS NOT NULL przyda się Tobie, a sumować możesz w SQL funkcją SUM(kolumna)

np.
Kod
select sum(odp) from odpowiedzi where odp is not null



http://dev.mysql.com/doc/refman/5.1/en/create-view.html

patrz: Aggregate functions (SUM(), MIN(), MAX(), COUNT(), and so forth)

Pozdrawiam,
Łukasz
Lee
o właśnie o to mi chodziło, ciągle o tym IS NOT NULL zapominam :/

btw. dopiero zauważyłem, że w kodzie jest błąd haha.gif
  1. <?php
  2. $wykonaj = ("INSERT INTO $tbl_sondy_odp (id, pytanie, 
  3. odp_1='$odp[0]', 
  4. odp_2='$odp[1]', 
  5. odp_3='$odp[2]', 
  6. odp_4='$odp[3]', 
  7. odp_5='$odp[4]', 
  8. odp_6='$odp[5]', 
  9. odp_7='$odp[6]', 
  10. odp_8='$odp[7]', 
  11. odp_9='$odp[8]', 
  12. odp_10='$odp[9]', 
  13. '$rozpoaczeta'");
  14. ?>

nie działa 8)
kossa
Wydaje mi się, że masz błąd w zapytaniu SQL.

http://dev.mysql.com/doc/refman/5.1/en/insert.html

Cytat
$wykonaj = ("INSERT INTO $tbl_sondy_odp (id, pytanie,
odp_1='$odp[0]',
odp_2='$odp[1]',
odp_3='$odp[2]',
odp_4='$odp[3]',
odp_5='$odp[4]',
odp_6='$odp[5]',
odp_7='$odp[6]',
odp_8='$odp[7]',
odp_9='$odp[8]',
odp_10='$odp[9]',
'$rozpoaczeta'");


To co napisałeś jest mieszkanką insert i update :-)

  1. INSERT INTO tabela (id,pytanie,odp1,odp2,...) VALUES ('$id','$pyt','$odp1','$odp2',...)


Łukasz
Lee
własnie nie wiem co mnie napadło, że to skonstruowałem :| chyba ten upał mi na głowe źle działa

Pzdr dzięki za poprawkę winksmiley.jpg
kossa
Tak, ten upał i na mnie źle wpływa, ale nie można się poddawać :-)

Powodzenia!
Łukasz
Lee
Hmm nie zauważyłem wcześniej

Ty mi podałeś zapytanie dla jednej kolumny (odpowiedzi) bo ja tak skonstrułowałem pytanie. Mam tabele taka
ID | Pytanie | Odp_1 | Odp_2 | Odp_3 | ... | Odp 10 |
i teraz
1 | Co słychać | Dobrze | Źle | | ... | |

chodzi mi o to, że mam kazda odpowiedzź dla pytania w osobnej kolumnie oraz tam gdzie nie ma odpowiedzi pole jest puste ale to można ominać robiąc IS NOT NULL tylko jak to będzie wygladać ?

  1. SELECT sum(odp_1, odp_2, odp_3, ..., odp_10) FROM odpowiedzi WHERE...

co ma być po WHERE i czy dobrze kombinuje rolleyes.gif
Kicok
Tak tego nie zrobisz. Funkcje typu SUM() czy COUNT() zliczają wiersze. A z tego co widzę, to ty chcesz policzyć kolumny.

Pobierz cały wiersz i w php policz sobie niepuste pola jakąś pętlą.



A jeśli koniecznie chcesz to zrobić w SQL'u, to rozbij tą tabelę na dwie:
1 Pytania
Kod
|  ID_pytania  |  Tresc_pytania  |
|--------------|-----------------|
|      1       |    blablabla    |
|      2       |    blebleble    |
(...)


2 Odpowiedzi
Kod
|  ID_odpowiedzi  |  ID_pytania  |  Tresc_odpowiedzi  |
|-----------------|--------------|--------------------|
|        1        |       1      |        TAK         |
|        2        |       1      |        NIE         |
|        3        |       1      |      NIE WIEM      |
|        4        |       2      |        TAK         |
(...)


W tedy będzie ci prościej zrobić to w SQL'u
Turgon
Ja znalazłem w kodzie jeszcze jeden błąd:
  1. <?php
  2. '$rozpoaczeta'
  3. ?>

Powinno być:
  1. <?php
  2. '$rozpoczeta'
  3. ?>

gdyż wcześniej :
  1. <?php
  2. $rozpoczeta = $_POST['rozpoczeta'];
  3. ?>
dawhol
  1. <?php
  2. $rozpoczeta = $_POST['rozpoczeta'];
  3. ?>
po co pobierac taka zmienna jezeli jest to data bynajmniej tak wynika z formularza lepiej daj zmienna
  1. <?php
  2. $rozpoczeta = date('Y-m-d H:i:s');
  3. ?>
w pliku wykonawczym sondy (tym który dodaje sonde do bazy) a wiec administracja.php

wtedy nie bedziesz potrzebowal ukrywac zadnego pola i kod bedzie kródszy i estetyczniejszy smile.gif
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.