Nazwa tabeli mysql jako link.

0

Witam, nie będę się wielce rozpisywał. Łączę projekt Arduino, Mysql i Php. Stworzyłem banalny formularz który tworzy w bd "pomiary" nową tabele o podanej nazwie, następnie za pomocą ifa sprawdzam czy nazwa jest unikatowa. W obu przypadkach pod spodem wyświetlana jest lista dostępnych tabel. Monitorując temperaturę otoczenia i wilgotność chciałbym mieć dostęp do "archiwum" np. Lista tabel bd "pomiary":

*work1 -szczegóły

*work2 - szczegóły
Wyobraźcie sobie że napis "szczegóły" to link do konkretnego archiwum klikasz i masz dostępną aktualną temp i wilg z danej tabeli. Założenie: Skoro tabel może być nieskończenie wiele i są one w pętli while to jak zrobić aby link był dynamiczny i automatycznie dodawał się do każdej nowej tabeli? Można to zrobić na około tworząc nowe strony i bezpośrednio odnośnik ale czynność należało by powtarzać co jest bezsensowne. Chciałbym aby to była tylko jedna strona z dynamicznie ładowaną treścią konkretnej tabeli w którą kliknę. Jakieś pomysły ?

echo '<h1>'."Lista baz danych:".'</h1>';
	$tmp = mysqli_query($link, "SHOW TABLES from pomiar");
	 
	 echo '<table border="1" cellspacing="2" cellpadding="2">';
		echo '<tr><td>Nazwa:</td><td>Usuń:</td><td>Akcja:</td></tr>';
			while($tmp1 = mysqli_fetch_row($tmp))
			{
				echo '<tr><td>'.'- '.'<b>'.($tmp1[0]).'</b></td>';
					echo '<td>'."(-)".'</td>';
						echo '<td>'.'<a href ="./archivum.php">'."zobacz".'</td></tr>';
			}
 echo '</table>';
0

Nic nie rozumiem co Ty potrzebujesz...
kod formularza,
twój kod php sformatowany aby było coś widac..
co chcesz osiągnąć dokładnie.

0

chciałbym osiągnąć dynamiczne odnośniki do wyświetlanych tabel aby umożliwić wgląd w wyniki.

0
<?php
$nazwa = $_POST['nazwa'];

$link = mysqli_connect("localhost", "root", "", "pomiar");

if (mysqli_connect_errno()) {
		printf("Connect failed: %s\n", mysqli_connect_error());
		exit();
	}
else
{	
	if ($result = mysqli_query($link, "SHOW TABLES LIKE '$nazwa'")) {
		
		$row_cnt = mysqli_num_rows($result);
		echo("Ilość tabeli o tej samej nazwie: ".$row_cnt);
			if($row_cnt > 0){

				echo '<br />'.'<span style="color:red">'."Error: Wpis o podanej nazwie już istnieje. Zmień nazwę i ponów próbę.".'</span>';
			}
			else
				{
					$sql_insert = mysqli_query($link, 'CREATE TABLE '.$nazwa.' (`id` INT NOT NULL AUTO_INCREMENT,`time` timestamp,`sensor1` 
												float,`sensor2` float,`sensor3` float,PRIMARY KEY (id))');
			echo '<br />'.'<span style="color:green">'."Dodano poprawnie nową tabelę o nazwie: ".$nazwa.'</span>'.'<br /><hr />';
			}
		}
	}
	
	echo '<h1>'."Lista baz danych:".'</h1>';
	$tmp = mysqli_query($link, "SHOW TABLES from pomiar");
	 
	 echo '<table border="1" cellspacing="2" cellpadding="2">';
		echo '<tr><td>Nazwa:</td><td>Usuń:</td><td>Akcja:</td></tr>';
			while($tmp1 = mysqli_fetch_row($tmp))
			{
				echo '<tr><td>'.'- '.'<b>'.($tmp1[0]).'</b></td>';
					echo '<td><center>'."(-)".'</center></td>';
						echo '<td>'.'<a href ="./archivum.php">'."zobacz".'</td></tr>';
			}
 echo '</table>';

mysqli_close($link);
?>
0
<html>
<head>
	<meta charset = "UTF-8" />
	<title>Strona Główna</title>
</head>
	<body>
		<form action="engine.php" method="post">
			<input type="text" name="nazwa">
			<input type="submit" value="send">
		</form>
	</body>
</html>

0

gdy wrzucam print_r($tmp1); widzę że każdy element jest dopisany do array 0 w związku z czym wymyśliłem, że to musiało by się zmienić i gdyby każda baza danych byłą przypisana do odpowiedniego nr array wówczas można było by się do niego odnieść, a tak zostaje on po prostu nadpisany. Dobrze rozumuje?

0

Na pewno chcesz tworzyć osobne tabele a nie kolejne wiersze?? źle do tego coś podchodzisz...

0

daj coś jaśniej. Pierwszy projekt mam oparty na wierszach w pełni sprawny tylko jest wielki misz masz. Wówczas trzeba sortować wszystko. W związku z czym uznałem że chyba prościej było by jednak oprzeć na tablicach. Pabloss chciałbym abyś wydusił wreszcie z siebie coś więcej niż półsłówka także zachęcam Cię do ciut większego zaangażowania :D :) POZDRO!

2

Ale co tu objaśniać, jak nikt nic nie rozumie. Chcesz utworzyć nieskończenie wiele tabel i w while wyświetlać dane - to Ci się nie wykona, bo pętla będzie nieskończona.
Zakładając, że masz jakiś czujnik, który zwraca wartość temperatury, to tworzysz sobie jedną tabele, niech to będzie "pomiaryCzujnika1", w niej dajesz Insertem kolejne wiersze z danymi i powiedzmy czasem wykonania pomiaru ( timestamp) tam masz.
Dalej to już nie wiem co dokładnie chcesz wyświetlać, ale z tego co zgaduję to chcesz mieć tabelę z kolumną najnowszych pomiarów. No to robisz sobie selecta z bazy z sortowaniem po id lub timestampie malejąco z jakimś ograniczeniem, żeby Ci 10 tyś wierszy nie zwróciło. Np.

select id from pomiaryCzujnika1 order by id desc limit 20;

Dalej dzięki takiej tabeli z wartościami Id możesz robić coś więcej np. usuwać zaznaczone wpisy, czy wyświeltać ich wartości poprzez przekazanie wybranego id w jakimś formularzu.

A najlepiej na spokojnie przemyśl sobie temat jeszcze raz.

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