NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Multiselect

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
666responsible:3.8.2015 21:40

Nazdar, viete mi niekto poradiť ako vrátiť výsledky tohto selectu?

$vyber1 = "SELECT prog_datum, nazov, popis "
                        . "FROM program as p"
                        . "LEFT JOIN (SELECT nazov, popis, id_show FROM shows) as s"
                    . "on s.id_show = p.id_show ";
            $result = $mysqli->query($vyberHerec);
            while( $row = $result->fetch_array()){
               $i=2;
               if($i>2){echo "<tr>".PHP_EOL;}
               return  "<td>".$row[0]."</td>"."<td>".$row[1]." ".$row[2]."</td>";
               if($i>1){echo "</tr>".PHP_EOL;}
               $i++;

Díky

 
Odpovědět
3.8.2015 21:40
Avatar
Martin Konečný (pavelco1998):3.8.2015 22:05

Zdar,

mohl bys prosim hodit

echo "<pre>";
var_dump($result->fetchArray());

nejsem si totiž jistý, jak to tam hází ty stejnojmenné sloupce

Nahoru Odpovědět
3.8.2015 22:05
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
666responsible:4.8.2015 20:01

Vyhadzuje mi to takúto chybu:

Call to a member function fetch_array() on boolean in

Ak dám len $row[0] a $row[1], tak to funguje, ale akonáhle tam dám 3 výsledky, tak mi to zlýha.

Editováno 4.8.2015 20:03
 
Nahoru Odpovědět
4.8.2015 20:01
Avatar
Odpovídá na 666responsible
Martin Konečný (pavelco1998):4.8.2015 20:03

Pak proměnná $result obsahuje FALSE, což by mělo házet v případě, že máš chybu v SQL dotazu

Nahoru Odpovědět
4.8.2015 20:03
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Odpovídá na Martin Konečný (pavelco1998)
666responsible:4.8.2015 20:04

ale keď ho skúsim cez MySQL tak mi to nehlási žiadnu chybu.

 
Nahoru Odpovědět
4.8.2015 20:04
Avatar
Odpovídá na 666responsible
Martin Konečný (pavelco1998):4.8.2015 20:10

Co máš v proměnné $vyberHerec?

Nahoru Odpovědět
4.8.2015 20:10
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Odpovídá na Martin Konečný (pavelco1998)
666responsible:4.8.2015 20:14

Takto je to teraz:

$mysqli = new mysqli("localhost", "sledovac", "kukuc", "lakomika");
            $vyber1 = "SELECT prog_datum, nazov, popis "
                        . "FROM program as p"
                        . "JOIN (SELECT nazov, popis, id_show FROM shows) as s"
                    . "on s.id_show = p.id_show ";
            $result = $mysqli->query($vyber1);
            while( $row = $result->fetch_array(MYSQLI_NUM)){
               $i=1;
               if($i>1){echo "<tr>".PHP_EOL;}
               printf( "<td>".$row[0]."</td>"."<td>".$row[1]." ".$row[2]."</td>");
               if($i>1){echo "</tr>".PHP_EOL;}
               $i++;

Tu premennú som chcel rozdeliť na dve, ale nakoniec som sa rozhodol, že to nemá asi valný zmysel :-)

Editováno 4.8.2015 20:15
 
Nahoru Odpovědět
4.8.2015 20:14
Avatar
Odpovídá na 666responsible
Martin Konečný (pavelco1998):4.8.2015 20:18

Teď jsem se trochu zamotal :D
Když teda uděláš

$result = $mysqli->query($vyber1);

a za to hodíš

echo "<pre>";
var_dump($result->fetch_array(MYSQLI_NUM));
exit;

co ti to vyplivne?

Případně místo toho MYSQLI_NUM nech data uložit do asociativního pole.

Nahoru Odpovědět
4.8.2015 20:18
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Odpovídá na Martin Konečný (pavelco1998)
666responsible:4.8.2015 20:35

Fatal error: Call to a member function fetch_array() on boolean in ... on line 54

toto je na riadku 54

var_dump($result->fetch_array());
Editováno 4.8.2015 20:36
 
Nahoru Odpovědět
4.8.2015 20:35
Avatar
Odpovídá na 666responsible
Martin Konečný (pavelco1998):4.8.2015 21:37

A ten while ti jinak normálně funguje?

Nahoru Odpovědět
4.8.2015 21:37
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Odpovídá na Martin Konečný (pavelco1998)
666responsible:4.8.2015 21:59

Ak tam dám len 2 výsledky, tak hej, ale 3 už neberie. Nemôže byť aj to "oná komplikácia"? :-)

 
Nahoru Odpovědět
4.8.2015 21:59
Avatar
Odpovídá na 666responsible
Martin Konečný (pavelco1998):4.8.2015 22:02

Co máš přesně na mysli tím "výsledky"?

Nahoru Odpovědět
4.8.2015 22:02
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Odpovídá na 666responsible
Martin Konečný (pavelco1998):4.8.2015 22:14

Přijde mi to nějaký zvláštní... mysqli::query() vrací FALSE při neúspěchu. Při SELECT statements to vrací objekt třídy mysqli_result.
Když funguje

while ($row = $result->fetch_array())

pak musí fungovat i

var_dump($result->fetch_array());

zkus ještě po tom query dotazu hodit

echo $mysqli->error;
Nahoru Odpovědět
4.8.2015 22:14
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
666responsible:4.8.2015 22:30

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(SELECT nazov, popis, id_show FROM shows) as son s.id_show = p.id_show' at line 1

Fatal error: Call to a member function fetch_array() on boolean in C:\xampp\htdoc­s\LaKomika\sub­s\program.php on line 52
>
Toto už vyzerá lepšie :-D "výsledky" sú prog_datum, nazov, popis :) neviem ako správne nazvať :)

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
4.8.2015 22:30
Avatar
666responsible:4.8.2015 22:49

Mám to :) :) ďakujem moc za pomoc :)
celý zdroják má vyzerať takto :

     $vyber1 = "SELECT p.prog_datum, s.nazov, s.popis, s.id_show
                 FROM program as p
                 JOIN (SELECT nazov, popis, id_show FROM shows) as s
                 on s.id_show = p.id_show ";
     $result = $mysqli->query($vyber1);

     echo $mysqli->error;
    $i=1;
     while( $row = $result->fetch_array(MYSQLI_NUM)){
   if($i>1){echo "<tr>".PHP_EOL;}
   echo"<td>".$row[0]."</td>".PHP_EOL;
   echo "<td>".$row[1]."</td>".PHP_EOL;
   echo "<td>".$row[2]."</td>".PHP_EOL;
   if($i>1){echo "</tr>".PHP_EOL;}
   $i++;

}

taká drobnosť, ten select bralo ako jeden riadok keď som odstránil spojenia

"."

"SELECT prog_datum, nazov, popis "
                        . "FROM program as p"
                        . "JOIN (SELECT nazov, popis, id_show FROM shows) as s"
                    . "on s.id_show = p.id_show ";

tak to šlo. Dík aj za

echo $mysqli->error;

Konečne som našiel to, čo robilo "čurbes" :)

 
Nahoru Odpovědět
4.8.2015 22:49
Avatar
Odpovídá na 666responsible
Martin Konečný (pavelco1998):4.8.2015 22:51

A když takhle stejný dotaz hodíš rovnou do DB třeba přes adminer, tak to jde?
Neznám nazpaměť přesné způsoby použití JOIN, ale to "as s" bych zkusil hodit ještě do tý závorky.
Případně to napsat nějak takto

SELECT p.prog_datum, p.nazov AS nazevProgramu, p.popis AS popisProgramu, s.nazov AS nazevShows, s.popis AS popisShow, s.id_show
FROM program AS p
LEFT JOIN shows AS s ON p.id_show = s.id_show

ale radši ať ti to zodpoví někdo zkušenější

Nahoru Odpovědět
4.8.2015 22:51
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 16 zpráv z 16.