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

pobieranie z dwóch tabel danych

Object Storage Arubacloud
+3 głosów
861 wizyt
pytanie zadane 12 kwietnia 2015 w PHP przez jaca121212 Nałogowiec (40,760 p.)
edycja 12 kwietnia 2015 przez jaca121212

chcialbym pobrac dane z dwoch roznych tabel pierwsz tabela  nr 1 (zdjecie) druga tabela to nr 2 (zdjecie) i chciałbym z pierwszej tabeli pobrac tylko login zalogowanej osoby a z drugiej tabeli chcialbym pobrac tresc date  



nr 2


i kod php
 

<?php
session_start();
if (!isset($_SESSION['zalogowany']))
{
    header('Location: index.php');
    exit();
}
require_once "polaczenie.php";
$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
if ($polaczenie->connect_errno != 0) {
    echo "Error: " . $polaczenie->connect_errno . "Opis: " . $polaczenie->connect_error;
    die();
}
header('Content-Type: text/html; charset=utf-8');

?>
<style>
#st{
border:1px solid red;
}
#pt{
border:1px solid blue;
}
#qt{
border:1px solid yellow;
}
body{
background-color: rgba(0, 0, 0, 0.4);
color: rgba(0, 0, 0, 1);
}
#przycisk {
text-decoration:none;
background-color: rgba(0, 15, 93, 0.7);
color:white;
width:200px;
height:25px;
}
</style>

 

 

<form action="" method="POST">
<?php
echo"<p><b>Zalogowany jako:  ".$_SESSION['user']."</b>"."</p>";
?>
Twoja Treść: </br><textarea name="tresc" class="form-control" rows="3"required placeholder="Tutaj możesz pisać"></textarea></br>
<button type="submit" name="wyslij">Wyślij wiadomość</button><a href="gra.php" target="_blank" id="przycisk">Strona główna</a>

</form>

 

<?php

if(isset($_POST['wyslij']) && !empty($_POST['tresc']))
{
      
    //Definicja zmiennych

    $tresc = mysqli_real_escape_string(htmlspecialchars($_POST['tresc']));
    $data = date('Y-m-d H:i:s');
    $ip = $_SERVER['REMOTE_ADDR'];
 
    //Wykonujemy zapytanie importujące zdefiniowane dane

 $resultat = $polaczenie->query(sprintf("INSERT INTO `posty` (`id`,`login`, `tresc`, `data`, `ip`) VALUES ('', '%d', '%s', '%s', '%s')",
    mysqli_real_escape_string($polaczenie, $_SESSION['id']),
    mysqli_real_escape_string($polaczenie, $tresc),
    mysqli_real_escape_string($polaczenie, $data),
    mysqli_real_escape_string($polaczenie, $ip)));
    //No i przenosimy użytkownika z powrotem do shoutboxa
    header('Location: '.$_SERVER['REQUEST_URI']);
}
    
else {
    //Pobieramy dane z bazy
    $query = mysqli_query ("SELECT `login` FROM `uzytkownicy` AND select * from `posty` ORDER BY data desc);
 
    //Początek struktury tabeli
    echo '<div id="qt" >';

    //Pętla do wyświetlenia wszystkich wpisów
    while($shout=mysqli_fetch_array($query)) {
         echo '<div id="st" ><div id="pt">'
         .'Twój Nick: '.'<b>'.$_SESSION['user'].':</b> ' .'</br>'//wyświetlamy nick
         .'Twoja Treść: '.$shout['tresc'] .'</br>'//wyświetlamy treść
         .'<br/>'
         .'Czas Napisania: '.$shout['data'] .'</br>'//wyświetlamy datę
         .'</div></div>';
    }
 
    //Koniec struktury tabeli
    echo '</div>';
}
?>





i błąd który mi wywala
 

Parse error: syntax error, unexpected 'qt' (T_STRING) in C:\xampp\htdocs\zdjecia.php on line 83

 

3 odpowiedzi

+2 głosów
odpowiedź 12 kwietnia 2015 przez Arkadiusz Waluk Ekspert (287,950 p.)

Taka prośba najpierw... uporządkuj to pytanie żeby jakoś wyglądało bo teraz to nawet ciężko mi coś tu odczytać... Umieść właściwie kod i screeny.

Jak na razie dopatrzyłem się nie zamknięcia cudzysłowia tutaj na końcu zapytania:

$query = mysqli_query ("SELECT `login` FROM `uzytkownicy` AND select * from `posty` ORDER BY data desc);

czyli powinno być:

$query = mysqli_query ("SELECT `login` FROM `uzytkownicy` AND select * from `posty` ORDER BY data desc");
komentarz 12 kwietnia 2015 przez jaca121212 Nałogowiec (40,760 p.)

po zmianie jest nadal  błąd

Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\xampp\htdocs\zdjecia.php on line 81

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in C:\xampp\htdocs\zdjecia.php on line 87

 

komentarz 12 kwietnia 2015 przez Arkadiusz Waluk Ekspert (287,950 p.)

Szczerze to nie korzystam z funkcji mysqli_query() bo wolę robić to obiektowo ale z tego co widzę w dokumentacji (http://www.w3schools.com/php/func_mysqli_query.asp) jako pierwszy parametry należy podać zmienną z połączeniem czyli powinno być:

$query = mysqli_query ($polaczenie, "SELECT `login` FROM `uzytkownicy` AND select * from `posty` ORDER BY data desc");

Nie wiem też dlaczego robisz raz tak a raz tak... Przy dodawaniu rekordu (linia 68) korzystasz z podejścia obiektowego czyli "$polaczenie->query()" a przy pobieraniu z bazy korzystasz z "mysqli_query()". Nie jest to myślę błąd i działać będzie ale taki trochę brak porządku i logiki kodu ;)

komentarz 12 kwietnia 2015 przez elaen Gaduła (4,760 p.)
A nie powinno być czasami select column1,column2 from table1,table2 order by ..... ?
komentarz 12 kwietnia 2015 przez Boshi VIP (100,240 p.)
Powinno być Join lub left join lub right, output itd, odsyłam do dokumentacji SQL.
komentarz 12 kwietnia 2015 przez Arkadiusz Waluk Ekspert (287,950 p.)
Tak, zgadza się, przepraszam nie zwróciłem uwagi na treść zapytania, a skupiłem się na działaniu funkcji...

Jak już koledzy wyżej powiedzieli należy albo najpierw wymienić kolumny wraz z tabelami i później po FROM wskazać te dwie tabele albo skorzystać z JOIN.

Rodzaje JOIN tutaj masz myślę dobrze i nawet graficznie opisane: http://sephiro.boo.pl/index.php/2012/07/21/zlaczenia-w-mysql-mysql-joins/
0 głosów
odpowiedź 12 kwietnia 2015 przez Boshi VIP (100,240 p.)
$query = mysqli_query ("SELECT `uzytkownicy.login`, `posty.*` FROM `uzytkownicy INNER JOIN posty on uzytkownicy.id=posty.iduzytkownik ORDER BY data desc");

 

Brakuje ci klucza głownego po którym masz łączyć... dodaj do tabeli posty  np iduzytkownik pole, wtedy  każdy post ma swojego jedengo uzytkownika z tabeli uzytkownicy- relacja 1 do 1

 

p.s błędów semantycznych nie poprawiałem, bo nie korzystam z tak starych funkcji jak mysql_query, napisałe ci tylko samo zapytanie które będzie działało jezeli stworzysz foregin_key w tabeli posty.

 

 

 

komentarz 12 kwietnia 2015 przez Arkadiusz Waluk Ekspert (287,950 p.)

Z tego co widzę to nie korzysta on z mysql_query() a z mysqli_query() która wcale nie jest funkcją przestarzałą :)

Nie było by w tym nic złego tyle że najpierw nawiązuje połączenie obiektowo, później obiektowo dodaje rekord do bazy a żeby odczytać coś z bazy korzysta normalnie z funkcji... To tak lekko się kupy nie trzyma po prostu co już napisałem wyżej.

komentarz 12 kwietnia 2015 przez Boshi VIP (100,240 p.)
Nie zauważyłem, w każdym razie racja, skoro obiektowo to  ->fetch_assoc bodajże(pisze z głowy) nie korzystam z tego.
komentarz 12 kwietnia 2015 przez Arkadiusz Waluk Ekspert (287,950 p.)
Dokładnie tak jak piszesz. Najpierw należy wykonać zapytanie przez ->query(); i później ->fetch_assoc() i wtedy już operacje na bazie byłyby w całości obiektowe więc miałoby to jakiś porządek.
0 głosów
odpowiedź 13 kwietnia 2015 przez Dragonet.17 Pasjonat (19,630 p.)
Ciewkawy projekt, dzięki Tobie, wiem czym się zająć w najbliższym czasie.
Łapka w górę za temat :D
komentarz 13 kwietnia 2015 przez jaca121212 Nałogowiec (40,760 p.)

sorki z góry ale nie  chce mi się za bardzo przepisywać dwa razy tego samego wątku z innego forum jesli byście mogli odpowiedz na odpowiedz z tej strony to bylbym wdzieczny

http://forum.php.pl/index.php?showtopic=241319&st=0#entry1154273

Podobne pytania

0 głosów
2 odpowiedzi 199 wizyt
pytanie zadane 12 czerwca 2019 w SQL, bazy danych przez niezalogowany
0 głosów
1 odpowiedź 575 wizyt
0 głosów
0 odpowiedzi 270 wizyt

92,536 zapytań

141,377 odpowiedzi

319,456 komentarzy

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

...