Skocz do zawartości
  • Zarejestruj się
  • 0
TENAZ

Po kliknięciu w button wyślij zapytanie.

Pytanie

Witam,

Mam coś takiego:

$test_delete =  \IPS\Db::i()->query("DELETE FROM `test_test` WHERE id=3");

I podczas wchodzenia na stronę wykonuje to polecenie i jest wszystko OK, lecz chciałbym, aby wykonywało to zapytanie po kliknięciu w button.

W IPS Dev. znalazłem przykład czegoś takiego, lecz nie wiem jak to przerobić na to, co chcę uzyskać:

;( function($, _, undefined){
	"use strict";
	
	ips.controller.register('plugins.globalMessageDismiss', {
	
		initialize: function () {
			this.on( document, 'click', '[data-action="dismiss"]', this.dismiss );
		},
		
		dismiss: function (e) {
			e.preventDefault();
			var url = $( e.currentTarget ).attr('href');
			var message = $(this.scope);
			
			ips.getAjax()(url).done(function(){
				ips.utils.anim.go( 'fadeOut', message );
			}).fail(function(){
				window.location = url;
			});
		}

	});
}(jQuery, _));

Z góry dzięki za odpowiedź!

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

15 odpowiedzi na to pytanie

Polecane posty

  • 0
$test_delete =  \IPS\Db::i()->delete('test_test', [ 'id=?', 3 ]);

zrób formularz z działaniem na dany plik php (ten plik wykona się po zatwierdzeniu formularza) i w tym pliku dodaj

<?php

require_once __DIR__.'/init.php';

\IPS\Db::i()->delete('test_test', [ 'id=?', 3 ]);

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

@naXe patrz, mam coś takiego:

$test_delete =  \IPS\Db::i()->delete('test_test', [ 'id=?', 3 ]);

I w szablonie mam wpisane:

{$test_delete}

I chcę zrobić, aby po kliknięciu tego buttona wysłało to zapytanie, bo tak to, gdy wejdę na stronę to od razu wykonuje to zapytanie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0
15 godzin temu, naXe napisał:

zrób formularz z działaniem na dany plik php (ten plik wykona się po zatwierdzeniu formularza) i w tym pliku dodaj



 

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

@naXe masz gdzieś jakiś poradnik, jak uzyskać takie coś? Bo przeglądam całe dev. i nic takiego nie widzę, aby do kodu wpisać coś takiego, aby działało razem z plikiem php.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

@naXe @Spanner Mam takie coś:

<input type='submit' name='submit' value='submit' class='fa fa-times fa-2x'>

I chcę, aby po kliknięciu na niego wykonało się zapytanie:

$id = \IPS\Db::i()->select( 'id', 'test_test2' )->first();
$submit = \IPS\Db::i()->delete('test_test', [ 'id=?', $id ]);

Tylko nie działa na button, ale jak odświeżę stronę to automatycznie usunie się samo.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

A nie możesz czegoś takiego zrobić?

$form = new \IPS\Helpers\Form;

if( ( $values = $form->values() ) !== false )
{
$id = \IPS\Db::i()->select( 'id', 'test_test2' )->first();
$submit = \IPS\Db::i()->delete('test_test', [ 'id=?', $id ]);
}

 \IPS\Output::i()->output = $form;

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

@Spanner po wpisaniu tego kodu do pętli:

	foreach(\IPS\Db::i()->select( '*', 'test_test' ) as $test2)
		{
			$test[] = $test2;
			$form = new \IPS\Helpers\Form;

			if( ( $values = $form->values() ) !== false )
			{
			$id = \IPS\Db::i()->select( 'id', 'test_test2' )->first();
			$submit = \IPS\Db::i()->delete('test_test', [ 'id=?', $id ]);
			}
		}
\IPS\Output::i()->output = $form;

I po dodaniu w szablonie: {$form} wyświetla się: Array

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Ale why w pętli to robisz? jak chcesz przez pętle to ten przycisk niech kieruje do jakiejś akcji w kontrolerze, która będzie usuwać, bo to jest bez sensu co chcesz zrobić

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

@Spanner Chciałem, aby pobierało id z bazy danych z danej kolumny i usuwało cały wpis, ale nawet po wyrzuceniu z pętli tego kodu jest nadal Array

Edytowano przez TENAZ

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Jak dasz tak:

$form = new \IPS\Helpers\Form;

			if( ( $values = $form->values() ) !== false )
			{
			$id = \IPS\Db::i()->select( 'id', 'test_test2' )->first();
			$submit = \IPS\Db::i()->delete('test_test', [ 'id=?', $id ]);
			}
		
\IPS\Output::i()->output = (string) $form;

to na pewno nie ma żadnego array.

 

Ale to co robisz tutaj jest bez sensu, bo dla każdego rekordu w tabeli test_test pobierasz pierwszy element z tabeli test_test2, który nota bene może rzucić wyjątek i wszystko się wywali, i usuwa z tabeli test_test rekord o tym ID. To nie ma sensu

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

@Spanner źle podałem, jest tak:

$form = new \IPS\Helpers\Form;

			if( ( $values = $form->values() ) !== false )
			{
			$id = \IPS\Db::i()->select( 'id', 'test_test' )->first();
			$submit = \IPS\Db::i()->delete('test_test', [ 'id=?', $id ]);
			}
		
\IPS\Output::i()->output = (string) $form;

id jest w tym samym co submit, na PW wysłałem dokładny kod jaki mam.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

ok, zerkne, ale to i tak nic nie zmienia :P

\IPS\Output::i()->output = (string) $form;
		\IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'tabela', 'tabela', 'front' )->tabelapokaz($allserv, $allserv2, $form);

No ale do outputa najpierw wysyłasz $form a później do szablonu też przekazujesz $form.

Już mniej więcej czaje co chcesz zrobić. Skoro to jest acp to ogarnij to tabelą :)

$table = new \IPS\Helpers\Table\Db( 'tabela_w_bazie', \IPS\Http\Url::internal( '...' ) );
	    
	    $table->include = array( 'kolumna1', 'kolumna2', 'kolumnax' );
	    $table->mainColumn = 'kolumna1';
	    
	    /* Sort stuff */
	    $table->sortBy = $table->sortBy ?: 'kolumna1';
	    $table->sortDirection = $table->sortDirection ?: 'asc';
	    
	    /* Search */
	    $table->quickSearch = 'kolumna1';
	    

	    /* Formatters */
	    $table->parsers = array(
	            'kolumna1'			=> function( $val, $row )
	            {
	                return $row[ 'kolumna2' ] ? $row[ 'kolumna1' ] : $row[ 'kolumna3' ];
	            },
	    );
	    
	    /* Row buttons */
	    $table->rowButtons = function( $row )
	    {
	        if( \IPS\Member::loggedIn()->hasAcpRestriction( 'companydirectory', 'cities', 'companydirectory_city_delete' ) )
	        {
	            $return[ 'delete' ] = array(
	                    'icon'		=> 'times-circle',
	                    'title'		=> 'delete',
	                    'link'		=> \IPS\Http\Url::internal( '...&do=delete&id=' ) . $row[ 'id' ],
	                    'data'		=> array( 'delete' => '' ),
	            );
	        }
	        	
	        return $return;
	    };
	    
		/* Display */
	    \IPS\Output::i()->output    = \IPS\Theme::i()->getTemplate( 'global', 'core' )->block( 'title', (string) $table );

parsers'a nie musisz używać jeśli nie potrzebujesz jakoś specjalnie kolumn sformatować.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

@Spanner poleciało PW z kodem, jeżeli będziesz miał czas to zajrzyj czy jest dobry czy nie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×

Ważne informacje

W celu świadczenie usług przez nasz Serwis na najwyższym poziomie, w ramach Serwisu wykorzystujemy pliki Cookies (tzw. ciasteczka). Korzystając ze stron Serwisu IPSBEYOND.PL bez zmiany ustawień przeglądarki będą one zapisane w pamięci urządzenia. Jeżeli nie dokonacie Państwo zmiany ustawień przeglądarki internetowej to wyrażacie zgodę na zapisywanie plików Cookies.