Avatar
666responsible:

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):

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
Avatar
666responsible:

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):

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
Avatar
Odpovídá na Martin Konečný (pavelco1998)
666responsible:

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 Martin Konečný (pavelco1998)
666responsible:

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):

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
Avatar
Odpovídá na Martin Konečný (pavelco1998)
666responsible:

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 Martin Konečný (pavelco1998)
666responsible:

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):

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

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

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
Avatar
666responsible:

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  -1 4.8.2015 22:30
Avatar
666responsible:

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):

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  +1 4.8.2015 22:51
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.