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

Lista rozwijana korzystająca z bazy danych

Hosting forpsi easy 1 pln
0 głosów
2,027 wizyt
pytanie zadane 6 grudnia 2017 w PHP przez Przemko Giszczyński Początkujący (380 p.)
zmienione kategorie 6 grudnia 2017 przez Przemko Giszczyński

Zdaje sobie sprawę, że prawdopodobnie jest to prosta sprawa. Jednakże nie potrafię zrobić listy rozwijanej w dodawaniu klienta. Wygląda to następująco tak:

W miejscach zaznaczonych kółkami mają być listy rozwijane z danymi z bazy danych:

Zastanawia mnie, jak to umieścić w kodzie php. Kod mniej-więcej wygląda tak:

<body>
	<div id="menu">
		<center>
	<ul id="menu-bar">
	 <li><a href="home.php">Strona Główna</a></li>
	 
	 </li>
	 <li><a href="dodaj.php">Dodawanie faktur</a>
	 	<ul>
      	<li><a href="dodaj.php">Dodaj</a></li>
		</ul>
		<li><a href="dodkli.php">Dodaj klienta</a></li>
		<li><a href="lista.php">Lista klientów</a></li>
		<li><a href="edytuj_d.php">Edytuj dane</a></li>
		<li><a href="logout.php">Wyloguj się!</a>
	  <ul>
	   
	   <li><a href="logout.php">Wyloguj!</a></li>
	  </ul>
	 </li>
	</ul>
		</center>
</div>

	<div class="container">

		<h2>Dodaj fakturę</h2>



	<?php

		require_once "connect.php";
		mysqli_report(MYSQLI_REPORT_STRICT);

		if ($_POST['dodaj']=="Dodaj fakturę!")
		{

			$wszystko_ok = 1;
			$tytul = $_POST['tytul'];
			$cena = $_POST['cena'];
			$ilosc = $_POST['ilosc'];
			$klient = $_POST['klient'];

			if ((strlen($tytul) < 3) || (strlen($tytul) > 30))
			{
				$wszystko_ok = 0;
				$_SESSION['e_tytul']="Tytuł może mieć długość od 3 do 30 znaków";
			}
			else
			{
				$tytul_ok = $tytul;
			}

			if($cena > 0)
			{
				if(!$cena_OK = filter_var($cena, FILTER_VALIDATE_FLOAT))
				{
					$_SESSION['e_cena'] = "Proszę podać cenę w formacie 00.00 !";
					$wszystko_ok = 0;
				}
				else
				{
					$cena_OK = sprintf("%.2f", $cena);
					if($cena_OK != $cena)
					{
						$_SESSION['e_cena'] = "Proszę podać cenę w formacie 00.00 !";
						$wszystko_ok = 0;
					}
				}
			}
			else
			{
				$_SESSION['e_cena'] = "Proszę podać cenę w formacie 00.00 !";
				$wszystko_ok = 0;
			}


			if ($wszystko_ok == 1)
			{

				try
				{
				$polaczenie = new mysqli($db_host, $db_user, $db_password, $db_name);
				$polaczenie ->query("SET NAMES 'utf8'");

				if ($polaczenie->connect_errno!=0)
				{
					throw new Exception(mysqli_connect_errno());
				}

				if ($polaczenie->query("INSERT INTO `oferty` (`id`, `tytul`, `ilosc`, `kontrahent`, `cena`, `data_wys`, `id_wys`, `id_kup`) VALUES (NULL, '$tytul_ok', '$ilosc', '$klient', '$cena_OK', CURRENT_TIMESTAMP, '$id', NULL)"))
				{
					$_SESSION['dodano'] = "Dodano fakturę!";
					header('Location: dodaj.php');
					exit();
				}
				else
				{
					echo "Nie udało się dodać";
				}



				}
				catch(Exception $e)
				{
					echo '<span class="error">Błąd serwera! Przepraszamy za niedogodności !</span>';
					echo '<br />Informacja developerska: '.$e;
				}

			}
		}

	?>

	<form class="form-container" method="post" enctype="multipart/form-data">

		<?php
			if (isset($_SESSION['dodano']))
			{
				echo '<div class="error">'.$_SESSION['dodano'].'</div>';
				unset($_SESSION['dodano']);
			}
		?>
<p align="left">
	</p>
		<div class="form-title">Produkt:</div> <br/>
		<input class="form-field" name="tytul" /><br />
		<?php
			if (isset($_SESSION['e_tytul']))
			{
				echo '<div class="error">'.$_SESSION['e_tytul'].'</div>';
				unset($_SESSION['e_tytul']);
			}
		?>

		<div class="form-title">Ilość:</div> <br/>
		<input class="form-field" type="text" name="ilosc" /><br />

		<div class="form-title">Cena:</div> <br />
		<input class="form-field" type="text" name="cena" /><br />
		<?php
			if (isset($_SESSION['e_cena']))
			{
				echo '<div class="error">'.$_SESSION['e_cena'].'</div>';
				unset($_SESSION['e_cena']);
			}
		?>
		
		<div class="form-title">Kontrahent:</div> <br/>
		<input class="form-field" type="text" name="klient" /><br />

		<br />

		<input class="submit-button" type="submit" name="dodaj" value="Dodaj fakturę!"/>

	</form>

 

3 odpowiedzi

0 głosów
odpowiedź 6 grudnia 2017 przez Przemko Giszczyński Początkujący (380 p.)

W miejsce konrahenta udało mi się zrobić coś tego typu, jednakże teraz nie mogę przesłać tego formularza.

Zmiana wygląda tak:

<div class="form-title">Kontrahent:</div> <br/>
		<select class="form-field"
		<?php
 
		require_once "connect.php";
          
		$polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
 
		$rezultat = @$polaczenie->query(
		sprintf("SELECT * FROM klient "));
 
		echo '<select name="XXX">'."<br>";
 
 		while($option = mysqli_fetch_assoc($rezultat)) {
 
		echo '<option value='.$option['id'].'>'.$option['nazwa'].'</option>';
		 
		}
 
 
		echo '</select>'."<br>";
 
		echo '</form>';
		?>


		<br />

		<input class="submit-button" type="submit" name="dodaj" value="Dodaj fakturę!"/>

	</form>

Jednak teraz popsułem przesyłanie tego formularza.

0 głosów
odpowiedź 6 grudnia 2017 przez PaulGilbert Gaduła (3,280 p.)
Jestem początkujący, więc nie wiem czy jakoś szczególnie pomogę, ale: rozwijane formularze w których dane mają być wczytywane z bazy wstawiłbym do kodu PHPa a pola na tych rozwijanych listach przypisałbym zmiennym, które by odpowiadały danym pobranym z bazy danych.
0 głosów
odpowiedź 6 grudnia 2017 przez Chess Szeryf (76,710 p.)

Do sprawdzania, czy coś siedzi w zmiennych używaj: print_r(), var_dump(). Dodatkowo, jeśli chcesz mieć sformatowane wyniki, po użyciu owych wspomnianych funkcji, to możesz użyć znacznika HTML: <pre>something_function</pre>.

<form method="post" action="">
	L1: <select name="L1"> 
			<option>1</option>
			<option>2</option>
			<option>3</option>
			<option>4</option>
		</select>
		<input type="submit"/>
</form>

<pre>

<?php

$conn = new mysqli('localhost','root','','zakupy');

$resultat = $conn->query("INSERT INTO `teraz` values ('{$_POST['L1']}');");

$res = $conn->query('select * from `teraz`');
 
while($res2 = $res->fetch_array(MYSQLI_NUM)){ 
	  list($my_detailed_name)=$res2;
	  print_r($my_detailed_name.'<br />');
}

?>

</pre>

 

 

Podobne pytania

0 głosów
1 odpowiedź 550 wizyt
pytanie zadane 23 września 2016 w PHP przez Zbigniew Andrysiak Bywalec (2,470 p.)
0 głosów
2 odpowiedzi 985 wizyt
pytanie zadane 26 marca 2017 w PHP przez sobi94 Początkujący (270 p.)
0 głosów
1 odpowiedź 8,145 wizyt
pytanie zadane 1 lutego 2017 w HTML i CSS przez Max Vanach Nowicjusz (150 p.)

92,105 zapytań

140,763 odpowiedzi

317,744 komentarzy

61,424 pasjonatów

Advent of Code 2023

Top 15 użytkowników

  1. 590p. - Łukasz Eckert
  2. 584p. - Dawid128
  3. 575p. - CC PL
  4. 571p. - TheLukaszNs
  5. 552p. - nidomika
  6. 546p. - Michal Drewniak
  7. 544p. - Mikbac
  8. 539p. - Eryk Andrzejewski
  9. 537p. - 13NOONE37
  10. 536p. - Arkadiusz Waluk
  11. 533p. - Henry Saele
  12. 525p. - sefirek
  13. 522p. - adrian17
  14. 514p. - rucin93
  15. 505p. - Adrian Wieprzkowicz
Szczegóły i pełne wyniki

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!

...