CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
17.11.2008, 01:24:51
|
Anfänger
|
|
Registriert seit: Nov 2008
Alter: 42
Beiträge: 4
|
|
HTML-Tabelle mit mehreren Spalten erstellen
Hallo,
ich habe gestern mit php angefangen und komme leider nicht weiter. Ich habe schon Stunden rumgesucht und rumgelesen um mein Problem selber zu lösen, komme aber leider nicht weiter. Ich vermute einfach, dass ich den Wald vor lauter Bäumen nicht sehe und es sicherlich eine einfache Lösung gibt, auf die ich einfach nicht komme.
Ich habe eine mySQL Tabelle (tabelle) mit zwei Spalten (ID und Bild) und n Zeilen:
ID Bild
1 1.jpg
2 2.jpg
3 3.jpg
usw. bis n usw.
nun möchte ich eine Tabelle ausgeben die so aussieht:
HTML-Code:
<table>
<tr><td>1.jpg</td><td>2.jpg</td><td>3.jpg</td></tr>
<tr><td>4.jpg</td><td>5.jpg</td><td>6.jpg</td></tr>
<tr><td>7.jpg</td><td>8.jpg</td><td>9.jpg</td></tr>
usw. bis die Tabelle zu ende ist (bis n.jpg)
</table>
Mein Ansatz sieht wie folgt aus:
PHP-Code:
$sql = "SELECT * FROM tabelle ORDER BY ID";
$result = mysql_query($sql);
echo "<table>";
while ($ar=mysql_fetch_array($result,MYSQL_ASSOC)){
echo "<tr><td>",$ar["Bild"],"'></td><td>",$ar["Bild"]+1,"'></td><td>",$ar["Bild"]+2,"'></td></tr>\n";
}
echo "</table>";
Die erste Zeile sieht auch gut aus, aber in der Zweiten fängt er wieder mit Bild 2.jpg an.
Wenn man logisch drüber nachdenkt ist es ja auch klar, aber wie kann man so eine Tabelle realisieren?
Ich bin für jeden Tipp dankbar.
Schöne Grüße
Christof
|
17.11.2008, 07:19:19
|
|
Anfänger
|
|
Registriert seit: Nov 2008
Alter: 35
Beiträge: 106
|
|
AW: HTML-Tabelle mit mehreren Spalten erstellen
weil du bei jedem durchlauf eine neue zeile erzeugst, du musst eine zählvariable einbauen so das immer erst nach dem 3. durchlauf die aktuelle zeiel beendet und eine neue gestartet wird.
|
17.11.2008, 10:23:42
|
Anfänger
|
|
Registriert seit: Nov 2008
Alter: 42
Beiträge: 4
|
|
AW: HTML-Tabelle mit mehreren Spalten erstellen
Hallo,
vielen lieben dank erstmal an agent47. Das ist schon mal die richtige Richtung.
Also muss das Ganze etwa so aussehen. Oder?
PHP-Code:
$sql = "SELECT * FROM tabelle ORDER BY ID";
$result = mysql_query($sql);
echo "<table><tr>";
while ($ar=mysql_fetch_array($result,MYSQL_ASSOC)){
echo "<td>",$ar["Bild"],"'></td>";
"Hier eine Funktion die jedes dritte Mal folgendes ausgibt {
echo "</tr><tr>";
}
}
echo "</tr></table>";
Jetzt habe ich nachgeschaut was Zählvariablen sind, damit kann man den Wert einer Variablen erhöhen $i++; (bzw. erniedrigen$i--;).
Aber so richtig läuchtet es mir leider nicht ein. Vielleicht hat ja jemand noch einen Tipp oder ein Beispiel?
Danke schon mal
Christof
|
17.11.2008, 11:01:05
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: HTML-Tabelle mit mehreren Spalten erstellen
Zitat:
Zitat von moa2
Aber so richtig läuchtet es mir leider nicht ein. Vielleicht hat ja jemand noch einen Tipp oder ein Beispiel?
|
in einem der ersten kapitel des handbuchs werden die grundlegenden operatoren besprochen:
http://de3.php.net/manual/de/languag...arithmetic.php
dort steht auch was über modulo, und genau der hilft dir weiter.
|
17.11.2008, 11:51:37
|
SELFPHP Experte
|
|
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
|
|
AW: HTML-Tabelle mit mehreren Spalten erstellen
Es geht auch ohne modulo ;-)
PHP-Code:
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
class Pager
{
private $perpage = 1; // Elemente pro Seite
private $anzahl = 0; // insgesamt vorhandene Elemente
public function __construct($anzahl,$perpage=1)
{
if($anzahl < 0) throw new Exception('Negative Anzahl!');
if($perpage < 1) throw new Exception('Min 1 Element per Page!');
$this->anzahl = (int)$anzahl; // integer erzwingen
$this->perpage = (int)$perpage; // integer erzwingen
}
public function pages() // anzahl Seiten
{
return (int)ceil($this->anzahl/$this->perpage);
}
public function page($index) // gibt den ausgewählten Ausschnitt
{
$index = (int)$index; // integer erzwingen
if($index < 1) throw new Exception('Index to low!');
$index--; // normalisieren
$offset = $this->perpage * $index;
if($offset >= $this->anzahl)
throw new Exception('Index out of Range!');
return array('offset'=>$offset,'count'=>$this->perpage);
}
}
/* den brauchst du hier nicht
class ArrayPager extends Pager
{
private $array = array(); // alle Elemente
public function __construct(Array &$array, $perpage=1)
{
parent::__construct(count($array),$perpage);
$this->array = array_values($array); // Index normalisieren
}
public function page($index) // gibt den ausgewählten Ausschnitt
{
$bereich = parent::page($index); // auschnitt berechnen
return array_slice($this->array,$bereich['offset'],$bereich['count']);
}
}
*/
class LimitPager extends Pager
{
public function page($index) // gibt den ausgewählten Ausschnitt
{
$bereich = parent::page($index); // ausschnitt holen
return ' LIMIT '.$bereich['offset'].','.$bereich['count'] ;
}
}
function navigation($max, $page)
{
$result = '';
for ($i=1;$i<=$max;$i++)
if($page == $i) // aktuelle Seite bekommt keinen Link
$result .= " <b>$i</b> \n";
else $result .= " <a href='?page=$i'>$i</a> \n";
return $result;
}
function tabelle(Array $array, $rows, $cols,$abschneiden=TRUE)
{
$ende = FALSE ; // helper um überflüssige Tabellenzeilen zu vermeiden
$result = '';
$result .= "<table>\n";
for ($r=0;$r<$rows;$r++)
{
if($ende && $abschneiden) break; // Tabelle vorzeitig beenden
$result .= " <tr>\n";
for ($c=0;$c<$cols;$c++)
{
$i = $r * $cols + $c;
if($i >= count($array)) $ende = TRUE ; // Array leer
$value = empty($array[$i])?' ':$array[$i]; // Zelle leer
$result .= " <td> $value </td>\n";
}
$result .= " </tr>\n";
}
$result .= "</table>\n";
return $result;
}
//--------------------------------------
$rows = 5; // Zeilen der Tabelle
$cols = 5; // Spalten der Tabelle
$perPage = $rows * $cols;
if(!mysql_connect("localhost", "user", "passwort"))
throw new Exception("keine Verbindung möglich. Benutzername oder Passwort sind falsch");
if(!mysql_select_db("deinedb"))
throw new Exception("Die Datenbank existiert nicht.");
$seite = isset($_GET['page'])?(int)$_GET['page']:1; // aktuelle Seite bestimmen
$seite = max(1,$seite); // Seite 1 ist die kleinste mögliche
// Anzahl aller Möglichen in Erfahrung bringen
$sql = " SELECT COUNT(*) AS anzahl FROM tabelle";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$pager = new LimitPager($row['anzahl'],$perPage);
$sql = " SELECT Bild FROM tabelle ORDER BY ID ".$pager->page($seite);
$result = mysql_query($sql);
$array = array();
while($row = mysql_fetch_assoc($result)) $array[] = $row['Bild'];
array_walk($array,'htmlentities'); // Sonderzeichen HTML codieren
//--------------------------------------
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Blätterfunktion</title>
</head>
<body>
<h1> <?php echo "Seite $seite von ".$pager->pages()?> </h1>
<?php echo navigation($pager->pages(),$seite)?>
<hr>
<?php echo tabelle($array,$rows,$cols)?>
</body>
</html>
*ungetestet*
Aus meiner Sammlung und leicht für dieses Problem angepasst.
von daher: *ungetestet*
Geändert von DokuLeseHemmung (17.11.2008 um 14:04:05 Uhr)
|
17.11.2008, 12:01:49
|
Anfänger
|
|
Registriert seit: Nov 2008
Alter: 42
Beiträge: 4
|
|
AW: HTML-Tabelle mit mehreren Spalten erstellen
Hallo,
vielen Lieben dank, ich hab zwar jetzt keinen Modulo Operator verwendet, aber dank eurer Tipps bin ich auf eine Lösung gekommen:
PHP-Code:
$sql = "SELECT * FROM tabelle ORDER BY ID";
$result = mysql_query($sql);
$num=1;
echo "<table><tr>";
while ($ar=mysql_fetch_array($result,MYSQL_ASSOC)){
echo "<td>",$ar["Bild"],"'></td>";
if($num==3){
echo "</tr><tr class='td1' ALIGN='left' VALIGN='middle'>";
$num=0;
}
$num++;
}
}
}
echo "</tr></table>";
Jetzt funktioniert es. Vielen Dank. Jetzt wo es fertig ist, eigentlich ganz einfach. Aber ich fange gerade an. Ist mein dritter Programmier und PHP Tag. Wenn man manchmal nicht einmal genau weiss wonach man sucht ist es schon schwierig.
Schöne Grüße
Christof
|
17.11.2008, 12:07:13
|
Anfänger
|
|
Registriert seit: Nov 2008
Alter: 42
Beiträge: 4
|
|
AW: HTML-Tabelle mit mehreren Spalten erstellen
Hallo DokuLeseHemmung,
danke auch an dich, da muss ich erst einmal durchblicken. Schaue es mir aber gleich an.
Schöne Grüße
Christof
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 14:07:14 Uhr.
|