[ tandrli @ 20.06.2022. 19:48 ] @
Pozdrav,
evo par dana me muči zašto nemogu da uradim query baze i jednostavno rezultat da ispišem u browseru.
Sve sam probao, različite php query, ništa ne pomaže.
Neću lagati noob sam za php, ali ništa bolji nisam bio ni za aurdino kojeg sam uspio programirati da preko wifi šalje ove podatke u phpmyadmin, i to funkcioniše, ali nemogu nikako te podatke da ispišem u browseru, uvijek neki error.

Ovo se vrti na XAMPP.

Hvala.

Code:

CREATE TABLE `logs` (
  `ID` int(9) NOT NULL,
  `sensor1` varchar(50) NOT NULL,
  `sensor2` varchar(50) NOT NULL,
  `timestamp` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;



INSERT INTO `logs` (`ID`, `sensor1`, `sensor2`, `timestamp`) VALUES
(1, '25.56', '23', '2022-06-12 17:45:51'),
(2, '25.52', '34', '2022-06-20 18:34:35'),
(3, '25.56', '33', '2022-06-12 17:45:56'),
(4, '25.54', '44', '2022-06-20 18:34:25'),
(5, '25.56', '55', '2022-06-12 17:46:00');


Code:

<!DOCTYPE html>
<html>
<head>
<title>Table with database</title>
<style>
table {
border-collapse: collapse;
width: 100%;
color: #588c7e;
font-family: monospace;
font-size: 25px;
text-align: left;
}
th {
background-color: #588c7e;
color: white;
}
tr:nth-child(even) {background-color: #f2f2f2}
</style>
</head>
<body>
<table>
<tr>
<th>Id</th>
<th>Username</th>
<th>Password</th>
</tr>


<?php
$dbname = 'sensor';
$dbuser = 'root';
$dbpass = '';
$dbhost = 'localhost';

$sql = mysqli_connect($dbhost, $dbuser, $dbpass) or die("Unable to Connect to '$dbhost'");
mysqli_select_db($link, $dbname) or die("Could not open the db '$dbname'");


$sql = SELECT * FROM `logs` WHERE sensor1 = 25.56;
$result = $conn->query($sql);

if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<tr><td>" . $row["id"]. "</td><td>" . $row["sensor1"] . "</td><td>" . $row["sensor2"]. "</td></tr>";
}
echo "</table>";
} else { echo "0 results"; }
$conn->close();
?>
</table>
</body>
</html>




[ djoka_l @ 20.06.2022. 20:12 ] @
A da probaš onaj upit da staviš pod znake navoda?
Ne može da škodi...
[ tandrli @ 20.06.2022. 22:39 ] @
U bazi uradim query pa onda kliknem Generate php code ... i to sam probo.. ni za živu glavu

Počinjem ozbiljno sumnjati u xampp iako sam ga 2-3 puta dosad instaliro, a post uredno radi.
[ djoka_l @ 21.06.2022. 06:40 ] @
STAVI KVERI POD ZNAKE NAVODA!!!

$sql = 'SELECT * FROM `logs` WHERE sensor1 = 25.56';
[ VladaSu @ 21.06.2022. 14:10 ] @
Pored sto svaki upit ide pod znake navoda...

1. Odvoji PHP od HTML i CSS-a. Pogledaj neki template engine pa probaj tu logiku samo prostoje.
2. Napravi neki conf.php gde ce ti biti samo korisnicka imena, lozinke, ime baze i ostala podesavanja.
3. Napravi klasu koja ce raditi za bazom.

Code (php):

require_once "include/conf.php";
require_once "include/db.php";

$q = "Select ....";
$db->select($q);
//radi jos nesto sa rezultatom

require "templates/header.php";
require "templates/index.php";
require "templates/footer.php";
 



[ tandrli @ 21.06.2022. 20:12 ] @
Hvala na odgovorima .. ako moze jedno pitanje prije svega

na kompu kao što rekoh vrtim xampp, bilo kakav code da koristim u browseru ne izbacuje nikakav error.
Odem na free hostig napravim bazu i uradim query, izbaci mi error na ovoj liniji, error na onoj liniji.. i evo nakon par ispravki uradim query i izbacim rezultate.

Ali zašto na lokalnom racunaru ne dobijam greske u browseru

npr free hosting




dok isti taj code koji koristim i prilagodim dobijam ovako na lokalnom kompu


P.S. nije isti code kao iz prvog posta, ali indetičan problem


Hvala

[Ovu poruku je menjao tandrli dana 21.06.2022. u 22:05 GMT+1]
[ tandrli @ 22.06.2022. 05:43 ] @
Pozdrav
da rezimiramo.
Od kada sam sve prebacio na free hosting cca 1-2h sam proveo programiranju i editovanju coda i sve radi.
Na lokalnom racunaru gdje iz nekog razloga XAMPP neće da funkcioniše proveo sam dosad 30h-sporadično, na toj istoj stvari. (i dalje code koji radi online neće na lokalnoj mašini)

Hvala na pažnji.

[ djoka_l @ 22.06.2022. 08:23 ] @
Na tvojoj masini i na hosting masini nije isto podesen php.ini
Od postavki u njemu zavisi da li ce da izbacuje greske na ekran ili ne. Na "produkcionom" okruzenju ne izbacujes greske jer ne zelis da ljudi koji koriste tvoj softver dobiju, za njih, nerazumljive poruke. Jos gore, zlonamernim korisnicima mozes da otkrijes preko poruka neke detalje o aplikaciji koju mogu da zloupotrebe.
[ tandrli @ 22.06.2022. 15:27 ] @
Citat:
djoka_l: Na tvojoj masini i na hosting masini nije isto podesen php.ini
Od postavki u njemu zavisi da li ce da izbacuje greske na ekran ili ne. Na "produkcionom" okruzenju ne izbacujes greske jer ne zelis da ljudi koji koriste tvoj softver dobiju, za njih, nerazumljive poruke. Jos gore, zlonamernim korisnicima mozes da otkrijes preko poruka neke detalje o aplikaciji koju mogu da zloupotrebe.


slažem se, ali sad dolazimo do drugog velikog upitnika:
Zašto taj isti code radi online a na kompu neće?

[ djoka_l @ 22.06.2022. 16:23 ] @
Zato što ne znaš PHP.
Zato što ne znaš da stringove treba da uokviriš znacima navoda.
Zato što samo kopiraš delove tuđeg koda, bez razumevanja šta taj kod predstavlja.
Zato što se razlikuju verzije PHP-a. Nešto što je greška na obe verzije, PHP interpreter uspe da ispravi "u letu" i da drugačiji ispis.
Zato što se web tehnologija pravi da bude prilično robusna i da uvek nešto prikaže na ekranu, bez obzira na količinu grešaka koje nabacaš u kodu.

Samo nemoj da kriviš XAMP koji radi na milionima kompjutera, a ne radi kod tebe. Nije do okruženja, do tebe je.
[ djoka_l @ 22.06.2022. 16:37 ] @
Da ti objasnim kako rade kompajleri i interpreteri.

Kada kompajler naleti na sintaksnu grešku u kodu, "glupi" kompajler će dati liniju u kojoj je našao grešku i prestati da kompajira.
Pa, niko više ne pravi "glupe" kompajlere. Kada naiđe na grešku, kompajler traži elemente jezika koji mu daju "nadu" da može dalje da nastavi kompajliranje.

Recimo u slučaju da je našao komandu dodele stringa varijabli, a fale znaci navoda, kompajler će naći znak ; koji je terminator ili separator komandi (zavisno od jezika) i pretpostaviti da je od tog znaka dalje ispravno.
Cil kompajlera je "oporavkom od grešaka" prođe što veći deo koda, pa da da sve greške koje je našao prijavi, a ne da pukene na prvoj.

Interpreter obično pukne na prvoj grešci, pa prekine dalji rad.
ALi, kao što sam već rekao, web tehnologije pokušavaju da budu robusne, pa će PHP interpreter "pretpostaviti" da nedostaju znaci navoda, dodaće ih i pokušati da nastavi izvršavanje ostatka koda.
Da li je interpreter pogodio tvoju nameru ili ne, nikada se ne zna, pa zavisi od verzije interpretera kako će izvršiti ostatak koda.

Klasični izgovor lošeg programera je "ovo radi na mom kompjuteru". Dok kod ne daje iste rezultate na SVAKOM kompjuteru, kod nije ispravan.
[ VladaSu @ 22.06.2022. 18:21 ] @
Sem toga XAMPP nema nema ama bas nikakve veze sa tvojim greskama.
XAMPP je program koji instalira PHP, MySQL i mail server, a kasnije pokrece, zaustavalja i resetuje te servere.
Ti uporno tvrdis da voz kasni 3 sata u stanici zbog coveka na razglasu koji govori kada ce voz stici.
Taj covek na razglasu nema ama bas nikakav uticaj na to kada ce vozi stici.
Tako isto i za XAMPP tvrdis, a XAMPP nema nikakve veze sa greskama u PHP.

Mozda nisi kopirao sve fajlove, mozda koristis apsolutne putanje, mozda nije ista verzija PHP, mozda su neke naredbe i tagovi zabranjeni na hostingu, mozda
PHP ima drugacija podesavanja, mozda si limitiran u nekom pogledu....

Druze, pravis kardinalne greske u programiranju. Pravis sintaksne greske i PHP ti lepo javi koju si gresku napravio i ti samo treba da procitas sta je greska i odes
u red koji je naveden u gresci i ispravis tu gresku. To treba da shvatis bez da ti bilo objasnjava jer se ne moze bolje objasniti nego sto ti je vec PHP objasnio kroz gresku.
Postavis pitanje bez da das strukturu tabele i deo koda gde se pojavljuje greska... To ti ni carobnjak Merlin nece reseti.
Onda prilagodjavas kod. Nema sta kod da se prilagodjava jer mora da radi na oba mesta. Prilagodjavanje moze biti u mysql konekciji i nekim parametrima koje sam ti rekao da stavis u conf.php

Tebi treba resetovanje. Treba ponovo da pocnes da ucis uz smernice nekoga iskusnijeg. Ovako kako si poceo da ucis nece te nigde dovesti.
[ tandrli @ 22.06.2022. 21:31 ] @
Ok ufatili ste se error reportinga. Al ajd na stranu.
Činjenica je da vrtite scenarije možda ovo, možda ono. Držite se ovoga ko da je sveto pismo i treba učiti od vitičaste zagrade.

Do juče nisam ništa znao o programiranju arduina/mysql niti o php, par sati sjeo i sklepo eko sistem koji funkcioniše.
Niko od vas nije ni predložio migriranje na freehosting, da sam osto mjenati code na lokalnom PC nigdje nebi dospio.

I famozno "to se ovako treba učiti"! .. e pa netreba, treba znati dovoljno da znaš šta tražiš i prepraviš za svoje potrebe. Ja više imam koristi što popravim EKG ili ultrazvuk, nego od ovoga side-project.

Nikad nisam ni tražio gotovo rješenje, nego malo outside of box razmišljanje.
[ oracle_kid @ 22.06.2022. 21:46 ] @
Ključna reč ove teme je “sklepo”
Da sam na vašem mestu, ništa više ne bih predlagao ni kritikovao
[ VladaSu @ 23.06.2022. 08:45 ] @
Boze moj. Ovo je zalosno smesno.
Prelistaj forum i za njegovih 20 i vise godina postojanja pogledaj da li je iko ikada postavio takvo pitanje. Nije. Zapitaj se zasto?

Bukvalno si za XAMPP rekao: "Nece auto da mi upali jer mi se polomila pedala na biciklo".

Postoje dve verzije "outside of box" razmisljanja.
Prva verzija je verzija koja prosiruje vidike i mogucnosti.
Druga verzija je glupost gde nije sagledana ni jedna cinjenica i to je tvoja verzija i ta verzija samo prosiruje mogucnost gresaka, komplikuje i dogadja se upravo ono sto se tebi dogadja.
Sama cinjenica da si juce prvi put poceo da programiras i cinjenica kakav si nam nakaradan opis problema ovde izneo i jos okrivio XAMPP, ti si druze daleko za bilo kakav "outside of box".
Pre bih rekao da si ti sam "outside of box", ali ipak neke osnovne stvari u programiranju moras poceti u "box"-u. Tvoja verzija "outside of box" mi vise lici na dr. Mengle "outside of box", sto ni je za pohvalu.
Milion ljudi vise od 20 godina radi na jednoj stvari kao sto je PHP i na osnovu dvadesetgodisnjeg iskustva miliona ljudi stvoreni su neki standardi i pravila i onda si ti genije za 2 dana skontao da su svi ti milioni ljudi "u box-u" i da treba promeniti nacin razmisljanja.
XAMPP radi na milion racunara kako treba samo tebi pravi greske. Moze biti istina u nekom parlalenom univerzumu ali ovde nema sanse.

Posto se hvalis da si genije za EKG i ultrav

Da li ti se desilo da EKG u jednoj sobi radi dobro, a u drugoj radi drugacije? Nije.
Da li ti se desilo da te nazovu i kazu spremacica je prala prozore i prestao je ultrazvuk da radi koji je u susednoj zgradi?
Da li ti se desilo da ti neko nazove i kaze poceo je ultrazvuk nesto da smrdi na paljevinu i presto je da radi, ajd kazi mi sta da zamenim? A pri tome taj sto ti pita ne zna ni sta je odvijac? I ti njemu preko telefona
objasni kako da sve to zameni i sta da zameni, a pri tome ne znas ni koji je ultrazvuk i na kraju se ispostavi da je mislio na EKG.
Sve mu to objasnis preko telefona i dok mu objasnjavas skontas da on sedi kuci i gleda utakmnicu, a tebi samo mahinalno govori: "aha, da, razumem".
I ti popizdis i on ti kaze zna on da popravi EKG jer jednom je prebrisao prasinu sa njega, a ti bi trebao malo vise da razmisljas "out of box".

E pa ovo se nama upravo desilo sa tobom.


[Ovu poruku je menjao VladaSu dana 23.06.2022. u 12:58 GMT+1]
[ Nemanja Avramović @ 28.06.2022. 00:04 ] @
Na hostingu ti je uključen error_reporting/display_errors, a u lokalu ne. Obično se postavlja obrnuto, na live sajtu se isključi a u lokalu uključi prikaz grešaka, kako bi mogao da ih rešavaš čim se pojave.

Na onoj prvoj slici ti se vidi PHP kod u browseru, to obično znači da PHP ne radi (nije lepo ukopčan sa web serverom), ili si otvorio php fajl direktno u browseru, a ne preko http protokola.

Greška "Undefined index: id" ti je zato što pokušavaš da ispišeš $row["id"] koji ne postoji u nizu $row. Kako ti izgleda tabela logs u bazi? Da li ima kolonu "id"?

Batali generisanje kodova i piši sam, jedino tako možeš da naučiš kako treba. Ko zna iz koje godine je taj program (ili deo njegovog koda) koji generiše PHP, a PHP se u poslednjih par godina prilično promenio.