Zgubiłem się w arrayu..

0

Witam. Problem polega na tym, że już 3 dzień męcze Arraye i teraz to już totalnie się pogubiłem..

Mój array wygląda mniej więcej tak:

Array
(
[id] => Array
(
[0] => 239
[1] => 243
[2] => 267
)
)

i jest to $_POST['id']..

Teraz najgłupsze pytanie, kompletnie zgubionego chłopaka. Jak to zforeachować..?

Dzięki z góry. Pozdrawiam.

1
foreach($_POST['id'] as $test){
print($test);
} 

a najlepiej posta przypisz do zmiennej. ale to wciaz nie tlumaczy z czym masz problem czego nie wyjasnil ci ten "3 dniowy kurs" PHP :)

lub bardzo poprawnie:

foreach($_POST['id'] as $key => $value) {
    echo $key, ' => ', $value, '<br />';
} 
0

Sprawa ma się tak, że postuje dane do PHP przez jQuery POST. Wszystko ma się dobrze, bo array jest dobrze wyprintowany:

print_r($_POST);

global $mysqli,$db_table_prefix;
foreach($_POST['id'] as $pictureID)
{
	$filename = '';
	$_pictureID = (int)$pictureID;
	echo $_pictureID;

	//reszta kodu
}

Natomiast samo echo, podaje tylko ID pierwszej wartości z arraya, w tym przypadku 3 razy zostanie podane 239.

Huh. Wyprintowałem samo $pictureID - ID są wtedy podawane po kolei. Jakim prawem więc, (int) wraca do pierwszej wartości z arraya?

1

robisz cos jeszcze czego nie pokazujesz

http://ideone.com/pmD2a7

0

Kończą mi się pomysły.. Array niby jest postowany dobrze, ale foreach ogranicza się do przeprowadzenia operacji tylko na jednym ID..

<?php

require_once("models/config.php");
if(!securePage($_SERVER['PHP_SELF'])){die();}

if(!isUserLoggedIn()) { die(); }

if(!isset($_POST)) { die(); }

global $mysqli,$db_table_prefix;
foreach($_POST['id'] as $pictureID)
{
	print($pictureID);
	$filename = '';
	$stmt = $mysqli->prepare("SELECT name FROM ".$db_table_prefix."files WHERE id=? and uid=?");
	$stmt->bind_param("ii", $pictureID, $loggedInUser->user_id);
	$stmt->execute();
	$stmt->store_result();
	$num_returns = $stmt->num_rows;
	$stmt->bind_result($filename);
	$stmt->fetch();
	$stmt->close();

	if($num_returns)
	{
		$stmt = $mysqli->prepare("DELETE FROM ".$db_table_prefix."files WHERE id=? and uid=?");
		$stmt->bind_param("ii", $pictureID, $loggedInUser->user_id);
		$stmt->execute();
		$stmt->close();
		unlink($uploadDirectory . $loggedInUser->user_dir . '/' . $filename);
		unlink($uploadDirectory . $loggedInUser->user_dir . '/' . add_miniature($filename));
		return true;
	}
	else
	{
		return false;
	}
}
?>

Any idea? :X

1

jedna idea, wiesz co robia te return true i return false z twoim foreachem?? koncza go. wiec zawsze po pierwsyzm elemencie foreach sie zakonczy. zreszta to logiczne, bo jak ma zwrocic true dla pierwszego i dajmy na to false dla drugie i potem znowu true dla trzeciego. zwracaj true gdy wszystko pojdzie pomyslnie, wtedy ustaw jakas flage dla tymczasoowej wartosci zwrotu, ew zwroc tablice z wynikami true i false dla kazdego elementu.

0
szalonyfacet napisał(a):

jedna idea, wiesz co robia te return true i return false z twoim foreachem?? koncza go. wiec zawsze po pierwsyzm elemencie foreach sie zakonczy. zreszta to logiczne, bo jak ma zwrocic true dla pierwszego i dajmy na to false dla drugie i potem znowu true dla trzeciego. zwracaj true gdy wszystko pojdzie pomyslnie, wtedy ustaw jakas flage dla tymczasoowej wartosci zwrotu, ew zwroc tablice z wynikami true i false dla kazdego elementu.

LOL. Ślepy jestem, dzięki wielkie! Kocham Cię!

1 użytkowników online, w tym zalogowanych: 0, gości: 1