Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Formularze
Forum PHP.pl > Forum > Przedszkole
Sampo511
Witam wszystkich

Mam następujący problem:

istnieje sobie formularz z jednym z polem typu "Lista rozwijalna"
oraz np. 3 pola typu tekstowego które są domyslnie zablokowane

teraz jesli z listy wybiorę jakąś wartość np. 2 to powinny się odblokować 2 pola teksowe a pozostałe 1 powinno pozostać zablokowane

problem wtym jak odblokować te pola teksowe

Prosze o jakieś sugestie

Pozdrawiam
UDAT
Twoje pytanie bardziej niż PHP dotyczy JavaScriptu.
Sampo511
Jestem we wstępnej fazie nauki ale chciałem to zrobić w PHP
phpion
PHP zrobisz to tylko z przeładowaniem strony więc zdecydowanie lepiej użyć do tego JS.
Sampo511
postanowiłem to zrobić w PHP z tym ze mam następujący problem
mam trzy pliki i następujący problem nie mogę odczytać zmiennej $IPW oraz $tyt_ank w trzecim pliku ankiety.php
prośze o jakąś sugestię z góry dzięki

pierwszy - panel_adm.php

Kod
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">
<title>PANEL ADMINISTRACYJNY</title>
</head>

<body>
<?php
       print '<CENTER>';
       print "<b>PANEL ADMINISTRACYJNY</b>


";
       print '<FORM ACTION="panel_adm1.php" METHOD="POST">';
     print "Tytuł ANKIETY:  ";
       print '<TABLE><input type="text" name="tyt_ank" size="30" maxlenght="50"/>

';
       print "Ile pól wyboru:  ";

       print '<SELECT name="IPW">';
             print '<OPTION value=0></OPTION>';
             print '<OPTION value=2>dwa pola</OPTION>';
             print '<OPTION value=3>trzy pola</OPTION>';
             print '<OPTION value=4>cztery pola</OPTION>';
             print '<OPTION value=5>pięć pól</OPTION>';
             print '<OPTION value=6>sześć pól</OPTION>';
             print '<OPTION value=7>siedem pól</OPTION>';
             print '<OPTION value=8>osiem pól</OPTION>';
             print '<OPTION value=9>dziewięć pól</OPTION>';
             print '<OPTION value=10>dziesięć pól</OPTION>';
       print '</SELECT>

';
       print '</TABLE>';

       print '<INPUT TYPE="submit" VALUE="Zatwierdź"></P>';
       print '</FORM></center>';

  ?>
</body>
</html>



drugi - panel_adm1.php

<?php

Kod
     print_r($_POST);
      if(($_POST['tyt_ank']=='')or($_POST['IPW']==0)){
      print "<CENTER><b>Nie wpisano tytułu ANKIETY LUB nie wybrano PÓL</b>

</CENTER>";
      require ('panel_adm.php');
      }
      else{

           print "<CENTER><b>PANEL ADMINISTRACYJNY</b>


";
           print '<FORM ACTION="ankiety.php" METHOD="POST">';
           print "Tytuł ANKIETY:  " .'<b>'. $_POST['tyt_ank'] . '</b>

';
           print "Wybrano pól:  " . '<b>'.$_POST['IPW'].'</b>

';
           print "Nazwa pola ANKIETY:  

";

           for($i=1; $i<=$IPW; $i++){
           print $i . "pole: ";
           print '<INPUT TYPE="text" name="opis".$i>

';
           }

       print '<INPUT TYPE="submit" VALUE="Twórz ANKIETĘ"></P>';
       print '</FORM></CENTER>';

       }
?>



i trzeci (we wstępnej wersji) ankiety.php

Kod
<?php
      // print_r($_POST);

       for($a=1; $a<=$IPW; $a++){
       print '<TABLE><input type="radio" name="opis" value="pole".$a>IPW

';
       }

       print '<INPUT TYPE="submit" VALUE="Twórz ANKIETĘ"></P>';
       print '</FORM></CENTER>';

?>
Hazel
Na samym początku drugiego pliku dodaj na przykład kod:
  1. <?php
  2. foreach ($_POST as $klucz => $wartosc)
  3. {
  4. $_SESSION[$klucz] = $wartosc;
  5. }
  6. ?>


Kod ten umieść na samym poczatku drugiego pliku, inaczej nie będzie działać.
No a w trzecim pliku odwołujesz się do tych zmiennych za pomocą:
  1. <?php
  2. $_SESSION['IPW']
  3. $_SESSION['tyt_ank']
  4. ?>
PanGuzol
Do formularza w drugim pliku dodaj

  1. <?php
  2. print "<input type='hidden' name='tyt_ank' value='".$_POST['tyt_ank']."'>";
  3. print "<input type='hidden' name=' IPW' value='".$_POST['IPW']."'>';
  4. ?>
Sampo511
Dzięki wielkie PanGuzol

Działa. Takie to było proste.
-Sampo511-
Witam pojawił się inny problem a mianowicie nie mogę utworzyć tabeli w bazie danych z kolumnami których nazwy znajdują się w tablicy $_POST['opis'], są to dane tekstowe z pól tekstowych, których jest tyle ile się wybierz np.2 ale może też być to 10 pól (nie m stałej ilości tych pól)

Proszę o jakąś pomoc
Pozdrawiam


PHP MySQL
Kod
$d=$_POST['IPW'];
    
$sql = mysql_connect("localhost", "root", "") or
      die ("Sprawd połączenie z serwerem.");

      $create = mysql_query("CREATE DATABASE IF NOT EXISTS ankiety")
      or die(mysql_error());

      $db=mysql_select_db("ankiety")
      or die (mysql_error());



  [color="#FF0000"]  [b] $TA = "CREATE TABLE ".$_POST['tyt_ank']."";
     $results = mysql_query($TA)
     or die (mysql_error());
     print "Poprawnie utworzono tabę";
    
     for($a=0; $a<=$d; $a++){
     $add="ALTER TABLE ankiety.".$_POST['tyt_ank']."
           ADD COLUMN (".$_POST['opis'][$a]." varchar(255) NOT NULL UNIQUE default 0)";
           }[/b][/color]
      
     $results = mysql_query($add)
     or die (mysql_error());

     print "Poprawnie dodano kolumny z danymi";
            
      print '<CENTER><FORM ACTION="strona.php" METHOD="POST">';
    print "Tytuł ANKIETY:  " .'<b>'. $tyt_ank . '</b><br><br>';
    

            for($a=0; $a<=$d; $a++){
            print '<TABLE>';
            print '<input type="radio" name="ankieta" value="pole[]">'."$opis[$a]".'<br><br>';
            print '</TABLE>';

                  }
Sampo511
Chodzi o to, że baza się tworzy z tym, że wtym przypadku nie tworzy mi wszystich kolumn w bazie (ich nazw)
PanGuzol
W pętli wyświetlającej formularz z opisami dałeś apostrofy
  1. <?php
  2. for($i=1; $i<=$IPW; $i++){
  3.  print $i . "pole: ";
  4.  print '<INPUT TYPE="text" name="opis".$i>
  5.  
  6. ';
  7.  }
  8. ?>

więc twoje pola wyglądają
  1. <INPUT TYPE="text" name="opis".$i>

Zamień je na cudzysłowy
  1. <?php
  2. for($i=1; $i<=$IPW; $i++){
  3.  print $i . "pole: ";
  4.  print "<INPUT TYPE='text' name='opis'".$i.">";
  5.  }
  6. ?>
Sampo511
Witam PanieGuzol niestety to nie dział u mnie a pozatym musiałem zmienić trochę pętle wyświetlająca formularz bo wyswietlały mi się tylko pierwsze literki wyrazów
zmieniony kod:
Kod
<?php
            for($i=1; $i<=$IPW; $i++){
            print $i . " pole: ";
            print '<INPUT TYPE="text" [color="#ff0000"]name="opis[]"[/color]><br><br>';
            print '</TABLE>';
            }
              ?>


czy ktoś ma jakieś sugestie jak to zrobić??
Pozdrawiam
-Sampo511-
Witam już sobie sam poradziłem dział tak jak powinno tzn. błąd był w pętli for dodającej kolumny do tabeli w jej zakończeniu - nawias zamykający powinien być za:
$results = mysql_query($add) or die (mysql_error());
}

a nie przed tą komendą (wykonywało się tylko ostatnie dopisanie)

dzięki wszystkim za rady pozdrawiam
Sampo511
Sampo511
Witam mam następujące pytanie dlaczego niedziała mi poniższy kod a dokładniej dlaczego jeśli po utworzneiu ankiety nie wybiorę żadnej odpowiedzi to pojawia się ta ankieta ponownie - i to jest OK - ale jest ona już bez opisów.
jeśli sprawdzę print_r($POST) to mam:
po utworzneiu ankiety:
Array ( [tyt_ank] => restorante [pyt_ank] => jakia to cok [IPW] => 2 [opis] => Array ( [0] => [1] => nie [2] => tak ) )

po tym jak nie wybrałem zadnej odpowiedzi:

Array ( [tyt_ank] => restorante [pyt_ank] => jakia to cok [IPW] => 2 [opis] => Array ( [0] => Array ) )

  1. <?php
  2. //print_r($_POST);
  3.  
  4. $de=$_POST['IPW'];
  5.  
  6. $ileznaleziono=0;
  7. for($g=1; $g<=$de; $g++){
  8. if($_POST['opis'][$g]==''){
  9. $ileznaleziono++;
  10.  }
  11.  }
  12.  if($ileznaleziono!=0){
  13.  print "<CENTER><b>Nie wypełniono wszystkich pól !!!!</b>
  14.  
  15. ";
  16.  require ('panel_adm1.php');
  17.  }
  18. else{
  19. print_r($_POST);
  20. $de=$_POST['IPW'];
  21. print '<CENTER><FORM ACTION="strona.php" METHOD="POST">';
  22. print "<b>SONDA</b>
  23.  
  24.  
  25. ";
  26. //print '<b>'.$_POST['tyt_ank'].'</b>
  27.  
  28. ';
  29. print '<b>'.$_POST['pyt_ank'].'</b>
  30.  
  31. ';
  32. print "<input type='hidden' name='tyt_ank' value='".$_POST['tyt_ank']."'>";
  33. print "<input type='hidden' name='pyt_ank' value='".$_POST['pyt_ank']."'>";
  34. print "<input type='hidden' name='IPW' value='".$_POST['IPW']."'>";
  35. print "<input type='hidden' name='opis[]' value='".$_POST['opis']."'>";
  36.  
  37. for($b=1; $b<=$de; $b++){
  38. print '<TABLE>';
  39. print "<input type='radio' name='ankieta' value='".$_POST['opis'][$b]."'>".$_POST['opis'][$b]."
  40.  
  41. ";
  42. print '</TABLE>';
  43. //print_r($_POST);
  44. }
  45.  
  46. print '<INPUT TYPE="submit" VALUE="Głosuj">';
  47. print '</FORM></CENTER>';
  48. //require ('form.php');
  49.  //form($ankieta,$tyt_ank,$IPW,$opis);
  50.  
  51.  $sql = mysql_connect("localhost", "root", "php5") or
  52. die ("Sprawd połšczenie z serwerem.");
  53.  
  54. //$SQLL=mysql_query('SET CHARSET LATIN2');
  55. $create = mysql_query("CREATE DATABASE IF NOT EXISTS ankiety")
  56. or die(mysql_error());
  57.  
  58. $db=mysql_select_db("ankiety")
  59. or die (mysql_error());
  60.  
  61.  $TA = "CREATE TABLE ".$_POST['tyt_ank']."(";
  62.  for($a=1; $a<=$de; $a++){
  63.  $TA .= "".$_POST['opis][$a]." int(11) NOT NULL default 0 UNIQUE, ";
  64.  }
  65.  $TA = substr( $TA, 0, -);
  66.  $TA .= ")";
  67.  
  68.  $results = mysql_query($TA) or die (mysql_error());
  69.  print "Poprawnie utworzono tabelę
  70. ";
  71.  }
  72. ?>


i drugi kod:
  1. <?php
  2.  
  3. $e=$_POST['IPW'];
  4. //print_r($_POST);
  5.  
  6. if(empty($_POST['ankieta'])){
  7.  print("<B>Nie zaznaczono żadnej odpowiedzi!!! Wybierz ponownie</B>");
  8.  //$ileznaleziono=0;
  9.  require ('form.php');
  10. }
  11.  else{
  12. setcookie('glosowano',"1",time()+60);
  13.  
  14. $sql1 = mysql_connect ("localhost","root","php5")
  15. or die ("Nie można się połączyć");
  16.  
  17. $db1= mysql_select_db("ankiety", $sql1)
  18. or die (mysql_error());
  19.  
  20.  if($glosowano){
  21.  
  22. require('wyniki2.php');
  23. wyniki ();
  24. print("<b>Możesz oddać swój głos tylko raz dziennie!!!!</b>:");
  25. }
  26. else{
  27.  $query1=("UPDATE ".$_POST['tyt_ank']." SET ".$_POST['ankieta']."=".$_POST['ankieta']."+1")
  28.  or die ("błąd w pytaniu UPDATE");
  29.  $result = mysql_query($query1);
  30.  print("Dane zostały dopisane:");
  31.  require('wyniki2.php');
  32.  wyniki ();
  33.  }
  34. mysql_close($sql1);
  35.  
  36. }
  37.  
  38. ?>


jesli ma ktoś jakiś pomysł jak to rozwiązać prosze o radę

Pozdrawiam
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.