Aus MySQL auslesen und jeweils X Ergebnisse nebeneinander... |
Sunblocker
Mitglied
Dabei seit: 13.02.04
Beiträge: 38
Forenversion: wBB 2.1.6
|
|
hey, ich möchte Daten aus MySQl auslesen...
Von den Ergebnissen die zurückkommen sollen jeweils X in eine Zeile und dann die nächste Zeile aufgemacht werden...
BSP:
datenbankeinttag 1 | datenbankeintrag 2 | datenbankeintrag 3 <-jetzt eine neue zeile
datenbankeinttag 4 | datenbankeintrag 5 | datenbankeintrag 6 <-und wieder eine neue zeile...
hoffe ihr habt verstanden was ich meine
mfg und danke für eure hilfe
|
|
12.03.06 11:11 |
E-Mail
Finden
Als Freund hinzufügen
|
|
ThBodi
Mitglied
Dabei seit: 18.01.04
Beiträge: 246
Herkunft: Oberhaun
|
|
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
|
$counter = 1;
while($row = mysql_fetch_array($mysqlresult))
{
if( ( $counter - 1 ) % 3 == 0 || $counter == 1)
echo "<tr>\n";
echo '<td>'.$row['feld']."</td>\n";
if($counter % 3 == 0)
echo "</tr>\n";
$counter++;
}
while( ( $counter - 1 ) % 3 > 0)
{
echo "<td> </td>\n";
if( ( $counter - 1 ) % 3 == 0)
echo "</tr>\n";
} |
|
Ich denke, so könnte es funktionieren. Wie Du an $mysqlresult kommst, ist hoffentlich klar, oder?
|
|
12.03.06 14:48 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Sunblocker
Mitglied
Dabei seit: 13.02.04
Beiträge: 38
Forenversion: wBB 2.1.6
Themenstarter
|
|
erstmal danke für deine schnelle hilfe.
wie ich an mysqlresult komme is klar, aber könntest du mir noch ne kleine erläuterung geben? was macht was, weil irgendwo versteh ich in deinem code nur bahnhof *gg*... weshalb ist $counter = 1 zum beispiel was bringt das % etc
mfg
|
|
12.03.06 16:40 |
E-Mail
Finden
Als Freund hinzufügen
|
|
SvPe
Mitglied
Dabei seit: 07.05.05
Beiträge: 279
|
|
% ist der modulo Operatpr in PHP und gibt den Rest einer Division an.
11 % 5 wäre also 1.
11 % 3 wäre 2. (9 kann man glatt durch drei teilen -> 11 - 9 = 2)
__________________
JID svpe@jabber.ccc.de
OpenPGP KeyID 0x2D682680
eMail sven@codeartists.org
There are only 10 types of people in this world: Those who understand binary and those who don't.
|
|
12.03.06 17:41 |
E-Mail
Finden
Als Freund hinzufügen
|
|
ThBodi
Mitglied
Dabei seit: 18.01.04
Beiträge: 246
Herkunft: Oberhaun
|
|
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
|
// einfache Zählvariable
$counter = 1;
while($row = mysql_fetch_array($mysqlresult))
{
// bei jedem vierten Durchlauf (oder beim ersten) beginne eine neue Zeile (<tr>)
if( ( $counter - 1 ) % 3 == 0 || $counter == 1)
echo "<tr>\n";
// hier wird das gewünschte Datum in einer Zelle ausgegeben
echo '<td>'.$row['feld']."</td>\n";
// nach jedem dritten Durchlauf beende die Zeile (</tr>)
if($counter % 3 == 0)
echo "</tr>\n";
// inkrementiere die Zählvariable um eins
$counter++;
}
// da nicht sichergestellt ist, dass die Datenbankabfrage immer durch drei teilbare Anzahl an Datensätzen zurückgibt, werden fehlende Zellen hier aufgefüllt
// solange beim letzten Durchlauf die Zeile nicht beendet wurde, füge weitere Zellen ein ...
while( ( $counter - 1 ) % 3 > 0)
{
echo "<td> </td>\n";
// sobald die Zeile drei Zellen enthält, schließe die Zeile
if( ( $counter - 1 ) % 3 == 0)
echo "</tr>\n";
// inkrementiere die Zählvariable um eins (das habe ich oben vergessen)
$counter++;
} |
|
Ich habe den Quelltext ein bisschen kommentiert, ich hoffe, dass das das meiste erklärt. (Beachte den letzten $counter++, den ich oben vergessen hatte!)
|
|
12.03.06 18:46 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Sunblocker
Mitglied
Dabei seit: 13.02.04
Beiträge: 38
Forenversion: wBB 2.1.6
Themenstarter
|
|
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
|
//...
$opt_management_row="3";
$counter="1";
$sql="SELECT * FROM nitso'".$sqlno."'_management WHERE division='".addslashes($_GET['division'])."' ORDER BY trim DESC";
$result=mysql_query($sql);
while($management=mysql_fetch_array($result)) {
if(($counter - 1) % $opt_management_row==0 || $counter==1) {
eval("\$index_basic_club_management_startbit .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_startbit'))."\";");
}
eval("\$index_basic_club_management_bit .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_bit'))."\";");
if($counter % $opt_management_row==0) {
eval("\$index_basic_club_management_endbit .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_endbit'))."\";");
}
$counter++;
}
while(($counter - 1) % $opt_management_row>0) {
eval("\$index_basic_club_management_emptybit .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_emptybit'))."\";");
if(($counter - 1) % $opt_management_row==0) {
eval("\$index_basic_club_management_endbit .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_endbit'))."\";");
}
$counter++
}
//... |
|
so sieht es bei mir jetzt aus und wenn ich das script aufrufe erscheint folgendes:
Zitat: |
Parse error: parse error, unexpected '}' in /srv/www/web1/html/tsv/v1.2/index.php on line 100 |
wobei die zeile 100 nur eine geschweifte klammer ist. was ist das problem?
mfg
|
|
13.03.06 20:26 |
E-Mail
Finden
Als Freund hinzufügen
|
|
ThBodi
Mitglied
Dabei seit: 18.01.04
Beiträge: 246
Herkunft: Oberhaun
|
|
php: |
1:
2:
3:
4:
5:
6:
|
...
}
$counter++;
}
//... |
|
Du hast das Semikolon hinter $counter++ vergessen.
|
|
13.03.06 20:32 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
ph.n
Mitglied
Dabei seit: 02.02.04
Beiträge: 107
|
|
Warum so kompliziert?
Hier mal was einfacheres:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
|
<table><tr>
<?
$table = 1;
$break = 3; // Nach $break Datensätzen neue Zeile
while($data = mysql_fetch_assoc($query)) // query muss existieren
{
if($table>$break)
{
echo"</tr><tr>";
$table = 1;
}
echo"<td>".$data['feld']."</td>\n"; // Feld muss geändert werden!
$table++;
}
for($i=$table;$i<=$break; $i++)
{
echo"<td> </td>";
}
?>
</tr></table> |
|
__________________
|
|
13.03.06 21:03 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Sunblocker
Mitglied
Dabei seit: 13.02.04
Beiträge: 38
Forenversion: wBB 2.1.6
Themenstarter
|
|
also fehler wirft es mir schonmal keine mehr aus, bin grad dabei die templates zu erstellen um es zu testen... *g*
|
|
13.03.06 22:17 |
E-Mail
Finden
Als Freund hinzufügen
|
|
ThBodi
Mitglied
Dabei seit: 18.01.04
Beiträge: 246
Herkunft: Oberhaun
|
|
Hmm, das ist echt wesentlich einfacher.
Allerdings wird bei Deiner Variante mit null Datensätzen invalider HTML-Code erzeugt ...
Zum Thema "sprechende Variablen" - wie soll ein normaler Mensch (oder auch ein Programmierer) die Variable "$table" verstehen (?) und "$query" enthält auch nicht das, was der Name suggeriert.
|
|
13.03.06 22:18 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Sunblocker
Mitglied
Dabei seit: 13.02.04
Beiträge: 38
Forenversion: wBB 2.1.6
Themenstarter
|
|
naja nun bringt er mir alles in einer reihe. der macht keine neue zeile auf nach 3 einträgen
|
|
14.03.06 00:05 |
E-Mail
Finden
Als Freund hinzufügen
|
|
ThBodi
Mitglied
Dabei seit: 18.01.04
Beiträge: 246
Herkunft: Oberhaun
|
|
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
|
//...
$opt_management_row="3";
$counter="1";
$sql="SELECT * FROM nitso'".$sqlno."'_management WHERE division='".addslashes($_GET['division'])."' ORDER BY trim DESC";
$result=mysql_query($sql);
while($management=mysql_fetch_array($result)) {
if(($counter - 1) % $opt_management_row==0 || $counter==1) {
eval("\$index_basic_club_management_startbit .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_startbit'))."\";");
}
eval("\$index_basic_club_management_bit .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_bit'))."\";");
if($counter % $opt_management_row==0) {
eval("\$index_basic_club_management_endbit .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_endbit'))."\";");
}
$counter++;
}
while(($counter - 1) % $opt_management_row>0) {
eval("\$index_basic_club_management_emptybit .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_emptybit'))."\";");
if($counter % $opt_management_row==0) {
eval("\$index_basic_club_management_endbit .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_endbit'))."\";");
}
$counter++
}
//... |
|
Ich habe den Quelltext nochmal im Detail verändert (Zeile 22). Dass (optisch) alles in einer Zeile angezeigtwird, liegt vermutlich an fehlenden <table>-Tags, überprüfe das!
|
|
14.03.06 11:04 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Sunblocker
Mitglied
Dabei seit: 13.02.04
Beiträge: 38
Forenversion: wBB 2.1.6
Themenstarter
|
|
ne die <table> tags sind vorhanden...
mein html code sieht so aus...
code: |
1:
2:
3:
4:
5:
6:
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
$index_basic_club_management_startbit
$index_basic_club_management_bit
$index_basic_club_management_emptybit
$index_basic_club_management_end_bit
</table> |
|
in index_basic_club_management_startbit steht <tr>
in index_basic_club_management_emptybit steht <td> </td>
und in index_basic_club_management_endbit steht </tr>
mfg
|
|
14.03.06 13:45 |
E-Mail
Finden
Als Freund hinzufügen
|
|
ThBodi
Mitglied
Dabei seit: 18.01.04
Beiträge: 246
Herkunft: Oberhaun
|
|
Zitat: |
Original von Sunblocker
ne die <table> tags sind vorhanden...
mein html code sieht so aus...
code: |
1:
2:
3:
4:
5:
6:
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
$index_basic_club_management_startbit
$index_basic_club_management_bit
$index_basic_club_management_emptybit
$index_basic_club_management_end_bit
</table> |
|
in index_basic_club_management_startbit steht <tr>
in index_basic_club_management_emptybit steht <td> </td>
und in index_basic_club_management_endbit steht </tr>
mfg |
Ist das oben jetzt der HTML-Code, den Dein Script generiert? Du meinst doch eher, dass das das übergeordnete Template ist, oder?
Davon ab hast Du einen schwerwiegenden Konzeptfehler bei Deinem Codeausschnitt von oben, der mir jetzt erst aufgefallen ist. Gehe mal Dein Script durch und überlege was in den Variablen $index_basic_club_managemen_xxx steht!?
Du darfst in den Schleifen nur eine Variable verwenden, an die die einzelnen Templates nacheinander angehangen werden.
Hast Du das irgendwo online stehen?
|
|
14.03.06 15:03 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Sunblocker
Mitglied
Dabei seit: 13.02.04
Beiträge: 38
Forenversion: wBB 2.1.6
Themenstarter
|
|
also das ist der php code:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
|
<?php
require("./global.php");
$counter="1";
$sql="SELECT * FROM nitso".$sqlno."_management WHERE division='".addslashes($_GET['division'])."' ORDER BY trim ASC";
$result=mysql_query($sql);
while($management=mysql_fetch_array($result)) {
if(($counter - 1) % $opt_management_row==0 || $counter==1) {
eval("\$index_basic_club_management_startbit .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_startbit'))."\";");
}
eval("\$index_basic_club_management_bit .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_bit'))."\";");
if($counter % $opt_management_row==0) {
eval("\$index_basic_club_management_endbit .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_endbit'))."\";");
}
$counter++;
}
while(($counter - 1) % $opt_management_row>0) {
eval("\$index_basic_club_management_emptybit .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_emptybit'))."\";");
if(($counter - 1) % $opt_management_row==0) {
eval("\$index_basic_club_management_end_bit .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_endbit'))."\";");
}
$counter++;
}
eval("echo\"".str_replace("\"","\\\"",get_templates('index_basic_club'))."\";");
?> |
|
in dem template index_basic_club steht:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
|
<html>
<head>
<title>$opt_page_title | Verein</title>
$index_basic_headinclude
</head>
<body>
$index_basic_header
<hr>
<center><span class="fcontenttitle"><b>Vorstand & Chronik</b></span></center><hr><br>
<span class="fcontent">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><span class="fcontent"><b>Vorstand:</b></span></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
$index_basic_club_management_startbit
$index_basic_club_management_bit
$index_basic_club_management_emptybit
$index_basic_club_management_end_bit
</table><br><br>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><span class="fcontent"><b>Chronik:</b></span></td>
</tr>
</table>
<br><br>
$index_basic_affix</span>
$index_basic_footer
</body>
</html> |
|
in dem template index_basic_club_management_startbit steht:
in dem template index_basic_club_management_bit steht:
php: |
1:
|
<td>$management[title]</td> |
|
in dem template index_basic_club_management_emptybit steht:
und in dem template index_basic_club_management_endbit steht:
ok jetzt seh ich den fehler aber ich bin irgendwie zu krank um darauf zu kommen was wohin gehört...
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Sunblocker: 14.03.06 15:49.
|
|
14.03.06 15:47 |
E-Mail
Finden
Als Freund hinzufügen
|
|
ph.n
Mitglied
Dabei seit: 02.02.04
Beiträge: 107
|
|
Zitat: |
Zum Thema "sprechende Variablen" - wie soll ein normaler Mensch (oder auch ein Programmierer) die Variable "$table" verstehen (?) und "$query" enthält auch nicht das, was der Name suggeriert. |
Nenn $table von mir aus "$i" oder sonstwie, ist mir völlig schnurz.
$query - Die Funktion heißt eben auch "mysql_query", darum heißt die Variable so. (wenn es dir nicht passt, ändere sie eben
)
__________________
|
|
14.03.06 15:58 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
ThBodi
Mitglied
Dabei seit: 18.01.04
Beiträge: 246
Herkunft: Oberhaun
|
|
Zitat: |
Nenn $table von mir aus "$i" oder sonstwie, ...
$query - Die Funktion heißt eben auch "mysql_query", darum heißt die Variable so ... |
Naja, wenn Du Dich nicht weiterentwickeln willst, ist das Deine Sache, offensichtlich hast Du meinen Einwand nicht verstanden.
------------------------------------------------
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
|
<?php
require("./global.php");
$counter="1";
$sql="SELECT * FROM nitso".$sqlno."_management WHERE division='".addslashes($_GET['division'])."' ORDER BY trim ASC";
$result=mysql_query($sql);
while($management=mysql_fetch_array($result)) {
if(($counter - 1) % $opt_management_row==0 || $counter==1) {
eval("\$index_basic_club_management .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_startbit'))."\";");
}
eval("\$index_basic_club_management .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_bit'))."\";");
if($counter % $opt_management_row==0) {
eval("\$index_basic_club_management .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_endbit'))."\";");
}
$counter++;
}
while(($counter - 1) % $opt_management_row>0) {
eval("\$index_basic_club_management .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_emptybit'))."\";");
if(($counter - 1) % $opt_management_row==0) {
eval("\$index_basic_club_management .= \"". str_replace("\"","\\\"",get_templates('index_basic_club_management_endbit'))."\";");
}
$counter++;
}
eval("echo\"".str_replace("\"","\\\"",get_templates('index_basic_club'))."\";");
?> |
|
template index_basic_club:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
|
<html>
<head>
<title>$opt_page_title | Verein</title>
$index_basic_headinclude
</head>
<body>
$index_basic_header
<hr>
<center><span class="fcontenttitle"><b>Vorstand & Chronik</b></span></center><hr><br>
<span class="fcontent">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><span class="fcontent"><b>Vorstand:</b></span></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
$index_basic_club_management
</table><br><br>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><span class="fcontent"><b>Chronik:</b></span></td>
</tr>
</table>
<br><br>
$index_basic_affix</span>
$index_basic_footer
</body>
</html> |
|
So sollte es funktionieren.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von ThBodi: 14.03.06 16:05.
|
|
14.03.06 15:58 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
ph.n
Mitglied
Dabei seit: 02.02.04
Beiträge: 107
|
|
Zitat: |
Original von ThBodi
Zitat: |
Nenn $table von mir aus "$i" oder sonstwie, ...
$query - Die Funktion heißt eben auch "mysql_query", darum heißt die Variable so ... |
Naja, wenn Du Dich nicht weiterentwickeln willst, ist das Deine Sache, offensichtlich hast Du meinen Einwand nicht verstanden. |
Was hat das denn mit weiterentwickeln zu tun? Das Skript, das ich gestern hier eingefügt habe, war nur kurz dahingeschrieben. Ohne große Anstrengungen, den Code lesbar zu machen
- aber lassen wir das.
__________________
|
|
14.03.06 16:28 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Sunblocker
Mitglied
Dabei seit: 13.02.04
Beiträge: 38
Forenversion: wBB 2.1.6
Themenstarter
|
|
also es funktioniert ich bedanke mich recht herzlich und stelle dann doch gleich mal die nächste frage *lol*
wenn ich kategorieen in der tabelle downloads_cat speichere, wie ordne ich dann die downloads aus der tabelle downloads dieser kategorie zu? dass es nachher so aussieht:
Downloadkategorie 1:
download blub
download php
download blubblub
Downloadkategorie 2:
download games
...
|
|
14.03.06 19:15 |
E-Mail
Finden
Als Freund hinzufügen
|
|
ThBodi
Mitglied
Dabei seit: 18.01.04
Beiträge: 246
Herkunft: Oberhaun
|
|
Tabelle downloads_cat:
code: |
1:
2:
3:
4:
|
id description
------------------
1 schoenes
2 weniger schoenes |
|
Tabelle downloads:
code: |
1:
2:
3:
4:
|
id description cat
---------------------------
1 Heidi Klum 1
2 Angela Merkel 2 |
|
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
|
$catres = mysql_query('SELECT * FROM downloads_cat');
while($cat = mysql_fetch_array($catres))
{
echo '<p>Kategorie: '.$cat['description'].'</p>';
$dlres = mysql_query('SELECT * FROM downloads WHERE cat = '.$cat['id']);
while($download = mysql_fetch_array($dlres))
{
echo '<p>'.$download['description'].'</p>';
}
} |
|
Nicht besonders schön, funktioniert aber. Aber mal ganz ehrlich; das ist eine ganz einfache Aufgabe, für die es viele denkbare Lösungen gibt. Ich vermute, dass Du Dir etwas zu viel vorgenommen oder allgemein zu wenig Geduld hast. Man muss immer mal was ausprobieren um ans Ziel zu kommen.
|
|
14.03.06 21:20 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
|