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

odczytywanie danych z bazy

Object Storage Arubacloud
0 głosów
376 wizyt
pytanie zadane 19 sierpnia 2015 w PHP przez KamilloPL Gaduła (3,470 p.)

chciałbym odczytać informacje z bazy danych. po wybraniu odpowieniej opcji np półki chciałbym aby wyświetliły mi się książki na danej półce

 

<!DOCTYPE HTML>
   <meta charset="utf-8">
    <title>Test</title>
</head>
<body>

<h1>Wybierz półkę:</h1>
	<form action="shelf.php" method="post">
<p>
<select name="shelf" size="1">
<option value="main_shelf">Główna półka</option>
<option value="near_recept">Półka przy recepcji</option>
<option value="near_window">Półka przy oknie</option>
</select>
<input type="submit" value="wybierz" />
</p>
</form>
	
	

</body>

</html>
<html lang="pl">

<head>

 

 

strona z wyborem

 

i teraz jak to ruszyć ze strony z wyświetlanymi danymi?

<!DOCTYPE HTML>

<html lang="pl">

<head>
   <meta charset="utf-8">
    <title>Podsumowanie</title>
</head>

<body>



<?php

	
 	try
	 {
      $pdo = new PDO('mysql:host=localhost;dbname=new;charset=utf8', 'root', 'pass');
      $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      
      $stmt = $pdo->query('SELECT title, genere, shelf_id, location FROM book, shelf where shelf_id=shelf.id');
	  
      echo '<ul>';
      while($row = $stmt->fetch())
      {
          echo '<li>'.$row['title'].': '.$row['genere'].': '.$row['shelf_id'].': '.$row['location'].'</li>';
		}
      $stmt->closeCursor();
      echo '</ul>';
   }	
	catch (PDOException $e)
	{
    echo "Error Connection!: " . $e->getMessage() . "<br/>";
    die();
} 
   
   
   
   
   
 
   ?>
   
</body>

</html>

 

robiąc tak wyświetla mi

 

  • Harry Potter: Fantasy: 3: Główna półka
  • Chemia: Textbook: 2: Półka przy recepcji
  • Biologia: Textbook: 2: Półka przy recepcji
  • Hobbit: Fantasy: 3: Główna półka
  • Gangster: Thriller: 1: Półka przy oknie
  • Ice Man: Thriller: 1: Półka przy oknie

wszystkie dostępne opcje

2 odpowiedzi

+1 głos
odpowiedź 19 sierpnia 2015 przez Boshi VIP (100,240 p.)
Nie rozumiem.. .przecież ty w ogóle nie używasz  selecta? wyciągasz po prostu  złączone jakieś  2 tabele
0 głosów
odpowiedź 19 sierpnia 2015 przez roque Bywalec (2,160 p.)
  try
     {
      $pdo = new PDO('mysql:host=localhost;dbname=new;charset=utf8', 'root', 'pass');
      $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
       
$shelfId = 0;
if(isset($_POST["shelf"]))
{
   $shelfId = $_POST["shelf"];
}

      $stmt = $pdo->query('SELECT title, genere, shelf_id, location FROM book, shelf 

where shelf_id=shelf.id and NAZWA_POLA_GDZIE_MASZ_NAZWE_NP_main_shelf = ' . $shelfId);
       
      echo '<ul>';
      while($row = $stmt->fetch())
      {
          echo '<li>'.$row['title'].': '.$row['genere'].': '.$row['shelf_id'].': '.$row['location'].'</li>';
        }
      $stmt->closeCursor();
      echo '</ul>';
   }    
    catch (PDOException $e)
    {
    echo "Error Connection!: " . $e->getMessage() . "<br/>";
    die();
} 
    

 

zamiast NAZWA_POLA_GDZIE_MASZ_NAZWE_NP_main_shelf wpisz nazawe pola z bazy danych, kolumny, w ktorej trzymasz dane main_shelf, near_recept, itd. i powinno zadzialac

komentarz 19 sierpnia 2015 przez Boshi VIP (100,240 p.)
Zdecydowanie prościej było by i zautomatyzowane gdyby select przechowywał wartości  pobrane z bazy od razu.   Wtedy Zapytanie zmieniało by tylko wartość POST[] a każda nowo dodana wartość była by już na liście :)

A tak na sztywno ustawione jest wszystko.
komentarz 19 sierpnia 2015 przez KamilloPL Gaduła (3,470 p.)
?php

try
{
	$pdo = new pdo('mysql:host=localhost;dbname=new;charset=utf8', 'root','pass');
	$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	$shelfId=0;
		if(isset($_POST['shelf']))
	{
		$shelfId = $_POST['shelf'];
	}
	$stmt = $pdo->query('SELECT title, genere FROM book, shelf where shelf_id=shelf.id and location = ' . $shelfId);
	echo '<ul>';
	while($row = $stmt->fetch())
{
	echo '<li>'.$row['title'].': '.$row['genere'].'</li>';
	}
	$stmt->closeCursor();
	echo '</ul>';
	}
	catch (PDOException $e){
		echo "Error Connection!: " . $e->getMessage() . "<br/>";
    die();
} 
?>

do tego 

 

<!DOCTYPE HTML>
   <meta charset="utf-8">
    <title>Test</title>
</head>
<body>

<h1>Wybierz półkę:</h1>
<form action="end.php" method="post">
Wybierz półkę : <br/><input type="text" name="shelf" />
<input type="submit" value="Wybierz" />
</form>
	
	

</body>

</html>

i wyskakuje

 

Error Connection!: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'przy oknie' at line 1

komentarz 20 sierpnia 2015 przez roque Bywalec (2,160 p.)

pole location to string, wiec musisz zrobic tak:

    $stmt = $pdo->query('SELECT title, genere FROM book, shelf where shelf_id=shelf.id and location = "' . $shelfId . '"');

 

komentarz 20 sierpnia 2015 przez Boshi VIP (100,240 p.)
Problem wczoraj na pw rozwiżany został :)

Podobne pytania

0 głosów
2 odpowiedzi 1,433 wizyt
pytanie zadane 31 sierpnia 2015 w PHP przez tytanik2011 Użytkownik (930 p.)
0 głosów
2 odpowiedzi 493 wizyt
+1 głos
2 odpowiedzi 557 wizyt
pytanie zadane 29 sierpnia 2015 w SQL, bazy danych przez niezalogowany

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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!

...