Usuwanie atrybutu disabled po spełnieniu wyrażenia regularnego

0

Cześć,
chciałbym zrobić pewną rzecz. Jak to ma wyglądać? W bazie danych mam stworzną tabelę limits a w niej kolumnę limit_photos` oraz stworzony rekord z wpisem do tej kolumny np. 10. Czyli ustawiam limit dodanych zdjęć do produktu na 10.

Póki co wstawianie zdjęcia u mnie odbwa się poprzez wprowadzenie linku bezpośredniego ze ścieżką do pliku, np. img/photos/add/photo.png

Aktualnie pobieram z bazy danych maksymalną ilość produktów z w/w tabeli i w pętli tworzę tyle inputów(pól tekstowych HTML).
Chciałbym, żeby to działało w ten sposób, że wszystkie inputy posiadają atrybut DISABLED czyli są zablokowane. Tylko pierwszy input nie posiada tego atrybutu. I teraz tak: chodzi o to, żeby jeśli zostanie wprowadzona ścieżka do pliku(zgodna z jakimś tam wyrażeniem regularnym) to, żeby z następnego inputa usunięty został atrybut DISABLED.
Na pewno musiałbym użyć JavaScript, to nie problem tylko nie do końca wiem ja się za to zabrać.

To jest cały aktualny kod w pliku testowym(normalnie mam podzielone warstwy ale dla celów prezentacji przedstawiam to w formie "wszystko w jednym")

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8"/>
	<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
	<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
	<title>Loop Inputs</title>
	<style>
		body { font-family: 'Lato', sans-serif; }
	</style>
</head>
<body>
	<?php
		try{
			$db = new PDO('mysql:host=localhost;dbname=my_database', 'my_user', 'my_password',array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
		}catch (PDOException $e){
		    echo 'Error to connect: '.$e->getLimitsMessage().'';
		    die();
		}	
	?>
	<?php
		$sql = $db->prepare("SELECT `limit_photos` FROM `limits`");
		if (!$sql->execute()) {
			print_r($sql->errorInfo());
		}else{
		   	$getLimits = $sql->fetch();
			$sql = $getLimits['limit_photos'];	
		}
	?>
	<?php
		for ($i=0; $i < $getLimits['limit_photos']; $i++) { 
			if($i == 0){
				echo '<p><input type="text" name="'.$i.'" placeholder="'.$i.'"/></p>';
			}else{ 
				echo '<p><input disabled type="text" name="'.$i.'" placeholder="'.$i.'"/></p>';
			}
		}
	?>
</body>
</html>

Ma ktoś jakiś pomysł jak to zrobić?

1

Atrybut disabled może zostać usunięty w trakcie przeglądania strony - zobacz co się z nim dzieje, gdy uzyjesz narzędzi developerskich. Pamiętaj też, że tego typu walidację powinieneś także przeprowadzić po stronie serwera.

Osobiście skupiłbym się bardziej na UI - czyli umożliwić użytkownikowi dodanie od razu 10 zdjęć/ścieżek, w przypadku fotek dodałbym do tego jakiś js'owy skrypcik, który by to jednocześnie uploadował na serwer wraz z paskami postępu. Skoro użytkownik ma możliwość dodania 10 fotek, to po co mu ograniczać po kolei te pola?

Kolejne hehe "pro-tipy" - mając 10 inputów nie ma znaczenia, czy użytkownik wsadzi fotkę w inputa nr 1 czy nr 10. W pętli robisz inputa na sztywno "input name = "0"..... po co? możesz dodać przecież input name="picturePath[]" i możesz dodawać je jak chcesz :) i ile chcesz. Aaa i jeszcze jedno, po co Ci regularne wyrażenie? mając informację img/photos/add/photo.png sprawdz po prostu czy taki plik istnieje - uprzednio zabezpieczając obszar sprawdzenie wyłącznie do folderu z fotkami. Jeśli zamiast takiego adresu wklejałbyś linki - wtedy już wystarczy jakiś validator url'a i tyle.

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