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

option value pobieranie danych z bazy danych

Object Storage Arubacloud
+1 głos
769 wizyt
pytanie zadane 4 stycznia 2021 w PHP przez Paweł123 Nałogowiec (33,500 p.)

Witam, męczę się z probraniem dannych z bazy danych do Tagu Select.

Napisałem coś takiego.

<?php require_once "baza_danych.php";
        session_start();

	$polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
	
	if ($polaczenie->connect_errno!=0)
	{
		echo "Error: ".$polaczenie->connect_errno;
	}

  
  $sql = "SELECT id, nazwa FROM firmy";
  $result = $polaczenie->query($sql);

 

  $polaczenie->close();

  
?>
<!DOCTYPE html>
<html lang="en">

<head>

  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <meta name="description" content="">
  <meta name="author" content="">

  <title>CRM UZ</title>

  <!-- Bootstrap core CSS -->
  <link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">

</head>

<body>

<?php include('nav-bar.php'); ?>

  <div class="row">
      <div class="col-lg-12 text-center">
  <h1 class="mt-5">Członkowie Zespołu</h1>

  <form action="insert_zadania.php" method="post" style="width: 50%; margin: auto;">
  <div class="form-group">
    <label for="exampleInputEmail1">Imie</label>
    <input name="imie" type="text" class="form-control" id="exampleInputEmail1" placeholder="Wprowadz Imie">
  <div class="form-group">
    <label for="exampleInputEmail1">Nazwisko</label>
    <input  name= "nazwisko" type="text" class="form-control" id="exampleInputPassword1" placeholder="Wprowadz Nazwisko">
  <div class="form-group">
  <div class="form-group">
    <label for="exampleInputEmail1">Stanowisko</label>
    <input  name= "stanowisko" type="text" class="form-control" id="exampleInputPassword1" placeholder="Wprowadz Stanowisko">
  <div class="form-group">
  <br>

  <?php 
  if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
      echo "Unikalny numer kontaktu: " . $row['id']."<br>Nazwa: " . $row['nazwa'];
    }
  } else {
    echo "0 results";
  }
 ?>

 <br><br>
    <label for="exampleInputEmail1">Wybór firmy id</label>
    <select name="id_firmy" id="id_firmy">
    <?php 
      while ($row = $result->fetch_assoc())
      {
          echo "<option value='".$row['id']."'>'".$row['nazwa']."'</option>";
      }
      ?> 
    </select>
  <br><br>
  <button type="submit" class="btn btn-primary">Submit</button>
    </div>
    </div>
  <!-- Bootstrap core JavaScript -->
  <script src="vendor/jquery/jquery.slim.min.js"></script>
  <script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>

</body>

</html>

Chciałbym, aby dane były wyświetlane w tym selekcie, jednak tak się nie dzieje. Ta linijka kodu powinna być odpowiedzialna za to wyświetlenie. Pobranie z bazy danuch działa, ponieważ powyżej zostało wszystko ladnie pobrane. A chciałbym te dane powyżej pobrane wsadzić do tego tagu select (do rozwijanej listy)

 <select name="id_firmy" id="id_firmy">
    <?php 
      while ($row = $result->fetch_assoc())
      {
          echo "<option value='".$row['id']."'>'".$row['nazwa']."'</option>";
      }
      ?> 
    </select>

Czy ktoś, wie co robię źle?

komentarz 4 stycznia 2021 przez Mateusz Analityk Stary wyjadacz (13,710 p.)
Czy połączenie z bazą danych nawiązałeś poprawnie? Czy jest problem tylko z tą pętlą? Czy mógłbyś zawęzić problem?

Czy otrzymujesz jakiekolwiek komunikaty błędu ?

2 odpowiedzi

+2 głosów
odpowiedź 5 stycznia 2021 przez SzkolnyAdmin Szeryf (86,360 p.)
wybrane 5 stycznia 2021 przez Paweł123
 
Najlepsza
Podczas pierwszej pętli while "wyczerpałeś" rezultat zapytania i w drugiej nie masz już nic do prezentacji. Albo ponawiasz zapytanie przed drugą pętlą, albo w pierwszej pętli, oprócz wypisania na stronie, zapisujesz wynik do tablicy/ciągu tekstowego i wykorzystujesz niżej do stworzenia listy wyboru.
+1 głos
odpowiedź 5 stycznia 2021 przez VBService Ekspert (253,120 p.)

@SzkolnyAdmin
Podczas pierwszej pętli while "wyczerpałeś" rezultat zapytania ...

Zrób tak: data_seek(0) "przewija" wskaźnik na początek po fetch_assoc()

<select name="id_firmy" id="id_firmy">
   <?php
     $result->data_seek(0);
     while ($row = $result->fetch_assoc())
     {
         echo "<option value='".$row['id']."'>".$row['nazwa']."</option>";
     }
     ?> 
   </select>

 

1
komentarz 5 stycznia 2021 przez SzkolnyAdmin Szeryf (86,360 p.)
Przyznam się, że nie korzystałem z tej funkcji w projektach, nad którymi pracowałem (nie było takiej potrzeby), ale funkcję zapamiętam - może kiedyś się przyda. Człowiek uczy się całe życie, dziękuje za cenna wskazówkę.
komentarz 5 stycznia 2021 przez VBService Ekspert (253,120 p.)
edycja 5 stycznia 2021 przez VBService

Pierwszy raz styczność z tym "mechanizmem" miałem przy projektach w Access-ie wink, VB for Application, Recordset. np.:

Public Sub RecordsetNavigation()

  Const SQL As String = "SELECT * FROM Customers"
    
  Const ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" + _
    "Data Source=C:\mydb.mdb;Persist Security Info=False"

  Dim Recordset As Recordset
  Set Recordset = New Recordset
  Call Recordset.Open(SQL, ConnectionString, adOpenDynamic)
  
  Recordset.MoveLast ' TU - Moving the Cursor on Recordset
  
  While Not Recordset.BOF
    Debug.Print Recordset.Fields("CompanyName")
    Recordset.MovePrevious ' TU - Moving the Cursor on Recordset
  Wend
End Sub

 

Podobne pytania

0 głosów
0 odpowiedzi 227 wizyt
0 głosów
1 odpowiedź 327 wizyt
pytanie zadane 26 lutego 2023 w PHP przez gatka84 Bywalec (2,150 p.)
0 głosów
1 odpowiedź 147 wizyt
pytanie zadane 22 października 2018 w PHP przez Śmieszek_;3 Użytkownik (780 p.)

92,555 zapytań

141,403 odpowiedzi

319,559 komentarzy

61,940 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...