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

Wyświetlanie wyników wyszukiwania w osobnym div-ie

Object Storage Arubacloud
0 głosów
524 wizyt
pytanie zadane 3 stycznia 2016 w PHP przez sebastian87 Nowicjusz (120 p.)

Witam serdecznie,

Od jakiegoś czasu pracuję nad stworzeniem swojej strony internetowej, głównie w oparciu o dostępne tutaj tutoriale. Co prawda moja nauka odbywa się metodą dwa kroki do przodu jeden do tyłu ale robię jakieś mozolne postępy :)

Chciałbym prosić o pomoc w rozwiązaniu następującego problemu: strona jest zbudowana na div'ach, w jednym z nich jest wyszukiwarka artykułów podłączona do bazy danych. Wyszukiwarka działa, ale wyniki wyszukiwania wypluwa do tego samego diva w którym się sama znajduje zamiast do tego który jest przeznaczony na wyniki wyszukiwania, main content itd. Czy ktoś z Was mógłby mi podpowiedzieć na przykładzie mojego kodu, czy jest szansa na przerzucenie wyników wyszukiwania do div'a przeznaczonego na treść?

Poniżej wrzucam schemat kodu. W rzeczywistości divy są bardziej rozbudowane ale poniższy model raczej oddaje sens mojego pytania :)

<body>
<div id="container">
<div class="rectangle">Header</div>
				
<div class="rectangle">
<div id="sidebar">
Wyszukiwarka<br>
						
<?php
$output = NULL;

if(isset($_POST['submit'])) {

$mysqli = NEW MySQLi("localhost","root","","mydb");

$search = $mysqli->real_escape_string($_POST['search']);
	
$resultSet = $mysqli->query("SELECT * FROM main WHERE title LIKE '%$search%'");
	
if($resultSet->num_rows > 0) {
while($rows = $resultSet->fetch_assoc())
{
$title = $rows['title'];
$link = $rows['link'];
	
$output .= "Tytuł artykułu: $title<br />Link: $link<br /><br />";
}
}else{
echo "Niczego nie znaleziono!!";
}
}
?>
						
<form method="post">
<input type="TEXT" name="search" />
<input type="SUBMIT" name="submit" value="Search" />
</form>

<?php echo $output; ?>
							
</div>
<div id="content">Wyniki</div>
</div>
<div style="clear: both;"></div>
<div class="rectangle">Footer</div>
</div>
</body>

Z góry dziękuję za każdą odpowiedź.

2 odpowiedzi

+1 głos
odpowiedź 3 stycznia 2016 przez writen Nałogowiec (29,060 p.)
Coś mi się wydaje, że te kroki robisz na odwrót. Jeden w przód, dwa do tyłu.

Postarałbyś się chociaż zrozumieć kod, który napisałeś/skopiowałeś. Widzisz, który kawałem kodu odpowiada za wyświetlanie wyników? Tak? To po prostu go przenieś tam gdzie chcesz.

Jeśli już to wiesz, to proponuję CTRL+A >> Delete. Następnie zapoznaj się z jakimś ciekawym systemem szablonów (patrz: Twig) i naucz się oddzielać kod HTML od PHP. Później się trochę zastanów i napisz kod tak, aby był nie tylko funkcjonalny, ale też bezpieczny i działał poprawnie w każdym przypadku (patrz: testy).
–2 głosów
odpowiedź 3 stycznia 2016 przez ScriptyChris Mędrzec (190,190 p.)

Wydaje mnie się, że PHP nie można edytować zawartości HTML. Dlatego zrób to przez JavaScript. Przekaż zmienną od PHP do JS i w JS wstaw sobie do diva wynik:

http://stackoverflow.com/questions/31044048/how-to-get-value-from-php-inside-a-javascript

var wynik = <?php echo json_encode($output) ?>;
document.getElementById('content').innerHTML = wynik;

 

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

Hmm rozumiem, że @ Krzycho92  jesteś początkującym programistą? Wyobraź sobie, że masz aplikację która jest zlepiona dosłownie z kodem HTML i PHP + JS, dostajesz teraz zadanie zmiany framewoorka boostrap na mdl + zmiany w js i NIE JESTEŚ autorem tej aplikacji tylko kolejnym programistą, który dostał zlecenie. Powiedz mi.. po ilu godzinach wysiądzie Ci psychika? 

Bo ja miałem takie zadanie i zdecydowaliśmy się na to, aby wgl wywalić to spagetti i napisać od nowa (mniejsze koszty). Napisaliśmy ją tak jak trzeba, czyli oddzieliliśmy kod PHP od HTML. PHP <=> Twig <=> HTML. Z js zaś załatwiliśmy sprawę tak: REST API.

Prosta aplikacja rest jest dużo lepsza od wsadzania w js php. 

Tylko jeśli jakieś rozwiązanie działa (rozwiązuje problem) to nie znaczy, że jest bez sensu dlatego, że są od niego lepsze rozwiązania.

 Czy to rozwiązanie jest bez sensu? Doświadczeni programiści powiedzą Ci, że tak ponieważ zasłania czytelność kodu programistom JS. Istnieje duże ryzyko, że podczas zmiany takiego kodu, coś zapomnimy. Co więcej. Dopóki to rozwiązanie nie będzie miało odpowiednich testów :> nie możemy powiedzieć, że działa. Jeżeli mówimy o lepszych rozwiązaniach to znaczy, że gdzieś ktoś spotkał się już z problemem spagetti i postanowił jakoś to rozwiązać.

Ja tam Ci minusa nie dałem:) 

Ale zamiast umieszczania php w js, można zrobić w aplikacji jakieś api co zwraca dane jsonem a w js tylko asynchronicznie pobierzesz sobie dane.

a no i takie dyskusje moim zdaniem są potrzebne. :) Ktoś tu kiedyś wpadnie i może się czegoś ciekawego dowie!

komentarz 3 stycznia 2016 przez ScriptyChris Mędrzec (190,190 p.)

Ja sobie zdaję sprawę (tzn. nie miałem z tym jeszcze do czynienia, ale czytam i staram się takie informacje przyswajać), że nie można tych warstw mieszać, bo potem przy zmianie czegoś, albo gdy inny programista do tego siądzie - dużo czasu zajmie rozszyfrowanie takiego "spaghetti" i zmiana kodu.

Chodzi mi tylko o to, że jeśli jakieś rozwiązanie działa, ale jest nieoptymalne, miesza w kodzie itd. to nie znaczy, że w ogóle jest bez sensu. Można po prostu poinformować pomysłodawcę w stylu "To rozwiązanie jest słabe / nieoptymalne / stare itd. Nie stosuj go, bo (...)", a nie od razu mówić, że bez sensu jakby w ogóle nie działało.

Starając się komuś pomóc, podaję rozwiązanie które po prostu działa (lub powinno, bo sprawdzając je u siebie - działa). Jestem jeszcze za mało doświadczony, aby wiedzieć czy coś jest bardziej lub mniej optymalne. Tylko o to mi chodzi. 

Dla mnie jest różnica między "bez sensu" = "nie działa", a "bez sensu" = "są lepsze rozwiązania, nie stosuj tego".

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

Zazwyczaj się tak wychodzi, od rozwiązania które działa, a nie jest do końca optymalne. Później się to ulepsza i do tamtego już nie wraca :D

Możesz poczytać jak działa protokół HTTP, dzięki czemu bez problemu zrozumiesz działanie PHP i jak skrypty pisać. To na prawdę duże ułatwienie! 

Czekaj gdzieś tu miałem link.. o przytaj o tym jak leci request i jak to przechwycone zostaje

https://symfony.com/doc/current/book/http_fundamentals.html

"To rozwiązanie jest słabe / nieoptymalne / stare itd. Nie stosuj go, bo (...)",

Jeżeli będziesz pracował w grupie to kod który napisałeś trafi do CR (Code Review) i wspólnie podyskutujecie na temat rozwiązań, wymienicie się doświadczeniami. Dzięki temu będziesz wiedział, dlaczego Twoje rozwiązanie jest np. złe, a tamto jest lepsze. Optymalnością należy się martwić w momencie gdy zacznie nam ona przeszkadzać. Fakt mamy genialne narzędzie jak Blackfire które pokaże nam co i jak :)

W sumie, to zerknij se kiedyś: https://php-kurs.gitbooks.io/phpkurs/content/ Co jakiś czas coś nowego przybywa ^^

Pozdrawiam!

komentarz 3 stycznia 2016 przez ScriptyChris Mędrzec (190,190 p.)
Dzięki za linki. Gratuluję współtworzenia tutoriala :)
komentarz 3 stycznia 2016 przez efiku Szeryf (75,160 p.)
Sukces to będzie jak ktokolwiek się z tego coś nauczy ;_:

Podobne pytania

0 głosów
1 odpowiedź 107 wizyt
pytanie zadane 19 sierpnia 2019 w JavaScript przez niezalogowany
0 głosów
1 odpowiedź 173 wizyt
pytanie zadane 30 listopada 2020 w HTML i CSS przez OFAL Początkujący (260 p.)
0 głosów
2 odpowiedzi 262 wizyt
pytanie zadane 2 czerwca 2016 w HTML i CSS przez Ardian Początkujący (290 p.)

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!

...