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

Wyciaganie danych przez php z bazy i zakonczenie polaczenia

Object Storage Arubacloud
0 głosów
1,217 wizyt
pytanie zadane 28 kwietnia 2016 w PHP przez Ziuziek Mądrala (5,140 p.)

Witam mam pytanie mam taki kod: 

<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"pl-PL\">
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8"> 
    <title>Rezultat zapytania</title>
</head>
<body>
  
<?php 
ini_set("display_errors", 0);
require_once 'dbconnect.php';
$polaczenie = mysqli_connect($host, $user, $password);
mysqli_query($polaczenie, "SET CHARSET utf8");
mysqli_query($polaczenie, "SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");
mysqli_select_db($polaczenie, $database);

$zapytanietxt = file_get_contents("zapytanie.txt");

$rezultat = mysqli_query($polaczenie, $zapytanietxt);
$ile = mysqli_num_rows($rezultat);

if ($ile>=1) 
{

	for ($i = 1; $i <= $ile; $i++) 
	{
		
		$row = mysqli_fetch_assoc($rezultat);
		$id = $row['id'];
		$tresc = $row['tresc'];
		echo $row['tresc'];
	echo "<br />";
echo<<<END
	$id;
	$tresc;
END;
	}
	$polaczenie->close();

			echo $row['tresc'];


			}
?>

Dlaczego zamykajac polaczenie, i korzystając z wypisania atrybutu z danego wiersza wciaz dziala?

 

 

 

Oraz drugie pytanie, jak zrobic w bazie tak, zeby wyswietlajac ID, nazwe chcialbym jeszcze zdjecie wyswietlic?

komentarz 28 kwietnia 2016 przez Mateusz Analityk Stary wyjadacz (13,710 p.)
Ucz się z kursów php https://www.youtube.com/user/czekajl/videos. Jak czegoś nie będziesz wiedział będziesz mógł jeszcze raz cofnąć się do danego filmu.

Ps. W bazie danych przechowujesz jedynie ścieżkę do zdjęcia, a co zrobić z taką ścieżką  powinieneś wiedzieć  :) Zdjęcia przechowujesz na serwerze. Operacje na katalogach i plikach się kłaniają.
komentarz 1 maja 2016 przez Niespecjalny Gaduła (4,180 p.)
edycja 1 maja 2016 przez Niespecjalny
W miare mozliwosci oddziel php od htmla :/ Edit. W pierszej kolejnosci musisz przekazac obiekt pdo do funkcji ktore go uzywaja. Choc mysle ze w twoim przypadku lepiej by bylo dzialac bez funkcji.

3 odpowiedzi

0 głosów
odpowiedź 29 kwietnia 2016 przez writen Nałogowiec (29,060 p.)

Dlaczego zamykajac polaczenie, i korzystając z wypisania atrybutu z danego wiersza wciaz dziala?

A dlaczego miałoby nie działać? Przecież przed zamknięciem połączenia przypisujesz wynik do tablicy $row.

 

PS. Ale ten kod jest brzydki. błeee.

–1 głos
odpowiedź 28 kwietnia 2016 przez DL TD Nałogowiec (36,710 p.)

Spróbuj w taki sposób:

mysqli_close($polaczenie);

BDW Przeżuć się na PDO zamiast MySQLi ;)

komentarz 29 kwietnia 2016 przez Ziuziek Mądrala (5,140 p.)

Pryeyucilem sie na BDO mam kurs taki: http://edugrafia.pl/kursy_wideo/kurs-php5-piszemy-cms-sklepu-internetowego/

Nie rozumiem tylko czemu on w funkcji showCategory robi porownanie
    $stmt = $pdo -> prepare("SELECT * FROM PRODUKTY WHERE kategoria_id=cid");
    $stmt -> bindValue(':cid',$kategoria_id,PDO::PARAM_INT);

 

Czemu [C]id pisze? jak nie ma takiej nazwy kolumny u mnie wyskakuje taki komunikat:

 

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'cid' in 'where clause'' in C:\xampp\htdocs\kurs_mysql1(1)\quiz\index.php:29 Stack trace: #0 C:\xampp\htdocs\kurs_mysql1(1)\quiz\index.php(29): PDOStatement->execute() #1 C:\xampp\htdocs\kurs_mysql1(1)\quiz\index.php(55): showCategory(3) #2 {main} thrown in C:\xampp\htdocs\kurs_mysql1(1)\quiz\index.php on line 29

 

To moj skrypt:

<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"pl-PL\">
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8"> 
    <title>Rezultat zapytania</title>
</head>
<body>
  
<?php 

function showMenu(){
	global $pdo;
	
	$stmt = $pdo -> prepare("SELECT * FROM KATEGORIA");
	$stmt -> execute();
	
	while($row = $stmt -> fetch(PDO::FETCH_ASSOC)){
		echo $row['nazwa'];
		echo "<hr>";
	}
}

function showCategory($kategoria_id = null){
	global $pdo;
	
	if($kategoria_id){
	$stmt = $pdo -> prepare("SELECT * FROM PRODUKTY WHERE kategoria_id=cid");
	$stmt -> bindValue(':cid',$kategoria_id,PDO::PARAM_INT);
	$stmt -> execute();
	
	
	while($row = $stmt -> fetch(PDO::FETCH_ASSOC)){
		echo "<div>";
		echo "<h2>".$row['nazwa']."</h2>";
		echo "<h1>".$row['cena']."</h1>";
		echo $row['description'];
		echo "<br />";
		echo "</div>";
		}
	}
	else
	{
			$stmt = $pdo -> prepare("SELECT * FROM PRODUKTY");
			$stmt -> execute();
	
	}
}

	$pdo = new PDO('mysql:host-localhost;port=3306;dbname=sklep','root','');
	
	$pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	$pdo -> exec("SET NAMES 'utf8'");

	showMenu();
	showCategory(3);



	
	
?>


Prosze o pomoc :(

Chodzi mi o to zeby przy wypisaniu showCategory wypisywalo z bazy te id produktow ktore sa przyrownane do Id kategorii

komentarz 29 kwietnia 2016 przez Pietrak Pasjonat (18,850 p.)
:cid w zapytaniu ma być.

Poza tym brakuje obsługi błędów.
1
komentarz 29 kwietnia 2016 przez efiku Szeryf (75,160 p.)
PO CO CI TEN GLOBAL.....
komentarz 29 kwietnia 2016 przez Ziuziek Mądrala (5,140 p.)

Mowisz to do swierzaka uczacego sie z kursu:D jak usune globala to:


Notice: Undefined variable: pdo in C:\xampp\htdocs\kurs_mysql1(1)\quiz\index.php on line 27

Fatal error: Call to a member function prepare() on null in C:\xampp\htdocs\kurs_mysql1(1)\quiz\index.php on line 27

3
komentarz 29 kwietnia 2016 przez efiku Szeryf (75,160 p.)

No super, a teraz przekaż obiekt pdo jako argument do funkcji.

showMenu(\PDO $pdo)

showCategory( $categoryId = null, \PDO $pdo)

 

1
komentarz 23 maja 2016 przez suice Gaduła (3,960 p.)
Dobra praktyka z wordpressa XD
–1 głos
odpowiedź 29 kwietnia 2016 przez michal Mądrala (5,560 p.)

Spotkałem się kiedyś z tym kursem https://www.youtube.com/user/czekajl/videos. i wydaje mi się że fajnie jest w miarę prosty sposób dużo tematów objaśnionych tylko zastanawia mnie czemu te filmy maja tak mało wyświetleń. Czy coś z tym kursem jest nie tak? Co o nim sądzicie ?

komentarz 1 maja 2016 przez Mateusz Analityk Stary wyjadacz (13,710 p.)
Zastanawia mnie czy ja już nie pisał identycznego komentarza... Odpowiedz jest prosta - trudno je znaleźć Łukasz nie dodaje kluczowych tagów potrzebnych do wyszukania tych filmów youtube.

Podobne pytania

0 głosów
1 odpowiedź 147 wizyt
pytanie zadane 3 kwietnia 2018 w PHP przez krysba Początkujący (360 p.)
0 głosów
0 odpowiedzi 191 wizyt
pytanie zadane 14 maja 2016 w PHP przez Headhunter Gaduła (4,450 p.)
0 głosów
1 odpowiedź 423 wizyt

92,679 zapytań

141,582 odpowiedzi

320,065 komentarzy

62,041 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

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!

...