php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.02.2009, 18:52  
Benutzer
 
Registriert seit: 28.01.2009
Beiträge: 36
steven001 befindet sich auf einem aufstrebenden Ast
Standard 24 MySql Abfragen optimieren

Hallo zusammen,

ich möchte auf einer Überblicksseite durch die Hintergrundfarbe zeigen, oder die MySql-Datenbank an dieser Stelle leer oder gefüllt ist. Hierbei handelt es sich um 24 Abfragen. Es gibt 12 Module (HNr) und 2 Orte (ANr) und jedes Modul kann in abhängigkeit der Orte befüllt werden. Klappt auch ganz gut.

Folgendes habe ich z.Z. geschrieben...

Code:
mysql_select_db($database_DBPortfolio, $DBPortfolio);
$query_Abfrage11 = "SELECT * FROM text WHERE text.HNr = 1 AND text.ANr = 1";
$Abfrage11 = mysql_query($query_Abfrage11, $DBPortfolio) or die(mysql_error());
$row_Abfrage11 = mysql_fetch_assoc($Abfrage11);
$totalRows_Abfrage11 = mysql_num_rows($Abfrage11);
if ($totalRows_Abfrage11 == 0){
	$class11 = "rot";
	echo $class11;
	}
	else {
	$class11 = "grün";
	echo $class11;
	}
In der dazugehörigen Tabelle hab ich dann das stehen...

Code:
<td width="100" align="center" class="<?php echo $class11; ?>"><a href="eingabe.php?Modul_Nr=1&Ort=1" title="Eingabe" target="_self">Eingabe</a></td>
Jetzt müsste ich wie gesagt das ganze 24x machen - da frage ich mich ob man da nicht in irgendeiner Weise mit einer Schleife arbeiten kann. Doch meine Kenntnisse sind begrenzt.
Habt ihr da eine Idee?

mfg
steven001 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.02.2009, 19:32  
Benutzer
 
Registriert seit: 28.01.2009
Beiträge: 36
steven001 befindet sich auf einem aufstrebenden Ast
Standard

Ich versuche es schon die ganze Zeit auf diesem Weg.

Code:
for ($HNr = 1;  $HNr < 12; $HNr + 1)
{
	$ANr = 1
	mysql_select_db($database_DBPortfolio, $DBPortfolio);
	$query_Abfrage[$HNr][$ANr] = "SELECT * FROM text WHERE text.HNr = '$HNr' AND text.ANr = '$ANr'";
	$Abfrage[$HNr][$ANr] = mysql_query($query_Abfrage[$HNr][$ANr], $DBPortfolio) or die(mysql_error());
	$row_Abfrage[$HNr][$ANr] = mysql_fetch_assoc($Abfrage[$HNr][$ANr]);
	$totalRows_Abfrage[$HNr][$ANr] = mysql_num_rows($Abfrage[$HNr][$ANr]);
	if ($totalRows_Abfrage[$HNr][$ANr] == 0)
	{
	$class[$HNr][$ANr] = "rot";
	echo $class[$HNr][$ANr];
	}
	else
	{
	$class[$HNr][$ANr] = "grün";
	echo $class[$HNr][$ANr];
	}
}
Geht sowas überhaupt? Oder bin ich komplett auf dem Holzweg?

mfg
steven001 ist offline  
Alt 17.02.2009, 19:52  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

wie wäre es mit
$sql = "SELECT * FROM text WHERE text.HNr BETWEEN 1 AND 11 AND text.ANr = 1";
HPR1974 ist offline  
Alt 17.02.2009, 19:53  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard

IMO absoluter Holzweg. Ein Query pro Tabelle reicht eigentlich immer. WHERE IN, und ORDER BY sowie GROUP BY im MySQL Manual solltest du dir umbedingt ansehen.
__________________
Phoscur ist offline  
Alt 17.02.2009, 20:43  
Benutzer
 
Registriert seit: 28.01.2009
Beiträge: 36
steven001 befindet sich auf einem aufstrebenden Ast
Standard

Erst einmal danke für den Hinweis.

Wenn ich Euch richtig verstehe, meint Ihr soetwas, oder?

Code:
mysql_select_db($database_DBPortfolio, $DBPortfolio);
$query_Abfrage = "SELECT * FROM text WHERE text.HNr BETWEEN 1 AND 12 AND text.ANr BETWEEN 1 AND 3 ORDER BY text.HNr, text.ANr";
$Abfrage = mysql_query($query_Abfrage, $DBPortfolio) or die(mysql_error());
$row_Abfrage = mysql_fetch_assoc($Abfrage);
$totalRows_Abfrage = mysql_num_rows($Abfrage);

echo $totalRows_Abfrage;
echo $Abfrage[0][HNr];
Nun ist $Abfrage ein mehrdimensionales Array, oder?

Und an der ersten Position [0] sollte der erste Datensatz aus der DB stehen, oder?

Doch
Code:
echo $Abfrage[0][HNr];
gibt nichts aus? Sollte da nicht das Ausgegeben werden, was an erster Position in der Spalte HNr steht?

mfg
steven001 ist offline  
Alt 17.02.2009, 20:48  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

lern erstmal Grundlagen
Wie kann ich Daten aus einer Datenbank (MySQL) auslesen und ausgeben mit PHP.
HPR1974 ist offline  
Alt 17.02.2009, 22:31  
Benutzer
 
Registriert seit: 28.01.2009
Beiträge: 36
steven001 befindet sich auf einem aufstrebenden Ast
Standard

So, bin eine ganze Ecke weiter...

Code:
mysql_select_db($database_DBPortfolio, $DBPortfolio);
$query_Abfrage = "SELECT * FROM text WHERE text.HNr BETWEEN 1 AND 12 AND text.ANr BETWEEN 1 AND 3 ORDER BY text.HNr, text.ANr";
$Abfrage = mysql_query($query_Abfrage, $DBPortfolio) or die(mysql_error());
$totalRows_Abfrage = mysql_num_rows($Abfrage);

while($row = mysql_fetch_object($Abfrage)){
  $HNr = $row->HNr;
  $ANr = $row->ANr; 
  $varname = '$class'."$HNr"."$ANr";
  $$varname = "grün";
  echo $varname.'= '.$$varname;
  echo $class11;
  echo "<br>";
  }
Ich dachte, ich erstelle mir die passenden Variablen - doch es geht noch nicht so ganz. Zwar gibt er mir folgendes aus...

Code:
$class11= grün
$class13= grün
$class21= grün
$class31= grün
$class63= grün
$class72= grün
$class81= grün
$class91= grün
$class93= grün
$class102= grün
$class113= grün
$class123= grün
Doch scheinen diese erzeugten Variablen keine echten zu sein. Ein echo $class13; bringt auf jeden Fall keinen Wert.
steven001 ist offline  
Alt 17.02.2009, 22:38  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

sorry aber das is bullshit was DU da machst.
beschriebe lieber was Du vorhast...
HPR1974 ist offline  
Alt 17.02.2009, 23:15  
Benutzer
 
Registriert seit: 28.01.2009
Beiträge: 36
steven001 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von HPR1974 Beitrag anzeigen
sorry aber das is bullshit was DU da machst.
beschriebe lieber was Du vorhast...
Danke für die lieben und aufbauenden Worte - sowas hört man gerne als Neueinsteiger

Was ich vorhabe steht ganz oben.

Ich habe eine Tabelle (12x2) - jedes Feld symbolisiert einen Eintrag in der Datenbank. Und mit der Hintergrundfarbe des Feldes soll man sehen, ob schon was an dieser Stelle in der Datenbank steht. Das Ganze ist ein Projekt der Uni.

Ich wollte also alle Hintergründe "Rot" setzen und da wo was in der DB-Steht auf "Grün".

Habe auch schon meinen Fehler gefunden.

Code:
$varname = '$class'."$HNr"."$ANr";
Muss wohl eher
Code:
$varname = 'class'."$HNr"."$ANr";
sein. Teste ich morgen mal.
steven001 ist offline  
Alt 18.02.2009, 00:00  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

was halt wie gesagt bullshit ist, Du hast genau zwei status grün oder rot soll dann je nachdem gefärbt werden. Also brauchste auch nicht 12 mal grün oder sowas hernehmen

Das macht man in der Ausgabe so:
nehmen wir an Du hast ein array $var mit indizes 0-11

for($i = 0; $i <= 11; $i++){
$farbe = isset($var[$i]) ? 'green' : 'red';
echo $farbe.$var[$i];
}
HPR1974 ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Zwei MySQL Abfragen gleichzeitig durchführen djscaleo Datenbanken 10 21.11.2008 20:52
Berechnung über mehrere Abfragen aus mysql Slappi PHP Tipps 2008 2 18.12.2007 14:22
PHP bzw. mysql abfragen optimieren Kori Datenbanken 3 26.09.2007 21:02
Mysql Server Einstellunen Optimieren pchero Datenbanken 3 01.05.2007 19:50
Daten aus MySQL Datenbank abfragen trivial Datenbanken 2 29.04.2006 17:48
zum mysql optimieren caching verhindern? Anotherone Datenbanken 1 10.03.2006 21:17
MySql abfragen durcheinander? MrCavity Datenbanken 19 16.11.2005 16:18
[Erledigt] Dynamische Ausgabe von Mysql Abfragen PHP-Fortgeschrittene 1 21.10.2005 10:53
[Erledigt] Jahr und Monat aus DATE spalte in MySQL abfragen. Datenbanken 7 24.09.2005 02:40
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
[Erledigt] MySQL Abfragen als Frage-Antwort Datenbanken 0 31.05.2005 18:35
info über mysql status abfragen nieselfriem Datenbanken 4 13.04.2005 09:42
between datum abfragen mysql hekto Datenbanken 2 12.01.2005 11:07
Password aus mySQL abfragen und vergleichen ob zu User passt PHP Tipps 2004 2 14.10.2004 10:15
MySQL DB Tabellen Kommentar abfragen Datenbanken 3 13.06.2004 22:41

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql between date optimieren, mysql abfrage optimieren, mysql order by optimieren, 0hnr, mysql between optimieren, mysql status abfragen, was bedeutet \$anr\, mysql abfragen farbig ausgeben, mysql order optimieren, mysql abfragen ob text enthalten ist, mysql order by optimiere, mysql abfrage gefüllt, mysql between abfragen optimieren, mysql \order by\ optimieren, mysql position eines datensatzes, mysql optimieren eine oder mehrere abfragen, mysql abfragen farbig machen, php abfrage datum leer gefüllt, http://www.php.de/php-einsteiger/51964-24-mysql-abfragen-optimieren.html, mysql_num_rows() optimieren

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:18 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum