Własny komponent - odswiezanie|przeladowanie strony
Wyniki 1 do 1 z 1

Temat: Własny komponent - odswiezanie|przeladowanie strony

  1. #1
    Debiutant
    Dołączył
    25-02-2009
    Wpisy
    1
    Punkty
    10

    Domyślny Własny komponent - odswiezanie|przeladowanie strony [Solved]

    Uwaga ! ---- Problem rozwiązany ---- !
    Witam,

    Jestem nowy na forum - przeszukalem je wyszukiwarka i niestety nie udalo mi sie znalezc niczego co by mi pomoglo.
    Oto moj problem:
    Tworze wlasny komponent w joomli - jestem na etapie skryptu w ramach paneli administracyjnego. Udalo mi sie stworzyc kawalek kodu ktory pobiera dane z bazy i je wyswietla( kod za chwile). Chcialbym aby po kliknieciu przycisku usun nastepowalo usuwanie (udalo sie to juz zrobic) rekordu oraz jednoczesne odswiezenie strony na ktorej nastapilo klikniecie.
    Aby jednoczesnie pojawiala sie uaktualniona lista(w tej chwili odswiezenie jest skuteczne albo przez klawisz F5 lub tez gdy zastosuje osobny przycisk <button onClick="location.reload();"> Odswiez</button> )
    - i klopot polega na tym ze nie dziala zlączenie obu funkcji jak w kodzie ponizej - usuwa poprawnie, nie odswieza(a moze i odswieza bo strona mignie ale lista sie nie uaktualnia)

    Kod PHP:
    JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_rejestracja'.DS.'tables');
        
    $table =& JTable::getInstance('rejestracja''Table');

        
    $query 'Select id FROM '.$table->getTableName();
        
    $db =& JFactory::getDBO();
        
    $db->setQuery($query);
        
    $id=$db->loadObjectList();
    function 
    usun($nr,$id,$table)
    {
        
    $table->delete($id[$nr]->id);
    }

    if(!
    count($id)) echo 'Nie ma chętnych';
    else
    {

    echo 
    '<table style="font-size: 5px; text-align: center;"> 
    <tr>
    <td colspan="2" class="poleLeft">Dane podstawowe</td>
    <td colspan="2" class="poleLeft">Adres</td>
    <td colspan="2" class="poleLeft">Kontakt</td>
    <td colspan="2" class="poleCenter">Dokument</td>
    <td colspan="2" class="poleCenter">Kategoria<br/>kursu</td>
    <td colspan="2" class="poleCenter">Dodatkowe</td>
    <td colspan="2" width="60px" height="10px" style="vertical-align: top;">Operacje</td>
    </tr>'
    ;

    for (
    $i=0;$i<count($id);$i++){
    $table->load($id[$i]->id);
    echo 
    JText::_(
    '<tr>'
        
    //tutaj pola z formularza - wszystko poprawnie smiga
        
    .'<td class="poleCenter">'
            
    .'<button onClick="edytuj(id)">Edytuj</button>'
        
    .'</td>'
        
    .'<td class="poleCenter">'
            
    .'<form name="formik" method="POST" action="index.php?option=com_rejestracja&view=lista" >'
            
    .'<input type="hidden" name="id" value="'.$id[$i]->id.'">'
            
    .'<input type="hidden" name="usun_sent" value="1" >'
            
    .'<button  type="submit" onClick="location.reload();">Usuń</button>'
            
    .'</form>'
            
    .'</td>'
                
    .'</tr>'
    );

    }
    echo 
    '</table>';

    /echo 
    JRequest::getVar('id''''post''string'JREQUEST_ALLOWRAW );
    if(
    JRequest::getVar('usun_sent''''post''string'JREQUEST_ALLOWRAW ))
    $table->delete(JRequest::getVar('id''''post''string'JREQUEST_ALLOWRAW ));
    //echo JText::_('<a href="index.php?option=com_rejestracja&view=lista">Powrot</a>');

    }

    echo (
    ''
            
    .'<form method="POST" action="index.php?option=com_rejestracja">'
            
    .'<button type="submit">Powrot</button>'
            
    .'</form>'
            
    .'<button onClick="window.location.reload();">Odśwież</button>'

    .''); 
    onClick="window.location.href=window.location.href " - to tez nie smiga...

    -----------------------------------------------------------------------------------------------------------------
    Rozwiązanie(byc moze nieprofesjonalne acz skuteczne):

    Zastosowalem przy rozwiazaniu tego nastepujacej konstrukcji: <meta http-equiv="refresh" content="0">
    Umiescilem to zaraz po usunieciu posta, o tak:
    Kod PHP:
    //....
    //kod niezmieniony dotad

    if( JRequest::getVar('usun_sent''''post''string'JREQUEST_ALLOWRAW ) )
    if( 
    $table->delete(JRequest::getVar('id''''post''string'JREQUEST_ALLOWRAW )) ) //tutaj nastepuje zmiana
    echo JText::_('<meta http-equiv="refresh" content="0">');

    //dalej bez zmian 
    Rozwiazanie przedstawione powyzej jest skuteczne aczkolwiek zostało okreslone mianem protezy.

    Zamiast niego zostalo mi zaproponowane nastepujace rozwiazanie:

    Kod PHP:
    //kod niezmieniony dotad

    if( JRequest::getVar('usun_sent''''post''string'JREQUEST_ALLOWRAW ) )
    if( 
    $table->delete(JRequest::getVar('id''''post''string'JREQUEST_ALLOWRAW )) ) //tutaj nastepuje zmiana
    header("Location: adresstrony.php");

    //dalej bez zmian 
    Pozdrawiam,
    Lukasz
    Ostanio edytowane przez elkosci : 26-02-2009 19:15 Powód: Znalezione rozwiązanie

Reguły pisania

  • Nie możesz zakładać nowych tematów
  • Nie możesz dodawać wypowiedzi
  • Nie możesz dodawać załączników
  • Nie możesz poprawiać swoich postów
  •