prezentacja danych z bazy sql w formie diagramów

0

Cześć,
Raczkuję w temacie programowania i będę wdzięczny za wszelkie wskazówki bo dotychczas moja praca z bazami danych ograniczała się do excela.

Zatem problem wygląda następująco. Mam bazę z czterema kolumnami

Kolumna 1 to rezultat działania (występują cztery różne rezultaty 1. nie udało się wyslac, 2. Wyslano bez problemów 3. Użytkownik opuscil proces, 4. Blad systemu)
Kolumna 2 to są nazwy tygodni np. 35,36,37,38 tydzień itd. (w kolumnie każdy tydzień powtarza się kilkanaście razy)
Kolumna 3 to jest scenariusz i.e. Wysylka formularza
Kolumna 4 to jest Tak lub Nie.

Cel całego zadania to wizualizacja danych w postaci wykresów:

Wykres 1: na osi poziomej mamy numer tygodnia, na osi pionowej mamy ilość udanych lub nieudanych wysylek (czyli tak lub nie)
Wykres 2: na osi poziomej mamy numer tygodnia, na osi pionowej mamy liczby od 0-100 i na diagramie 4 linie z konkretnymi przyczynami niepowodzenia.
Itd.

Jak te dane zliczyć np. w PHP? Za pomocą jakich funkcji?

Docelowo oczywiście cel jest taki żeby to przedstawić w formie interaktywnego diagramu, ale już dużo mi da jak będę wiedział w jaki sposób przenieść te dane poprawnie na stronę.

Znalazlem taką biblioteke http://www.highcharts.com/docs/getting-started/installation

Ale zanim jej użyję muszę mieć ładne przygotowane tabele. Jeśli ktoś miał do czynieniea z podobnym zagadnieniem to proszę o pomoc.

Dziękuję

0

no ale czego nie potrafisz? Napisać zapytania, które zwróci dane do wykresów? Przecież to podstawy są.

select kolumna2, sum(Case when kolumna4='TAK' then 1 else 0 end) udanych, sum(Case when kolumna4='TAK' then 0 else 1 end) nieudanych FROM tabela group by kolumna2

masz zapytanie dla pierwszego przypadku.

Jak to zapytanie wywołać i pobrać dane masz w każdym pierwszym lepszym kursie odnośnie PHP i baz danych. Jak to pokazać na wykresie zależy od konkretnej biblioteki, którą postanowisz użyć do tego celu. tu masz jak pobrać dane z bazy dla Twojej biblioteki

0

Ok, ale jak to połączyć z kodem no highcharts?

Założmy, że mam kod tak jak w js fiddle http://jsfiddle.net/a03tt69r/ w wierszu:

    series: [{
        name: 'Tokyo',
        data: [49.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]

W jaki sposób wstawić tam kod który wyprodukowałeś ? Tak, żeby nie wklepywać danych samemu, a każdorazowo skrypt sam mi wstawiał te dane.

I owszem - to są podstawy, ale jak pewnie sam wiesz początki są najgorsze.

0

dokładnie tak jak w linku, który dałem w poprzednim poście

0

Dziękuję za odpowiedzi.

Czy to ma prawo zadziałać jeżeli po prostu połączę się z bazą ( w ramach jednego pliku) przez php i pozniej wstawię to co mi wypluje php czyli np pint_r ($wyniki); do skryptu JS? Poniżej przyklad. Na tę chwilę całość wygląda tak http://iwaniuk.stronazen.pl/bat/test.html

<?php $connect = mysql_connect('localhost','2x2x2x','xxx'); $baza = mysql_select_db('xxx', $connect); $zpt = 'SELECT * FROM highcharts'; $rezultat = mysql_query($zpt, $connect); $wyniki = mysql_fetch_assoc($rezultat); pint_r ($wyniki); ?>

Tzn w Php otrzymuję dane których potrzebuję, ale jak próbuję wstawić to do skryptu JS to stronka pada, więc zapewne nie jest to zgodne z zasadami. Jak to zatem obejść?

Próbowałem to zrobić tak:

$(function () {

	chartype = 'bar';
		chartTitle		= 'Password Registration Attempts';
		chartCategories = ['Week 37', 'Week 38', 'Week 38', 'Week 40', 'Week 41'];						
                    chartData		= [{name: 'Success',data: [20, 18, 741, 942, 516]}, {name: 'Fail',data: [18, 13, 378, 512, 299]}];
		setDynamicChart(chartype, chartTitle, chartCategories, chartData);

	setDynamicChart(chartype, chartTitle, chartCategories, chartData);

	$('.option').click(function(){
		var chartype = $(this).attr('id');

		if(chartype == 'data1'){
			chartype 		= 'bar';
			chartTitle		= 'Password Registration Attempts';
			chartCategories = ['Week 37', 'Week 38', 'Week 38', 'Week 40', 'Week 41']; // Probowalem to zamienic na chartCategories. ale nie dziala = [<?php pint_r ($wyniki); ',') ?>];
			chartData		= [{name: 'Success',data: [20, 18, 741, 942, 516]}, {name: 'Fail',data: [18, 13, 378, 512, 299]}];
			setDynamicChart(chartype, chartTitle, chartCategories, chartData);
		}else if(chartype == 'data2'){
			chartype 		= 'line';
			chartTitle		= 'Password Registration Fail Reasons';
			chartCategories = ['Week 37', 'Week 38', 'Week 38', 'Week 40', 'Week 41'];
			chartData		= [{name: 'Failed: System error', data: [null, null, 1, 2, null]}, {name: 'Failed: User abandoned the process', data: [16, 13, 263, 377, 236]}, {name: 'Failed: User provided incorrect answers', data: [null, null, 114, 133, 63]}];
			setDynamicChart(chartype, chartTitle, chartCategories, chartData);
		}else if(chartype == 'data3'){
			chartype 		= 'column';
			chartTitle		= 'Password Reset Attempts';
			chartCategories = ['Week 33', 'Week 34', 'Week 35', 'Week 36', 'Week 37', 'Week 38', 'Week 39', 'Week 40', 'Week 41'];
			chartData		= [{name: 'Yes',data: [0, 0, 0, 0, 1, 8, 9, 18, 19]}, {name: 'No',data: [1, 13, 35, 4, 22, 51, 78, 124, 144]}];
			setDynamicChart(chartype, chartTitle, chartCategories, chartData);
		}else if(chartype == 'data4'){
			chartype 		= 'line';
			chartTitle		= 'Password Reset Attempts';
			chartCategories = ['Week 33', 'Week 34', 'Week 35', 'Week 36', 'Week 37', 'Week 38', 'Week 39', 'Week 40', 'Week 41'];
			chartData		= [{name: 'Failed: System error', data: [null, 2, null, null, 2, 6, 8, 16, 22]}, {name: 'Failed: User had to many retries', data: [null, null, null, null, 3, 12, 8, 31, 13]}, {name: 'Failed: User provided incorrect answers', data: [null, null, null, null, 4, 13, 15, 19, 17]}, {name: 'Failed: User abandoned the process', data: [1, 11, 6, 4, 8, 18, 17, 28, 47]}, {name: 'Failed: User is not registered or entitled to use the system', data: [null, null, null, null, 1, 2, 26, 28, 43]}];
			setDynamicChart(chartype, chartTitle, chartCategories, chartData);
		}
	});


	function setDynamicChart(chartype, chartTitle, chartCategories, chartData){
		$('#container').highcharts({
			chart: {
				type: chartype
			},
			title: {
				text: chartTitle
			},
			xAxis: {
				categories: chartCategories
			},
			yAxis: {
				min: 0,
				title: {
					text: 'Value'
				}
			},
			plotOptions: {
				//this need only for pie chart
				pie: {
					allowPointSelect: true,
					cursor: 'pointer'
				}
			},
			series: chartData
		});
	}
});
</script>

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