Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Formularz z dodawaniem nowych rekordów do bazy danych MySQL
Forum PHP.pl > Forum > Przedszkole
brzanek
Witam mam taki formularz
  1. echo"<div style='400px;float:left;'><form method='post' action='".FUSION_SELF.$aidlink."'><table>";
  2.  
  3. for($i=0;$i<21;$i++){
  4. $dbget=dbarray(dbquery("SELECT * FROM ".DB_PREFIX."mapa WHERE punkt='".$i."' ORDER BY id DESC LIMIT 1"));
  5. echo"<tr><td><label style='margin-right:20px;'>".$map['map_'.($i+1).'']."</label> </td>
  6. <td><select class='form-control' name='map_color_".$i."' style='margin-right:10px;'>
  7. <option value='0' "; if($dbget['color']=='0'){echo" SELECTED ";} echo">Brak</option>
  8. <option value='1'"; if($dbget['color']=='1'){echo" SELECTED ";} echo">Burza</option>
  9. <option value='2'"; if($dbget['color']=='2'){echo" SELECTED ";} echo">Wiatr</option>
  10. <option value='3'"; if($dbget['color']=='3'){echo" SELECTED ";} echo">Opady</option>
  11. <option value='4'"; if($dbget['color']=='4'){echo" SELECTED ";} echo">Upał</option>
  12. <option value='5'"; if($dbget['color']=='5'){echo" SELECTED ";} echo">Mróz</option>
  13. <option value='6'"; if($dbget['color']=='6'){echo" SELECTED ";} echo">Trąba</option>
  14. <option value='7'"; if($dbget['color']=='7'){echo" SELECTED ";} echo">Mgła</option>
  15. </select></td>";
  16. echo" <td><select class='form-control' name='map_opac_".$i."'>
  17. <option value='1' "; if($dbget['stopien']=='1'){echo" SELECTED ";} echo">I stopień</option>
  18. <option value='2'"; if($dbget['stopien']=='2'){echo" SELECTED ";} echo">II stopień</option>
  19. <option value='3'"; if($dbget['stopien']=='3'){echo" SELECTED ";} echo">III stopień</option>
  20. </select></td>";
  21.  
  22. $text=array(
  23. $dbget['color']=='1' AND $dbget['stopien']=='1' => 'Możliwe umiarkowane burze z silnym wiatrem do 90 km/h ulewnym deszczem do 20 l/m2 lub gradem o średnicy do 3cm.',
  24. $dbget['color']=='1' AND $dbget['stopien']=='2' => 'Możliwe umiarkowane burze z silnym wiatrem do 110 km/h ulewnym deszczem do 30 l/m2 lub gradem o średnicy do 5cm.',
  25. );
  26.  
  27. echo"<td><input class='form-control' type='text' name='info_".$i."' value='".$text."' style='width:350px; hight:200px;'/></td></tr>";
  28. }
  29.  
  30. echo"</table><br /><br /><input type='submit' name='save' value='Zmień'/></form></div>";


Jak widać ostatni parametr 'info_".$i."' jest związany z tablicą array ta z kolei ma dwa warunki, które pobierane są z wcześniejszych danych. Do bazy jako trzeci parametr trafia tylko słowo array a nie Możliwe umiarkowane burze z silnym wiatrem do 90 km/h ulewnym deszczem do 20 l/m2 lub gradem o średnicy do 3cm.
Gdzie jest popełniony błąd?
W skrócie chcę aby do jednego pola w bazie danych trafiało odpowiednie zdanie związane z wcześniejszymi parametrami.
trueblue
Bo zmienna text to array, którą budujesz w linii 22.
brzanek
No tak ale dlaczego?
Jak zrobić aby był wyświetlany odpowiedni tekst?
Tomplus
@Brzanek
Masz do użycia dwie wartości albo $text[0], albo $text[1]
Zależności który warunek zostanie spełniony.

możesz użyć zamiast $text:

  1. isset($text[0])?$text[0]:$text[1];


brzanek
Jak to konkretnie użyć?
Próbowałem tak
  1. isset($text[0])?$text[0]:$text[1](
  2. $dbget['color']=='1' AND $dbget['stopien']=='1' => 'Możliwe umiarkowane burze z silnym wiatrem do 90 km/h ulewnym deszczem do 20 l/m2 lub gradem o średnicy do 3cm.',
  3. $dbget['color']=='1' AND $dbget['stopien']=='2' => 'Możliwe umiarkowane burze z silnym wiatrem do 110 km/h ulewnym deszczem do 30 l/m2 lub gradem o średnicy do 5cm.',
  4. );
  5.  
  6. echo"<td><input class='form-control' type='text' name='info_".$i."' value='".$text[0]."' style='width:350px; hight:200px;'/></td></tr>";
  7.  

ale nie działa.
Tomplus
isset($text[0])?$text[0]:$text[1] miałeś wsadzić w tekst, w string echo.

  1. echo"<td><input class='form-control' type='text' name='info_".$i."' value='".isset($text[1])?$text[1]:$text[0]."' style='width:350px; hight:200px;'/></td></tr>";


W ogóle ty wiesz co stworzyłeś w tablicy $text?
jako klucze utworzyłeś warunki. Więc może warto przeanalizować sobie samemu, krok po kroku jak skrypt działa, a przy okazji zwiększyć czytelność.

np skrócić sobie kod do tej postaci, zamiast używać IF, a wynik taki sam.
  1. <option value='1' ". ( ($dbget['stopien'] == 1)?'selected':'' ) .">I stopień</option>
brzanek
Dzięki za skrócenie kodu.
Co do mojego kodu to właśnie chodzi o to aby do bazy danych dodawany był tekst jeśli zostaną spełnione na raz dwa warunki.
Może faktycznie nie powinno być to w takiej formie zapisane dlatego pytam na forum jak to zrobić aby było dobrze.
Tomplus
Rozwiązać możesz to na różne sposoby np.:

  1. if($dbget['color'] == 1) {
  2. switch($dbget['stopien']) {
  3. case 1: $text = "Możliwe umiarkowane burze z silnym wiatrem do 90 km/h ulewnym deszczem do 20 l/m2 lub gradem o średnicy do 3cm."; break;
  4. case 2: $text = "Możliwe umiarkowane burze z silnym wiatrem do 110 km/h ulewnym deszczem do 30 l/m2 lub gradem o średnicy do 5cm."; break;
  5. default: $text = "Będzie spokojnie."; break;
  6. }
  7. }
  8. echo"<td><input class='form-control' type='text' name='info_".$i."' value='".$text."' style='width:350px; hight:200px;'/></td></tr>";
brzanek
Prawie działa tylko szkoda, że aby zapisane były dane w bazie danych muszę dwa razy przejść przez formularz.
Widzę, że dodałeś jeszcze jedną opcję Będzie spokojnie tylko ana wcale nie wyświetla się. Rozumiem że powinna kiedy nie spełnione są te warunki?
Ta dodatkowa opcja nie jest mi potrzebna ale dzięki za pomoc szkoda tylko że trzeba dwa razy przechodzić ten formularz. Może jest jakieś inne wyjście z tego?

Rozumiem, że nie ma innego wyjścia jak dwukrotne zatwierdzanie formularza aby odpowiednie dane były zapisane w bazie MySQL.
Może ktoś ma inne rozwiązanie tego problemu.
Najważniejsze jest to aby po wybraniu odpowiedniej kategorii oraz podkategorii automatycznie dodawany był odpowiedni tekst.
kategoria (1) podkategoria (a) tekst (tekst1)
kategoria (2) podkategoria (a) tekst (tekst2)
kategoria (1) podkategoria (d) tekst (tekst3)
...
Kategoria i podkategoria wybierana jest za pomocą formularza a odpowiedni tekst ma być generowany automatycznie.
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.