Programovacie jazyky, rady, poradňa...
MaťoMego
Amateur
Príspevky: 22 Registrovaný: 18 dec 2014, 18:46
Kontaktovať používateľa:
Príspevok
od používateľa MaťoMego » 13 mar 2015, 16:56
Ahojte, vypisujem údaje z db (link
https://m.ak.fbcdn.net/sphotos-h.ak/hph ... 53fe9a6af5 ) .. riadky vypisujem vo while.. stĺpec družstvo vypisujem tiež vo while, no tento druhý while mi ide len v tom prvom riadku a nejde vo všetkých. Pomôžete mi prosím?
Kód: Vybrať všetko
<table>
...
while ($row = mysql_fetch_assoc($result)) {
echo '<tr><td>'.$row['vys_poradie'].'</td>';
echo '<td><select name="id_dhz">';
echo "<option value=''>----</option>";
while ($row_timy = mysql_fetch_assoc($timy_res)) {
echo '<option value="'.$row_timy['id_dhz'].'"'. ( $row_timy['id_dhz'] == $row['vys_tim'] ? 'selected="selected"' : '' ) . '">'.$row_timy['tim']. '</option>';
}
echo '</select></td>';
echo '<td><input type="text" name="usr_time" value="'.$row['vys_tim_pripona'].'" /></td>';
echo '<td><input type="time" name="usr_time" value="'.$row['vys_1pokus'].'" /></td>';
echo '<td><input type="time" name="usr_time" value="'.$row['vys_2pokus'].'" /></td>';
echo '<td><input type="text" name="usr_time" value="'.$row['vys_bodyzakolo'].'" /></td>';
}
</table>
*****HERO*****
Guru wannabe
Príspevky: 2446 Registrovaný: 08 máj 2006, 1:34
Príspevok
od používateľa *****HERO***** » 13 mar 2015, 18:46
funkcia mysql_fetch_assoc posunie pointer resultu ($timy_res) o riadok dopredu a vsetky riadky sa vlastne vycapuju uz pri prvom loope
ten hvniezdneny loop vyber von, vysledky si pred tym vypisovanim napln do pola a vnutri uz ti staci prechadzat to pole
MaťoMego
Amateur
Príspevky: 22 Registrovaný: 18 dec 2014, 18:46
Kontaktovať používateľa:
Príspevok
od používateľa MaťoMego » 13 mar 2015, 19:03
*****HERO***** napísal:funkcia mysql_fetch_assoc posunie pointer resultu ($timy_res) o riadok dopredu a vsetky riadky sa vlastne vycapuju uz pri prvom loope
ten hvniezdneny loop vyber von, vysledky si pred tym vypisovanim napln do pola a vnutri uz ti staci prechadzat to pole
takže, na naplnenie:
Kód: Vybrať všetko
$timy = 'SELECT * FROM teams ORDER BY tim';
$timy_res = mysql_query($timy, $db) or die(mysql_error());
$pole = array();
while ($row_timy = mysql_fetch_assoc($timy_res)) {
$pole[] = $row_timy;
}
a potom ten select bude ako prosím ťa vypadať z tou premennou? Bude to asi viacrozmerné pole, len neviem to napisať
Kód: Vybrať všetko
echo "<select>";
echo "<option value=''>----</option>";
echo '<option value="'.$pole['id_dhz'].'">'.$pole['tim'].'</option>';
echo '</select>';
*****HERO*****
Guru wannabe
Príspevky: 2446 Registrovaný: 08 máj 2006, 1:34
Príspevok
od používateľa *****HERO***** » 13 mar 2015, 19:09
naplnenie pola mas dobre, ale vypisat to musis tiez cyklom
Kód: Vybrať všetko
echo "<select>";
echo "<option value=''>----</option>";
foreach($pole as $row_timy){
echo '<option value="'.$row_timy['id_dhz'].'"'. ( $row_timy['id_dhz'] == $row['vys_tim'] ? 'selected="selected"' : '' ) . '">'.$row_timy['tim']. '</option>';
}
echo '</select>';
MaťoMego
Amateur
Príspevky: 22 Registrovaný: 18 dec 2014, 18:46
Kontaktovať používateľa:
Príspevok
od používateľa MaťoMego » 13 mar 2015, 19:20
*****HERO***** napísal:naplnenie pola mas dobre, ale vypisat to musis tiez cyklom
Kód: Vybrať všetko
echo "<select>";
echo "<option value=''>----</option>";
foreach($pole as $row_timy){
echo '<option value="'.$row_timy['id_dhz'].'"'. ( $row_timy['id_dhz'] == $row['vys_tim'] ? 'selected="selected"' : '' ) . '">'.$row_timy['tim']. '</option>';
}
echo '</select>';
Ďakujem, fachčí to. Ešte by som mal jednu otázku, ak tam budem chcieť UPDATE tabuľku, napr aj 20 riadkov naraz tak ako? To asi nebude cez klasicky dotaz, či?
MaťoMego
Amateur
Príspevky: 22 Registrovaný: 18 dec 2014, 18:46
Kontaktovať používateľa:
Príspevok
od používateľa MaťoMego » 14 mar 2015, 13:38
*****HERO***** napísal:UPDATE upravi vsetky riadky vyhovujuce podmienke
Mám tú podmienku, aby mi upravilo tri riadky. No nefunguje to.
Kód: Vybrať všetko
if($_POST['aktualizovat']){
for($u=1; $u <= 3; $u++ ){
$aktualizovat = 'UPDATE vysledky SET vys_tim="'.$id_dhz.'" WHERE vys_poradie = "'.$u.'"';
$aktualizovat_res = mysql_query($aktualizovat,$db) or die (mysql_error($db));
if($aktualizovat_res){
header("Location: /administracia/vysledky/pridat/".$_GET['uroven3']."/".$_GET['uroven4']."/");
}else{
echo "chyba";
}
}
}
*****HERO*****
Guru wannabe
Príspevky: 2446 Registrovaný: 08 máj 2006, 1:34
Príspevok
od používateľa *****HERO***** » 14 mar 2015, 13:59
tak pravdepodobne tam nieco nebude v poriadku, ak to teda nefunguje
najprv si premysli, ci ten dopyt musis fakt vykonavat cyklom alebo by nesiel napisat tak, aby ho stacilo vykonat raz
MaťoMego
Amateur
Príspevky: 22 Registrovaný: 18 dec 2014, 18:46
Kontaktovať používateľa:
Príspevok
od používateľa MaťoMego » 14 mar 2015, 14:12
*****HERO***** napísal:tak pravdepodobne tam nieco nebude v poriadku, ak to teda nefunguje
najprv si premysli, ci ten dopyt musis fakt vykonavat cyklom alebo by nesiel napisat tak, aby ho stacilo vykonat raz
Teraz som to skúšal len s 3 riadkami.. inak sa tam uploadovať min 20+ riadkov, tak iná možnosť ma nenapadá
*****HERO*****
Guru wannabe
Príspevky: 2446 Registrovaný: 08 máj 2006, 1:34
Príspevok
od používateľa *****HERO***** » 14 mar 2015, 14:47
no jelikoz iterujes 1 <= 3, tak co tak napisat tu query takto a ziadny for tam mat nemusis?
Kód: Vybrať všetko
$aktualizovat = 'UPDATE vysledky SET vys_tim="'.$id_dhz.'" WHERE vys_poradie <= 3';
ale to je len kozmeticka uprava. ak ti to nefunguje, problem bude inde. neviem ale co ako kde ti nefunguje, takze proste postupne debuguj
audiotrack
VIP
Príspevky: 25958 Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:
Príspevok
od používateľa audiotrack » 15 mar 2015, 11:33
Problem je v tom, ze v cykle mas aj ten header a tak po update prveho presmerujes satranku inde a zvysne dva sa nevykonaju. Header daj az za cyklus.
MaťoMego
Amateur
Príspevky: 22 Registrovaný: 18 dec 2014, 18:46
Kontaktovať používateľa:
Príspevok
od používateľa MaťoMego » 15 mar 2015, 12:01
audiotrack napísal:Problem je v tom, ze v cykle mas aj ten header a tak po update prveho presmerujes satranku inde a zvysne dva sa nevykonaju. Header daj az za cyklus.
Vdaka.. inak mám další problém.. ako je tam družstvo, tak mi vždy vypíše podla posledného (čiže ak vyplním tie tri polia, a v poslednom bude NIECO.. tak to niečo mi vypíše NIECO pre každé ).. a to nechcem.. potrebujem vypisovať takýmto štýlom: poradie 1 - druzstvo X, poradie 2 - druzstvo Z, atď .. teraz mi dáva ku každému to isté družstvo..
Kód: Vybrať všetko
<?php
while ($row = mysql_fetch_assoc($result)) {
?>
<tr><td><?php echo $row['vys_poradie']; ?></td>
<td><select name="id_dhz">
<option value="">----</option>
<?php foreach($pole as $row_timy){
echo '<option value="'.$row_timy['id_dhz'].'"'. ( $row_timy['id_dhz'] == $id_dhz ? 'selected="selected"' : '' ) . '">'.$row_timy['tim']. '</option>';
}?>
</select></td>
<td><input type="text" name="pripona" value="<?= $pripona ?>" /></td>
<td><input type="time" name="pokus1" value="<?= $pokus1 ?>" /></td>
<td><input type="time" name="pokus2" value="<?= $pokus2 ?>" /></td>
<td><input type="text" name="body_zakolo" value="<?= $body_zakolo ?>" /></td>
<?php
}
?>
</tbody></table>
<button type="submit" name="aktualizovat" value="submit" class="pure-button-primary"><i class="fa fa-plus-circle"></i> Aktualizovať</button>
</form>
<?php
if($_POST['aktualizovat']){
for($u=1; $u <= 3; $u++ ){
/*$aktualizovat = 'UPDATE vysledky SET vys_tim="'.$id_dhz.'" WHERE vys_poradie = "'.$u.'"';
$aktualizovat_res = mysql_query($aktualizovat,$db) or die (mysql_error($db));*/
echo $u." + ".$id_dhz."<br/>";
}
if($aktualizovat_res){
echo "header";
//header("Location: /administracia/vysledky/pridat/".$_GET['uroven3']."/".$_GET['uroven4']."/");
}else{
echo "chyba";
}
}
audiotrack
VIP
Príspevky: 25958 Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:
Príspevok
od používateľa audiotrack » 16 mar 2015, 7:50
ja ti tam žiaden taký výpis nevidím, máš tam nejaké selecty, nejaké headre a podobne v echu, ale nič také čo si napísal. Skús byť konkrétnejší v ktorej časti kodu z toho čo si dal je akože ten výpis