• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pobranie i wyświetlenie wartości z pola checkbox

VPS Starter Arubacloud
0 głosów
910 wizyt
pytanie zadane 26 września 2016 w PHP przez Tomasz Bieńko Nowicjusz (120 p.)
edycja 26 września 2016 przez Tomasz Bieńko

Dzień dobry wszystkim,

piszę sobie wtyczkę do Wordpress w php, która za zadanie ma wprowadzanie, wyświetlanie i edycję produktów. Mam pewien problem z polem checkbox - przy wprowadzaniu produktów w paru miejscach istnieje możliwość zaznaczenia jednego lub więcej checkbox'ów, np. określających przeznaczenie użytkowania.

Gdy próbuję wyświetlić przesłane z checkbox'ów dane oprócz samego stringa wyświetla mi także dodatkowy ciąg znaków jak informacja o iteracji(?), długość stringu... (obrazek poniżej)

http://ifotos.pl/z/arpearx/

Jak wyświetlić samą wartość string, czyli np. tekst "Obiekty sportowe"?

Poniżej fragmenty kodu:

//Przesyłanie danych do tablicy
function flif_propert() {
    
	if (isset($_POST["name"]) != "" ) 
	{
		global $wpdb;
		$table = $wpdb->prefix."fl_insert_floor";
		
		$name = strip_tags($_POST["name"], "");
		$description = strip_tags($_POST["description"], "");
		$obj_box = strip_tags(serialize($_POST['obj_box']));
		$material = strip_tags($_POST["material"], "");
		$producer = strip_tags($_POST["producer"], "");
		$installation = serialize($_POST['installation']);
		$characteristic = serialize($_POST['characteristic']);
		$content = strip_tags($_POST["content"], "");
		$gr_fleece = strip_tags($_POST["gr_fleece"], "");
		$gr_total = strip_tags($_POST["gr_total"], "");
		$height_total = strip_tags($_POST["height_total"], "");
		$height_fleece = strip_tags($_POST["height_fleece"], "");
		$tuft = strip_tags($_POST["tuft"], "");
		$fire_class = strip_tags($_POST["fire_class"], "");
		$sound_absorb = strip_tags($_POST["sound_absorb"], "");
		
		$wpdb->insert( 
        $table, 
        array( 
            'name' => $name,
			'obj_box' => $obj_box,
			'material' => $material,
			'producer' => $producer,
			'installation' => $installation,
			'characteristic' => $characteristic,
			'content' => $content,
			'gr_fleece' => $gr_fleece,
			'gr_total' => $gr_total,
			'height_total' => $height_total,
			'height_fleece' => $height_fleece,
			'tuft' => $tuft,
			'fire_class' => $fire_class,
			'sound_absorb' => $sound_absorb,
			'description' => $description	
        )
	);

//Wyświetlanie pól checkbox przy wprowadzaniu produktu
<label>Typ obiektu:</label></br>
			<input type="checkbox" value="Hotele i pensjonaty" name="obj_box[]" >Hotele i pensjonaty
			<input type="checkbox" value="Obiekty sportowe" name="obj_box[]" >Obiekty sportowe
			<input type="checkbox" value="Szkoły" name="obj_box[]" >Szkoły</br>
			<input type="checkbox" value="Biura" name="obj_box[]" >Biura
			<input type="checkbox" value="Domy i mieszkania" name="obj_box[]" >Domy i mieszkania
			<input type="checkbox" value="Kina, teatry, restauracje" name="obj_box[]" >Kina, teatry, restauracje</br>
			<input type="checkbox" value="Wojsko, policja" name="obj_box[]" >Wojsko, policja
			<input type="checkbox" value="Sklepy" name="obj_box[]" >Sklepy
			<input type="checkbox" value="Szpitale i służba zdrowia" name="obj_box[]" >Szpitale i służba zdrowia</br>
			<input type="checkbox" value="Przemysł" name="obj_box[]" >Przemysł
			<input type="checkbox" value="Laboratoria" name="obj_box[]" >Laboratoria
			
 
//Formularz do przeglądania wykładzin (to co jest widoczne na fotce)
function flif_browsing() {
    global $wpdb;
    $table = $wpdb->prefix . "fl_insert_floor";
		
	$result = $wpdb->get_results("SELECT * FROM `wp_fl_insert_floor`") or die('Error3');
	 echo '<table summary="Properties" id="table1">';
	 echo '<tr>';
	 echo '<td><b>ID</b></td>';
	 echo '<td><b>Nazwa</b></td>';
	 echo '<td><b>Edytuj</b></td>';
	 echo '<td><b>Typ obiektu</b></td>';
	 echo '<td><b>Materiał</b></td>';
	 echo '<td><b>Producent</b></td>';
	 echo '<td><b>Opis</b></td>';
	 echo '<td><b>Instalacja</b></td>';
	 echo '<td><b>Charakterystyka</b></td>';
	 echo '<td><b>Skład</b></td>';
	 echo '<td><b>Gramatura runa</b></td>';
	 echo '<td><b>Gramatura całkowita</b></td>';
	 echo '<td><b>Wysokość runa</b></td>';
	 echo '<td><b>>Wysokość całkowita</b</td>';
	 echo '<td><b>Ilość pętli</b></td>';
	 echo '<td><b>Klasa palności</b></td>';
	 echo '<td><b>Absorbcja dźwięku</b></td>';
	 echo '</tr>';
        foreach ($result as $result) {
            echo '<tr>';
			echo '<td>'.$get_object_id = $result->id.'</td>';
			echo '<td>'.$get_object_id = $result->name.'</td>';
			echo '<td><a href="">[klik!]</a></td>';
			echo '<td>'.$get_object_id = $result->obj_box.'</td>';
			echo '<td>'.$get_object_id = $result->material.'</td>';
			echo '<td>'.$get_object_id = $result->producer.'</td>';
			echo '<td>'.$get_object_id = $result->description.'</td>';
			echo '<td>'.$get_object_id = $result->installation.'</td>';
			echo '<td>'.$get_object_id = $result->characteristic.'</td>';
			echo '<td>'.$get_object_id = $result->content.'</td>';
			echo '<td>'.$get_object_id = $result->gr_fleece.'</td>';
			echo '<td>'.$get_object_id = $result->gr_total.'</td>';
			echo '<td>'.$get_object_id = $result->height_total.'</td>';
			echo '<td>'.$get_object_id = $result->height_fleece.'</td>';
			echo '<td>'.$get_object_id = $result->tuft.'</td>';
			echo '<td>'.$get_object_id = $result->fire_class.'</td>';
			echo '<td>'.$get_object_id = $result->sound_absorb.'</td>';
			echo '</tr>';
			echo '</br>';
       }
	   echo '</table>';
} 

 

komentarz 26 września 2016 przez Boshi VIP (100,240 p.)
jaki dodatkowy string? w typ obiektu?
komentarz 26 września 2016 przez Tomasz Bieńko Nowicjusz (120 p.)
chcę żeby wyświetlił się tylko tekst, np "Obiekty sportowe"
1
komentarz 26 września 2016 przez Boshi VIP (100,240 p.)
no to skoro serializujesz to je unserjalizuj...
komentarz 26 września 2016 przez Tomasz Bieńko Nowicjusz (120 p.)
no tak... dzięki!
komentarz 27 września 2016 przez Tomasz Bieńko Nowicjusz (120 p.)

Próbowałem unserializować zmienną $result w 61 wierszu, ale wywala mi błąd że oczekiwany jest string, zmienna ta jest tablicą, co ma sens w sumie. Więc próbowałem unserializować z tej tablicy $result pojedyncze zmienne, które były przekazane checkboxem i serializowane wcześniej
 

foreach ($result as $result1) {
            echo '<tr>';
			echo '<td>'.$get_object_id = unserialize($result1->obj_box).'</td>';
            echo '</tr>';
       }
	   echo '</table>';

Dostaję Notice: Array to string conversion i w komórce zamiast wartości np. "Obiekty sportowe", sam napis 'Array'.

Serializowałem w sumie zmienną:
 

$obj_box = serialize($_POST['obj_box']);

Wiec już chyba wiem co robię źle, ale wszelkie sugestie i pomoc mile widziana.

1 odpowiedź

0 głosów
odpowiedź 27 września 2016 przez Boshi VIP (100,240 p.)
Serializujesz tablicę więc nie możesz odserializować poszczególnych danych tablicowych tylko całą tablicę.
komentarz 28 września 2016 przez Tomasz Bieńko Nowicjusz (120 p.)

Próbuję unserializować tę tablicę ale bez powodzenia, poniżej wrzucam kod. Jeżeli byłbyś skłonny rzucić okiem i pomóc. Jestem laikiem jeżeli chodzi o php, dopiero się uczę więc proszę o wyrozumiałość :)

function wp_wykladziny_init()
{
wp_register_style('wp-wykladziny-css', plugins_url('style.css', __FILE__));
wp_enqueue_style('wp-wykladziny-css');
}
add_action('init', 'wp_wykladziny_init');
	
define( 'FLIF_PATH', plugin_dir_path( __FILE__ ) );
require FLIF_PATH.'flif_model.php';

defined( 'ABSPATH' ) or die( 'Nie podłączaj mi się tu tym swoim zawirusowanym skryptem!!' );

/* Tworzy tabelę bazy danych dla wtyczki */

function flif_install() {
	global $wpdb;
    $table = $wpdb->prefix . "fl_insert_floor";
	$charset_collate = $wpdb->get_charset_collate();
	
	$sql = "CREATE TABLE IF NOT EXISTS $table (
        `id` mediumint(9) NOT NULL AUTO_INCREMENT,
        `name` text NOT NULL, UNIQUE (`id`),
	`obj_box` text NOT NULL,
	`material` text NOT NULL,
	`producer` text NOT NULL,
	`installation` text NOT NULL,
	`characteristic` text NOT NULL,
	`content` text NOT NULL,
	`gr_fleece` text NOT NULL,
	`gr_total` text NOT NULL,
	`height_total` text NOT NULL,
	`height_fleece` text NOT NULL,
	`tuft` text NOT NULL,
	`fire_class` text NOT NULL,
	`sound_absorb` text NOT NULL,
	`description` text NOT NULL
	
	) $charset_collate;";
	require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
	dbDelta( $sql );
}

register_activation_hook(__FILE__, 'flif_install');

/** * Dodawanie wtyczki do panelu administracyjnego */
function flif_plugin_menu() {
    add_menu_page('Wykładziny', 'Wykładziny', 'administrator', 'flif_settings', 'flif_display_settings');
    add_submenu_page('flif_settings', __('Wprowadź produkt'), __('Wprowadź produkt'), 'edit_themes', 'flif_propert', 'flif_propert');
	add_submenu_page('flif_settings', __('Przeglądaj wykładziny'), __('Przeglądaj wykładziny'), 'edit_themes', 'flif_browsing', 'flif_browsing');
}
add_action('admin_menu', 'flif_plugin_menu');


 // Wyswietla formularz dodawania produktu do bazy

function flif_propert() {
    
	if (isset($_POST["name"]) != "" ) 
	{
		global $wpdb;
		$table = $wpdb->prefix."fl_insert_floor";
		
		$name = strip_tags($_POST["name"], "");
		$description = strip_tags($_POST["description"], "");
		$obj_box = serialize($_POST['obj_box']); //wrzuca tablice do jednego rekordu w tabeli mysql
		$material = strip_tags($_POST["material"], "");
		$producer = strip_tags($_POST["producer"], "");
		$installation = serialize($_POST['installation']);
		$characteristic = serialize($_POST['characteristic']);
		$content = strip_tags($_POST["content"], "");
		$gr_fleece = strip_tags($_POST["gr_fleece"], "");
		$gr_total = strip_tags($_POST["gr_total"], "");
		$height_total = strip_tags($_POST["height_total"], "");
		$height_fleece = strip_tags($_POST["height_fleece"], "");
		$tuft = strip_tags($_POST["tuft"], "");
		$fire_class = strip_tags($_POST["fire_class"], "");
		$sound_absorb = strip_tags($_POST["sound_absorb"], "");
		
		$wpdb->insert( 
        $table, 
        array( 
            'name' => $name,
			'obj_box' => $obj_box,
			'material' => $material,
			'producer' => $producer,
			'installation' => $installation,
			'characteristic' => $characteristic,
			'content' => $content,
			'gr_fleece' => $gr_fleece,
			'gr_total' => $gr_total,
			'height_total' => $height_total,
			'height_fleece' => $height_fleece,
			'tuft' => $tuft,
			'fire_class' => $fire_class,
			'sound_absorb' => $sound_absorb,
			'description' => $description
        )
	);	
}

add_shortcode('flif-db-insert', 'flif_insert_into_db');
 
    echo '<h2>' . __('Wprowadż wykładzinę') . '</h2>';
    echo '<form action="?page=flif_propert" method="post">
		
		<label for="name">Nazwa</label><input name="name" type="text" style="width: 50%;" value="" >
		</br></br>
		
		<label for="producer">Producent</label>
		<select name = "producer"> 
			<option>Altro</option>
			<option>Balsan</option>
			<option>Burmatex</option>
			<option>Fatra</option>
			<option>Forbo</option>
			<option>Ideal</option>
			<option>Lano</option>
			<option>Lentex</option>
			<option>Modulyss</option>
			<option>Tarkett</option>
			<option>Tecsom</option>
			<option>Timzo</option>
			<option>...inny</option>
		</select>
		</br></br>
		
		<label>Typ obiektu:</label></br>
			<input type="checkbox" value="Hotele i pensjonaty" name="obj_box[]" >Hotele i pensjonaty
			<input type="checkbox" value="Obiekty sportowe" name="obj_box[]" >Obiekty sportowe
			<input type="checkbox" value="Szkoły" name="obj_box[]" >Szkoły</br>
			<input type="checkbox" value="Biura" name="obj_box[]" >Biura
			<input type="checkbox" value="Domy i mieszkania" name="obj_box[]" >Domy i mieszkania
			<input type="checkbox" value="Kina, teatry, restauracje" name="obj_box[]" >Kina, teatry, restauracje</br>
			<input type="checkbox" value="Wojsko, policja" name="obj_box[]" >Wojsko, policja
			<input type="checkbox" value="Sklepy" name="obj_box[]" >Sklepy
			<input type="checkbox" value="Szpitale i służba zdrowia" name="obj_box[]" >Szpitale i służba zdrowia</br>
			<input type="checkbox" value="Przemysł" name="obj_box[]" >Przemysł
			<input type="checkbox" value="Laboratoria" name="obj_box[]" >Laboratoria
			</br></br>
		
		<label for="material">Materiał wykonania</label>
		<select name = "material"> 
			<option>Dywanowa</option>
			<option>PVC Homogeniczna</option>
			<option>PVC Heterogeniczna</option>
			<option>Winylowa LVT</option>
			<option>Linoleum</option>
		</select>
		
		</br></br>
		<label>Instalacja:</label></br>
			<input type="checkbox" value="Rolka" name="installation[]" >Rolka
			<input type="checkbox" value="Płytka" name="installation[]" >Płytka
			<input type="checkbox" value="Panel" name="installation[]" >Panel
			</br></br>
			
		<label>Charakterystyka:</label></br>
			<input type="checkbox" value="Redukcja dźwięków" name="characteristic[]" >Redukcja dźwięków
			<input type="checkbox" value="Bakteriostatyczna" name="characteristic[]" >Bakteriostatyczna
			<input type="checkbox" value="Antypoślizgowa" name="characteristic[]" >Antypoślizgowa
			<input type="checkbox" value="Ognioodporna" name="characteristic[]" >Ognioodporna
			</br></br>
		
		<label for="content">Skład:</label><input name="content" type="text" style="width: 10%;" value="" >
		<label for=""></label>Gramatura runa:</label><input name="gr_fleece" type="text" style="width: 10%;" value="" ></br>
		<label for=""></label>Gramatura całkowita:</label><input name="gr_total" type="text" style="width: 10%;" value="" >
		<label for=""></label>Wysokość całkowita:</label><input name="height_total" type="text" style="width: 10%;" value="" ></br>
		<label for=""></label>Wysokość runa:</label><input name="height_fleece" type="text" style="width: 10%;" value="" >
		<label for=""></label>Ilość splotów:</label><input name="tuft" type="text" style="width: 10%;" value="" ></br>
		<label for=""></label>Klasa palności:</label><input name="fire_class" type="text" style="width: 10%;" value="" >
		<label for=""></label>Absorpcja dźwięku:</label><input name="sound_absorb" type="text" style="width: 10%;" value="" ></br>
		
		</br></br>
		<label for="name">Opis</label><textarea name="description" rows="14" cols="120" value="" ></textarea>
		</br></br><input type="submit" value="' . __('Save') . '" /></td></tr>
		</form>';
		
    echo '
       <script type="text/javascript">
        jQuery(document).ready(function($) {
        $("table .delete").click(function() {
        $(this).parent().parent().remove();
        return false;
        });
        </script>
        ';
}

 
//Formularz do przeglądania wykładzin

function flif_browsing() {
	global $wpdb;
    $table = $wpdb->prefix . "fl_insert_floor";
		
	$result = $wpdb->get_results("SELECT * FROM `wp_fl_insert_floor`") or die('Error3');
	

	 echo '<table summary="Properties" id="table1">';
	 echo '<tr>';
	 echo '<td><b>ID</b></td>';
	 echo '<td><b>Nazwa</b></td>';
	 echo '<td><b>Edytuj</b></td>';
	 echo '<td><b>Typ obiektu</b></td>';
	 echo '<td><b>Materiał</b></td>';
	 echo '<td><b>Producent</b></td>';
	 echo '<td><b>Opis</b></td>';
	 echo '<td><b>Instalacja</b></td>';
	 echo '<td><b>Charakterystyka</b></td>';
	 echo '<td><b>Skład</b></td>';
	 echo '<td><b>Gramatura runa</b></td>';
	 echo '<td><b>Gramatura całkowita</b></td>';
	 echo '<td><b>Wysokość runa</b></td>';
	 echo '<td><b>>Wysokość całkowita</b</td>';
	 echo '<td><b>Ilość pętli</b></td>';
	 echo '<td><b>Klasa palności</b></td>';
	 echo '<td><b>Absorbcja dźwięku</b></td>';
	 echo '</tr>';
		
		foreach ($result as $result1) {
			
            echo '<tr>';
			echo '<td>'.$get_object_id = $result1->id.'</td>';
			echo '<td>'.$get_object_id = $result1->name.'</td>';
			echo '<td><a href="">[klik!]</a></td>';
			echo '<td>'.$get_object_id = $result1->obj_box.'</td>';
			echo '<td>'.$get_object_id = $result1->material.'</td>';
			echo '<td>'.$get_object_id = $result1->producer.'</td>';
			echo '<td>'.$get_object_id = $result1->description.'</td>';
			echo '<td>'.$get_object_id = $result1->installation.'</td>';
			echo '<td>'.$get_object_id = $result1->characteristic.'</td>';
			echo '<td>'.$get_object_id = $result1->content.'</td>';
			echo '<td>'.$get_object_id = $result1->gr_fleece.'</td>';
			echo '<td>'.$get_object_id = $result1->gr_total.'</td>';
			echo '<td>'.$get_object_id = $result1->height_total.'</td>';
			echo '<td>'.$get_object_id = $result1->height_fleece.'</td>';
			echo '<td>'.$get_object_id = $result1->tuft.'</td>';
			echo '<td>'.$get_object_id = $result1->fire_class.'</td>';
			echo '<td>'.$get_object_id = $result1->sound_absorb.'</td>';
			echo '</tr>';
			echo '</br>';
       }
	   echo '</table>';
	   
} 

 

Podobne pytania

0 głosów
2 odpowiedzi 370 wizyt
pytanie zadane 6 października 2016 w PHP przez niezalogowany
0 głosów
1 odpowiedź 1,158 wizyt
pytanie zadane 6 września 2015 w SQL, bazy danych przez Rafik Obywatel (1,870 p.)
0 głosów
1 odpowiedź 265 wizyt

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...