Autor Zpráva
Sobky
Profil
Dobrý deň!

Mám v MySQL 2 tabulky.
Jedna vyzerá takto:
Id Name Type Permission World value
1 kód 1 Name Meno


A druhá takto:
Id Child Parent Type
1 kód Trieda 1

A ja by som potreboval vytvoríť na webe tabuľku, ktorá bude obsahovať Meno, Trieda. (to trieda je napr. VIP...). Pripojenie na MySQL a aj Tabulka vytvoriť viem. Len v tej tabulke viem už len vypísať Meno ale neviem ako dosiahnem tu Triedu, keďže by som potreboval: kód z prvej tabuľky nájde v druhej tabuľke a v nej vyhľadá aká je to trieda a napíše to do tabulky.
lionel messi
Profil
Na to bude treba použiť tzv. JOIN (ide to aj bez neho, ale na úkor prehľadnosti).

Trebárs nejako takto (môže tam byť chyba, treba odskúšať, som len amatér, ale ako modelový príklad poslúži, snáď aj funguje):

SELECT `World value`, `Parent` 
FROM `tabulka1` 
JOIN `tabulka2` ON `name` = `child`

atď., môžeš si dorobiť WHERE, alebo rozšíriť SELECT, ale toto je základ.
Sobky
Profil
diki a toto normálne napísť do toho skriptu takto? Nemá byť pred tým dáka premenná?


napríklad $query = "SELECT value, parent FROM tabulka JOIN tabulka2 ON name = child"
lionel messi
Profil
Sobky:
napríklad $query = "SELECT value, parent FROM tabulka JOIN tabulka2 ON name = child"
Samozrejme, takto to môže/má byť v kontexte PHP.

<?php
$query = "SELECT `value`,`parent` FROM `tabulka` JOIN `tabulka2` ON `name` = `child`";
mysqli_query($link, $query);
?>
Sobky
Profil
Teraz som sa dosť zamotal :D
Tak ešte raz tu je prvá tabulka

A tu je druhá tabulka:


Tak a potrebujem toto: Ak je type = 1, tak to vypíše meno čiže value. Potom to musí zistiť, že to name v prvej tabulke = child v druhej tabulke a ak hej tak to napíše to parent, ktoré je k tomu child pridelené.
Tu je moj skript:
<?php
$mysqli = new mysqli("$server", "$dbuser", "$dbpass", "$dbname");
$query = "SELECT value, parent FROM ".$tabulka." JOIN ".$table" ON name == child"; //toto neviem ako spraviť

$result = mysqli_query($mysqli, $query);

echo "<table width=100% border=1 cellpadding=3 cellspacing=0>";

echo "<tr style=\"font-weight:bold\" align=\"center\" bgcolor=\"#FF4500\">
<td>Nick</td>
<td>Druh</td>
<td>Do</td>
<td>Zostáva</td>

</tr>";

while($row = mysqli_fetch_array($result)){
if($col == "#FFFF00"){ //Farba 1. riadku
$col = "#00BFFF";     //Farba 2. riadku
}else{
$col = "#FFFF00";  //A zase farba 1. riadku
}
echo "<tr bgcolor=$col>";
echo "<td><center>".$row['value']."</center></td>"; // a tu nwm čo napísť
echo "<td><center>".$row['parent']."</center></td>"; //a ani tu
echo "</tr>";
}
echo "</table>";
?>
lionel messi
Profil
Skús takto (mimochodom, prečo v ukážke miešaš objektový a procedurálny prístup? Je to možné, ale neprehľadné), na riadku 3 si navyše mal syntaktickú chybu (chýbajúca bodka, v mojom fragmente kódu je to opravené):

<?php
$mysqli = mysqli_connect("$server", "$dbuser", "$dbpass", "$dbname");
$query = "SELECT value, parent, name, child, type FROM ".$tabulka." JOIN ".$table. " ON name = child WHERE type = 1"; //toto vyskúšaj.
 
//zvyšok tvojho kódu som nemenil
$result = mysqli_query($mysqli, $query);
 
echo "<table width=100% border=1 cellpadding=3 cellspacing=0>";
 
echo "<tr style=\"font-weight:bold\" align=\"center\" bgcolor=\"#FF4500\">
<td>Nick</td>
<td>Druh</td>
<td>Do</td>
<td>Zostáva</td>
 
</tr>";
 
while($row = mysqli_fetch_array($result)){
if($col == "#FFFF00"){ //Farba 1. riadku
$col = "#00BFFF";     //Farba 2. riadku
}else{
$col = "#FFFF00";  //A zase farba 1. riadku
}
echo "<tr bgcolor=$col>";
echo "<td><center>".$row['value']."</center></td>";
echo "<td><center>".$row['parent']."</center></td>"; 
echo "</tr>";
}
echo "</table>";
?>

Vyskúšaj tento kód (ak to nie je nevyhnutné, nijakým spôsobom ho nemeň) a ozvi sa, či funguje, želám veľa úspechov. :-)
Sobky
Profil
Nejunguje :( Napíše iba tu hornú tabulku to: NICK, Druh....
A pod tým už nič
lionel messi
Profil
Sobky:
Skús ešte túto malú zmenu:

<?php
$mysqli = mysqli_connect("$server", "$dbuser", "$dbpass", "$dbname");
$query = "SELECT * FROM ".$tabulka." JOIN ".$table. " ON child = name WHERE type = 1"; //toto vyskúšaj.
 
//zvyšok tvojho kódu som nemenil
$result = mysqli_query($mysqli, $query);
 
echo "<table width=100% border=1 cellpadding=3 cellspacing=0>";
 
echo "<tr style=\"font-weight:bold\" align=\"center\" bgcolor=\"#FF4500\">
<td>Nick</td>
<td>Druh</td>
<td>Do</td>
<td>Zostáva</td>
 
</tr>";
 
while($row = mysqli_fetch_array($result)){
if($col == "#FFFF00"){ //Farba 1. riadku
$col = "#00BFFF";     //Farba 2. riadku
}else{
$col = "#FFFF00";  //A zase farba 1. riadku
}
echo "<tr bgcolor=$col>";
echo "<td><center>".$row['value']."</center></td>";
echo "<td><center>".$row['parent']."</center></td>"; 
echo "</tr>";
}
echo "</table>";
?>
Sobky
Profil
aj tak mi to nič nevypíše :(
už som napísal jednému známemu a ten povedal že to ide tak že mi to spraví :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0