• 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,196 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ź 137 wizyt
pytanie zadane 3 kwietnia 2018 w PHP przez krysba Początkujący (360 p.)
0 głosów
0 odpowiedzi 182 wizyt
pytanie zadane 14 maja 2016 w PHP przez Headhunter Gaduła (4,450 p.)
0 głosów
1 odpowiedź 421 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

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

...