• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

$_POST[$zmienne] Tworzenie quizu

VPS Starter Arubacloud
0 głosów
359 wizyt
pytanie zadane 14 lutego 2016 w PHP przez gab123 Mądrala (5,230 p.)

Witam,

ostatnie czasy tworze prosty quiz internetowy za pomocą PHP pytam użytkownika ile chce pytan, potem tworze formularz z informacjami na temat każdego pytania i na koniec wkładam jego odpowiedzi do bazy danych. Mam problem z trzecim krokiem ale nie chodzi tu o to ze zle wpisałam zapytanie, tak wlasciwie to nie wiem o co chodzi ale domyślam się ze problem jest w nazwach('name) inputow w formularzu i znajdowaniu ich metoda post. Tutaj kod :

<!DOCTYPE_HTML>
<html>
<head>
<meta charset = "utf-8" />
<meta http-equiv = "X-UA-Compatible" content = IE=edge,chrome=1" />
</head>
<body>
Twoje kursy : 
<?php
session_start() ;

if(isset($_SESSION['login'])) {
	
	require_once "connect.php" ;
	
	$polaczenie = new mysqli($host, $db_user, $db_password, $db_name ) ;
	
	if ($polaczenie -> connect_errno==0) {
		
			$idk = $_SESSION['idkursu'];
			$idt =$_SESSION['idtworcy'];
			
		if(isset($_POST['ile'])){
			$ipu =$_POST['ipu'];
			$ile = $_POST['ile'] ;
			
			$polaczenie->query("INSERT INTO quizy(idkursu,ipu)VALUES('$idk','$ipu')");
			
			//dodawanie formularza 
			echo '<form method = "post" >' ;
			for($i=1;$i<=$ile;$i++) { 
				echo "Podaj pytanie" . $i . '</br> <input type = "text" name = $i /> </br>' ;
				echo "Podaj odp a na pytanie" . $i . '</br> <input type = "text" name = $i*2 /> </br>' ;
				echo "Podaj odp b na pytanie" . $i . '</br> <input type = "text" name = $i*3 /> </br>' ;
				echo "Podaj odp c na pytanie" . $i . '</br> <input type = "text" name = $i*4 /> </br>' ;
				echo "Podaj odp d na pytanie" . $i . '</br> <input type = "text" name = $i*5 /> </br>' ;
				echo "Podaj poprawna odp na pytanie" . $i . '</br> <input type = "text" name = $i*6 /> </br>' ;
			}
			echo '<input type = "submit" value = "wyslij quiz"' ;
			echo '</form>' ;
			
		}
		
		//wysylanie go 
			if(isset($_POST[1])) {
				for($i=1;$i<=$ile;$i++) { 
				
				$pyt = $_POST[$i] ;
				$a = $_POST[$i*2] ;
				$b = $_POST[$i*3] ;
				$c = $_POST[$i*4] ;
				$d = $_POST[$i*5] ;
				$pop = $_POST[$i*6] ;
				
				$quiz = $polaczenie->query("SELECT id  FROM quizy WHERE idkursu = '$idk'AND ipu = '$ipu')")->fetch_assoc()['id'];
				$polaczenie->query("INSERT INTO pytania(idquizu, pytanie, odpa, odpb,odpc,odp,poprawna) VALUES ('$quiz','$pyt', '$a','$b', '$c', '$d','$pop')") ;
				echo "Udalo sie " ;
				header('Location:kursy.php');
				exit();
			}
			}
}
}
else {
	header('Location:index.php') ;
	exit();
	}
	?>
Utworz kursy 
<form method="post">
	Podaj ilosc pytan  : </br>
	<input type = "text" name = "ile" /> </br>
	Podaj ilosc poprawnych odp. by zdobyc umiejentnosc /
	<input type = "text" name = "ipu" /> </br>
	<input type = "submit" value = "Dodaj lekcje" /> </br>
</form>
<a href = "dodajquiz.php" > Dodaj quiz umiejentnosci </a>
</html>

Nie wiem czy da się dawac name jako zmienna. Ale nie miałam innego pomysłu jak zrobić ten projekt. Ten wydawal się najprostrzy. Jak wiecie jak to zrobić prościej napiszcie.

Jak zrobić by ten kod dzialal ?

Z góry dziekuje.

1 odpowiedź

0 głosów
odpowiedź 14 lutego 2016 przez 0e85dc6eaf Dyskutant (8,840 p.)
wybrane 15 lutego 2016 przez gab123
 
Najlepsza
Powtarzają Ci się nazwy pól formularza z pytaniami. Przy wysyłaniu przyjmujesz tylko 1. pytanie (na końcu pętli masz exit).

Edit. W ogóle masz źle te pola zrobione (mnożenie w apostrofach?)
komentarz 15 lutego 2016 przez gab123 Mądrala (5,230 p.)
edycja 15 lutego 2016 przez gab123

1)A jak to zrobić dobrze ? Jak powinno wygladac mnożenie. Jak to zapisać ?

2)Co do powtarzanie i exit rzeczywiście się pomyliłam zmieniłam kod w trzech miejscach :

	echo '<form method = "post" >' ;
			for($i=1;$i<=$ile;$i++) { 
				echo "Podaj pytanie" . $i . '</br> <input type = "text" name = $i/> </br>' ;
				echo "Podaj odp a na pytanie" . $i . '</br> <input type = "text" name = $i+$ile /> </br>' ;
				echo "Podaj odp b na pytanie" . $i . '</br> <input type = "text" name = $i+$ile+$ile /> </br>' ;
				echo "Podaj odp c na pytanie" . $i . '</br> <input type = "text" name = $i*4+$ile+$ile+$ile /> </br>' ;
				echo "Podaj odp d na pytanie" . $i . '</br> <input type = "text" name = $i*5+$ile+$ile+$ile+$ile /> </br>' ;
				echo "Podaj poprawna odp na pytanie" . $i . '</br> <input type = "text" name = $i+$ile+$ile+$ile+$ile+$ile /> </br>' ;
			}
			echo '<input type = "submit" value = "wyslij quiz"' ;
			echo '</form>' ;
			
		}
		
		//wysylanie go 
			if(isset($_POST[1])) {
				for($i=1;$i<=$ile;$i++) { 
				
				$pyt = $_POST[$i] ;
				$a = $_POST[$i+$ile] ;
				$b = $_POST[$i+$ile+$ile] ;
				$c = $_POST[$i+$ile+$ile+$ile] ;
				$d = $_POST[$i+$ile+$ile+$ile+$ile] ;
				$pop = $_POST[$i+$ile+$ile+$ile+$ile] ;
				
				$quiz = $polaczenie->query("SELECT id  FROM quizy WHERE idkursu = '$idk'AND ipu = '$ipu')")->fetch_assoc()['id'];
				$polaczenie->query("INSERT INTO pytania(idquizu, pytanie, odpa, odpb,odpc,odp,poprawna) VALUES ('$quiz','$pyt', '$a','$b', '$c', '$d','$pop')") ;
				echo "Udalo sie " ;
			}
			header('Location:kursy.php');
				exit();
			}

Dziękuje za pomoc. I jeszcze raz pytam się o to mnożenie(czy dodawanie)w apostrofach.

komentarz 15 lutego 2016 przez 0e85dc6eaf Dyskutant (8,840 p.)
Polecam Ci zrobić name jako coś takiego pytanie$i, a$i, b$i itd
komentarz 15 lutego 2016 przez 0e85dc6eaf Dyskutant (8,840 p.)
$pyt = $_POST['pyt'.$i] ;
$a = $_POST['a'.$i] ;
$b = $_POST['b'.$i] ;
$c = $_POST['c'.$i] ;
$d = $_POST['d'.$i];
$pop = $_POST['pop'.$i];

I analogicznie w formularzu, Pamiętaj, że w apostrofach $i nie zostanie zastąpione zmienną

komentarz 15 lutego 2016 przez gab123 Mądrala (5,230 p.)
Ok. Czy po za tym kod jest dobrze ?
komentarz 15 lutego 2016 przez 0e85dc6eaf Dyskutant (8,840 p.)
Mam nadzieję, że tak :) Na pierwszy rzut oka wygląda OK
komentarz 15 lutego 2016 przez 0e85dc6eaf Dyskutant (8,840 p.)
Sprawdź i napisz czy działa
komentarz 15 lutego 2016 przez gab123 Mądrala (5,230 p.)

Nie nie działa caly czas jest to samo formularz się pokazuje ale nie wysyla(albo przynajmniej nie ma rezultatow wyslania) Poprawiony kod wygląda tak :

<!DOCTYPE_HTML>
<html>
<head>
<meta charset = "utf-8" />
<meta http-equiv = "X-UA-Compatible" content = IE=edge,chrome=1" />
</head>
<body>
Twoje kursy : 
<?php
session_start() ;

if(isset($_SESSION['login'])) {
	
	require_once "connect.php" ;
	
	$polaczenie = new mysqli($host, $db_user, $db_password, $db_name ) ;
	
	if ($polaczenie -> connect_errno==0) {
		
			$idk = $_SESSION['idkursu'];
			$idt =$_SESSION['idtworcy'];
			$ile;
			
		if(isset($_POST['ile'])){
			$ipu =$_POST['ipu'];
			$ile = $_POST['ile'] ;
			
			$polaczenie->query("INSERT INTO quizy(idkursu,ipu)VALUES('$idk','$ipu')");
			
			//dodawanie formularza 
			echo '<form method = "post" >' ;
			for($i=1;$i<=$ile;$i++) { 
				echo "Podaj pytanie" . $i . '</br> <input type = "text" name ="'. $i.'"/> </br>' ;
				echo "Podaj odp a na pytanie" . $i . '</br> <input type = "text" name ="' .$i."a" .'"/> </br>' ;
				echo "Podaj odp b na pytanie" . $i . '</br> <input type = "text" name ="'. $i."b" .'"/> </br>' ;
				echo "Podaj odp c na pytanie" . $i . '</br> <input type = "text" name ="' .$i."c" .'"/> </br>' ;
				echo "Podaj odp d na pytanie" . $i . '</br> <input type = "text" name ="'. $i."d".'" /> </br>' ;
				echo "Podaj poprawna odp na pytanie" . $i . '</br> <input type = "text" name = "'.$i."poprawna". '" /> </br>' ;
			}
			echo '<input type = "submit" value = "wyslij quiz"' ;
			echo '</form>' ;
			
		}
		
		//wysylanie go 
			if(isset($_POST['1'])) {
				for($i=1;$i<=$ile;$i++) { 
				
				echo $i ;
					
				$pyt = $_POST[$i] ;
				$a = $_POST[$i."a"] ;
				$b = $_POST[$i."b"] ;
				$c = $_POST[$i."c"] ;
				$d = $_POST[$i."d"] ;
				$pop = $_POST[$i."poprawna"] ;
				
				$quiz = $polaczenie->query("SELECT id  FROM quizy WHERE idkursu = '$idk'AND ipu = '$ipu'")->fetch_assoc()['id'];
				$polaczenie->query("INSERT INTO pytaniaquizu(idquizu, pytanie, odpa, odpb,odpc,odpd,poprawna) VALUES ('$quiz','$pyt', '$a','$b', '$c', '$d','$pop')") ;
				echo "Udalo sie " ;
				}
			}
			else
				echo "Napisz dane ";
}
}
else {
	header('Location:index.php') ;
	exit();
	}
	?>
Utworz kursy 
<form method="post">
	Podaj ilosc pytan  : </br>
	<input type = "text" name = "ile" /> </br>
	Podaj ilosc poprawnych odp. by zdobyc umiejentnosc /
	<input type = "text" name = "ipu" /> </br>
	<input type = "submit" value = "Dodaj lekcje" /> </br>
</form>
<a href = "dodajquiz.php" > Dodaj quiz umiejentnosci </a>
</html>

Zapytania sprawdziłam kilka razy w phpmyadmin. Nie wiem gdzie blad.

komentarz 15 lutego 2016 przez 0e85dc6eaf Dyskutant (8,840 p.)
Ok mi już działa, dodałem exit() w 42 linijce, a zmienną ile zapisałem do sesji
komentarz 15 lutego 2016 przez gab123 Mądrala (5,230 p.)
rzeczywiście po wsadzeniu ile do sesji wszystko działa. Dziekuje
komentarz 15 lutego 2016 przez 0e85dc6eaf Dyskutant (8,840 p.)
Popraw jeszcze tylko HTML i będzie dobrze, <br /> a nie </br> i w meta masz źle cudzysłowy, ogólnie kliknij ,pokaż źródło strony' i zobacz gdzie jest coś na czerwono, brakuje cudzysłowów itp.
komentarz 15 lutego 2016 przez gab123 Mądrala (5,230 p.)
Dziękuje, bardzo mi pomogłeś

Podobne pytania

0 głosów
0 odpowiedzi 260 wizyt
pytanie zadane 26 października 2019 w PHP przez JSJerry Początkujący (260 p.)
0 głosów
1 odpowiedź 148 wizyt
pytanie zadane 30 stycznia 2019 w PHP przez zerakot Obywatel (1,870 p.)
0 głosów
1 odpowiedź 191 wizyt
pytanie zadane 18 czerwca 2018 w PHP przez Piotr Szramowski Użytkownik (860 p.)

92,452 zapytań

141,262 odpowiedzi

319,078 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...