Jump to content
Sign in to follow this  
Mvrosking

Wybieranie opcji z listy i wysłanie zapytania do bazy danych PHP

Recommended Posts

Cześć, mam kod, który umożliwia wybranie z sekcji dany numer. Chciałbym, aby po wybraniu danego zapytania automatycznie zostało wysłane do bazy danych zapytanie, w którym zostanie wysłany numer, a do niego automatycznie dodana cena. Nie wiem czy zrozumiecie, ale mam nadzieje że ktoś pomoże.

<div class="form-group">
  <label for="smsPrice">Numer SMS <small>(Wybierając numer SMS, wybierasz również cene nowej usługi).</small></label>
  <select class="form-control" name="smsPrice" id="smsPrice">
    <option>7055 - 0.5zł (0.62 z VAT)</option>
    <option>7136 - 1zł (1.23 z VAT)</option>
    <option>7255 - 2zł (2.46 z VAT)</option>
    <option>7355 - 3zł (3.69 z VAT)</option>
    <option>7455 - 4zł (4.92 z VAT)</option>
    <option>7555 - 5zł (6.15 z VAT)</option>
    <option>7636 - 6zł (7.38 z VAT)</option>
    <option>77464 - 7zł (8.61 z VAT)</option>
    <option>78464 - 8zł (9.84 z VAT)</option>
    <option>7936 - 9zł (11.07 z VAT)</option>
    <option>91055 - 10zł (12.30 z VAT)</option>
    <option>91155 - 11zł (13.53 z VAT)</option>
    <option>91455 - 14zł (17.22 z VAT)</option>
    <option>91664 - 16zł (19.68 z VAT)</option>
    <option>91955 - 19zł (23.37 z VAT)</option>
    <option>92055 - 20zł (24.60 z VAT)</option>
    <option>92555 - 25zł (30.75 z VAT)</option>
  </select>
</div>

 

Share this post


Link to post

No wlasnie nie zrozumialem. Opisz szczegolowo.

  • Like 1

Share this post


Link to post

Może chodzi Ci o to aby po wybraniu danej opcji wyświetliły się szczegóły np pod spodem z informacją na jaki numer trzeba wysłać.

Opisz jaki efekt chcesz osiągnąć. 

 

Poza tym zapis do bazy przy każdorazowym kliknięciu jest kompetnie bez sensu, chyba, że żle to rozumiem ☺️

 

  • Like 1

Share this post


Link to post
http://www.kess.snug.pl/?sid=10&pid=30

 

  • Like 1

Share this post


Link to post

Chcesz to zrobić "w locie"? To musisz zaciągnąć do tego AJAXa. Dodatkowo w HTML musisz mieć jakieś unikalne wartości dla poszczególnego <option> w przeciwnym razie trzeba będzie kombinować.

  • Like 1

Share this post


Link to post

Ogólnie to mam taki kod:
 

<?php
if(!isset($_POST['add_button'])) {
	if((!empty($_POST['productName'])) && (!empty($_POST['productDescription'])) && (!empty($_POST['productImage'])) && (!empty($_POST['productPrice'])) && (!empty($_POST['productCommands']))) {
		$sms_number = $_POST['productPrice'];
		
		if($sms_number = "option1") {
			$info = 'opcja 1';
		}
	} else {
		$info = '';
	}
}
?>

<label for="productPrice">Cena produktu</label>
	<select class="form-control" name="productPrice" id="productPrice">
		<option value="option1">1</option>
		<option>2</option>
		<option>3</option>
		<option>4</option>
		<option>5</option>
	</select>

I chce zrobić tak, że jeżeli z pola select zostanie wybrana opcja nr 1 to zostanie wysłane odpowiednie zapytanie do bazy danych, natomiast jeżeli zostanie wybrana inna opcja, to inne zapytanie.

@Salva, @pBartnik, @ZakladKarny, @Lindsey

Share this post


Link to post

Jak chcesz to obrobić w PHP, to to musisz zamknąć w <form>, bo inaczej tego nie zrobisz. Pokaż cały kod HTML.

  • Like 1

Share this post


Link to post

Form jest zamknięte, dałem tylko kawałek kodu dla pokazania. Proszę cały kod:

Spoiler

<?php
session_start();
include 'header_admin.php';

if(!isset($_SESSION['admin'])) {
  die(header("Location: index.php"));
  exit();
}

$info = '';

if(!isset($_POST['add_button'])) {
  if((!empty($_POST['productName'])) && (!empty($_POST['productDescription'])) && (!empty($_POST['productImage'])) && (!empty($_POST['productPrice'])) && (!empty($_POST['productCommands']))) {
    $sms_number = $_POST['productPrice'];

    if($sms_number = "option1") {
      $info = 'opcja 1';
    }
  } else {
    $info = '';
  }
}
?>

<div class="container">
  <nav class="navbar navbar-default">
    <div class="container-fluid">
      <div class="navbar-header">
        <a class="navbar-brand" href="dashboard.php">NetherShop</a>
      </div>

      <div class="collapse navbar-collapse" id="navbarCollapse">
        <ul class="nav navbar-nav">
          <li class="active"><a href="dashboard.php">Strona główna</a></li>
          <ul class="nav navbar-nav navbar-right">
            <p class="navbar-text"><?php echo 'Zalogowany jako: '. $_SESSION['admin'] .''; ?></p>
          </ul>
        </ul>
        </ul>
    </div>
    </div>
  </nav>

<div class="row">

  <div class="col-md-4">

    <div class="panel panel-default">
      <div class="panel-body">
        <ul class="nav nav-list">
          <li class="nav-header" ><i class="glyphicon glyphicon-cog"></i> Zarządzaj usługami</li>  
          <li><a href="list_products.php"><i class="glyphicon glyphicon-list-alt"></i> Lista usług</a></li>  
          <li class="active"><a href="add_products.php"><i class="glyphicon glyphicon-plus "></i> Dodaj usługę</a></li>

          <li class="nav-header" ><i class="glyphicon glyphicon-shopping-cart"></i> Zarządzaj sklepem</li>
        </ul>
      </div>
    </div>
  </div>

  <div class="col-md-8">

    <div class="panel panel-default">
      <div class="panel-body">
        <?php echo $info; ?>
        <form method="post">
          <div class="form-group">
            <label for="productName">Nazwa produktu</label>
            <input type="text" class="form-control" name="productName" id="productName" placeholder="Wpisz nazwe produktu (np. VIP (15 dni))."/>
          </div>

          <div class="form-group">
            <label for="productDescription">Opis produktu</label>
            <textarea class="form-control" id="productDescription" rows="3"></textarea>
          </div>

          <div class="form-group">
            <label for="productName">Obraz produktu</label>
            <input type="text" class="form-control" name="productImage" id="productImage" placeholder="Wpisz scieżke docelową obrazka produktu (np. img/vip_logo.png)."/>
            <p class="text-danger"><small><b>Pamiętaj!</b> Muisz dodać obrazek do danego folderu, aby on był widoczny!</small></p>
          </div>

          <div class="form-group">
            <label for="productPrice">Cena produktu</label>
            <select class="form-control" name="productPrice" id="productPrice">
              <option value="option1">7055 - 0.5 (0.62 %23 VAT)</option>
              <option>2</option>
              <option>3</option>
              <option>4</option>
              <option>5</option>
            </select>
          </div>

          <div class="form-group">
            <label for="productCommands">Cena produktu</label>
            <input type="text" class="form-control" name="productCommands" id="productCommands" placeholder="Wpisz komendy jakie mają zostać wykonane po kupieniu danej usługi."/>
            <p class="text-danger"><small><b>Pamiętaj!</b> Aby dodać kilka komend, oddziel je średnikiem ";"!</small></p>
          </div>

          <div class="form-group text-center">
            <input class="btn btn-success" type="submit" name="add_button" value="Dodaj produkt" />
          </div>
        </form>
      </div>
    </div>
  </div>

</div>
</div>
</body>
</html>

 

 

Share this post


Link to post

Ok - pomijając kilka niedociągnięcia w kodowaniu i kilka brakujących znaczników (o jeden </ul> za dużo).

Masz jakąś tabelę w bazie danych? To podaj jeszcze nazwy kolumn i co się w nich znajduje.

  • Like 1

Share this post


Link to post

Tabela jest, ale właśnie nie wiem jak dodać, po wybraniu odpowiedniego elementu z pola select. Jak byś mógł to wytłumacz mi to tak na "sucho", czyli jak zrobić że po wybraniu danej opcji z pola select wyświetli mi się na przykład wiadomość że wybrałem opcje nr. np. 2

Share this post


Link to post

Dla każdego <option> musisz dodać atrybut value. I teraz jak masz to:

<?php
if($sms_number = "option1") {
  $info = 'opcja 1';
}
else {
  $info = '';
}

To lepiej to zamienić na switch-case:

<?php
switch($sms_number) {
  case 'option1':
    break;
  case 'option2':
    break;
  (...)
}

o ile w ogóle to potrzebujesz, bo skoro w bazie masz już wiersze z 'option1' i 'option2', to wystarczy proste zapytanie:

SELECT * FROM `table_name` WHERE `column_name` = '{$sms_number}'

 

  • Like 1

Share this post


Link to post

Zrobiłem coś takiego już i nadal nie działa, aktulanie mam coś takiego:

<?php
$info = '';

if(!isset($_POST['add_button'])) {
	$sms_number = $_POST['sms-number'];

	switch ($sms_number) {
		case: "option1":
			$info = 'opcja 1';
			break;
		case: "optio2":
			$info = 'opcja 1';
			break;
	}
}

?>

<html>
  
  <head>
    <title> co tam</title>
  </head>
  
  <body>
    	<?php echo $info; ?>
    <form method="post">
      <select name="sms-number">
		<option value="option1">1</option>
		<option value="option2">2</option>
	</select>
    </form>
  </body>

I nadal nic nie działa, nie wiem czym jest to spowodowane.

Share this post


Link to post
<?php
$sms_number = $_POST['sms_number'];
switch($sms_number) {
  case: "option1":
    $info = 'opcja 1';
    break;
  case: "option2":
    $info = 'opcja 2';
    break;
}
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
  <select name="sms_number">

 

  • Like 1

Share this post


Link to post

Nadal nic nie działa. Żadnych błędów nic nie ma.

Share this post


Link to post

Po wybraniu opcji i wysłaniu formularza nie wyświetla się zmienna $info?

  • Like 1

Share this post


Link to post

A daj za tagiem <?php taki kod:

<?php
echo '<pre>';
print_r($_POST);
echo '<pre>';

I wklej tutaj to co Ci się wyświetla po wysłaniu formularza.

  • Like 1

Share this post


Link to post

W zależności od tego co wybrałem, wyświetla się coś takiego:

Array
(
    [sms-number] => option2 // lub option1
)

 

Share this post


Link to post

W <form> musisz umieścisz jeszcze:

<input type="submit" name="add_button">

 

  • Like 1

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
×
×
  • Create New...