PHP while

Programovacie jazyky, rady, poradňa...
MaťoMego
Amateur
Amateur
Príspevky: 22
Registrovaný: 18 dec 2014, 18:46
Kontaktovať používateľa:

PHP while

Príspevok od používateľa MaťoMego »

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
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

Re: PHP while

Príspevok od používateľa *****HERO***** »

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
Amateur
Príspevky: 22
Registrovaný: 18 dec 2014, 18:46
Kontaktovať používateľa:

Re: PHP while

Príspevok od používateľa MaťoMego »

*****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
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

Re: PHP while

Príspevok od používateľa *****HERO***** »

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
Amateur
Príspevky: 22
Registrovaný: 18 dec 2014, 18:46
Kontaktovať používateľa:

Re: PHP while

Príspevok od používateľa MaťoMego »

*****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?
*****HERO*****
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

Re: PHP while

Príspevok od používateľa *****HERO***** »

UPDATE upravi vsetky riadky vyhovujuce podmienke
MaťoMego
Amateur
Amateur
Príspevky: 22
Registrovaný: 18 dec 2014, 18:46
Kontaktovať používateľa:

Re: PHP while

Príspevok od používateľa MaťoMego »

*****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
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

Re: PHP while

Príspevok od používateľa *****HERO***** »

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
Amateur
Príspevky: 22
Registrovaný: 18 dec 2014, 18:46
Kontaktovať používateľa:

Re: PHP while

Príspevok od používateľa MaťoMego »

*****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
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

Re: PHP while

Príspevok od používateľa *****HERO***** »

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
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: PHP while

Príspevok od používateľa audiotrack »

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
Amateur
Príspevky: 22
Registrovaný: 18 dec 2014, 18:46
Kontaktovať používateľa:

Re: PHP while

Príspevok od používateľa MaťoMego »

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
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: PHP while

Príspevok od používateľa audiotrack »

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
Napísať odpoveď