Darstellung in Spalten

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Antworten
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Darstellung in Spalten

Beitrag von Holger »

Moin,

ich möchte aus einer Datenbankabfrage ein Vergleichsskript basteln.
Das Ergebnis soll in Spalten nebeneinander gezeigt werden.
In Reihen wäre das alles kein Problem, ich möchte aber SPALTEN.

Mein Anzeige-Skript:

Code: Alles auswählen

<?php
  // Ansluter till Mysql. Måste alltid finnas i alla php-filer
  // som använder Mysql. Kom ihåg att byta ut användarnamn och
  // lösenord.
  mysql_connect("*", "**", "***");

  // Här väljer vi vilken databas vi ska använda.

  mysql_select_db("****");

$result = mysql_query("SELECT tillverkare, maskinbeteckning, maskintyp, produktion, antal, vikt, laengd, bredd, hoejd, raeckvidd, skopvolym, motor, motoreffekt, kommentar
FROM maskinlista ORDER BY registrerat DESC");

?>
<table cellspacing="5">
<tr><td>Tillverkare:</td>
<?php
  while ($r = mysql_fetch_array($result))
  {
    echo('<td>');
    echo($r['tillverkare']);
    echo('</td>');
  }
?>
</tr>
<tr><td>Maskinbeteckning:</td>
<?php
$result = mysql_query("SELECT tillverkare, maskinbeteckning, maskintyp, produktion, antal, vikt, laengd, bredd, hoejd, raeckvidd, skopvolym, motor, motoreffekt, kommentar
FROM maskinlista ORDER BY registrerat DESC");
  while ($r = mysql_fetch_array($result))
  {
    echo('<td>');
    echo($r['maskinbeteckning']);
    echo('</td>');
  }
?>
</tr>
</tr>
<tr><td>Maskintyp:</td>
<?php
$result = mysql_query("SELECT tillverkare, maskinbeteckning, maskintyp, produktion, antal, vikt, laengd, bredd, hoejd, raeckvidd, skopvolym, motor, motoreffekt, kommentar
FROM maskinlista ORDER BY registrerat DESC");
  while ($r = mysql_fetch_array($result))
  {
    echo('<td>');
    echo($r['maskintyp']);
    echo('</td>');
  }
?>
</tr>
</table>
Ich WEISS, dass ich in diesem Fall

Code: Alles auswählen

$result = mysql_query("SELECT
auf das nötigste kürzen soll.
ABER: ist das wirklich die einzige Art so eine Anzeige zu basteln? Kann doch nicht sein!

Es soll solange durchgerollt werden, bis
tillverkare, maskinbeteckning, maskintyp, produktion, antal, vikt, laengd, bredd, hoejd, raeckvidd, skopvolym, motor, motoreffekt, kommentar
alle einmal dran waren ...

Hat jemand bessere Ideen?

/Holger
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Öh, kannst Du Dein Vorhaben mal mit einer einfachen Liste anhand von "Inhalten" und nicht von Feldern aufführen?

Denn wenn ich es richtig verstanden habe, soll nicht ein Dateisatz in einer Zeile, sondern je Dateisatz nur ein Feld in einer Zeile stehen.
Also der Datensatz nicht nach rechts, sondern nach unten aufgeführt werden.
Richtig?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Beitrag von Holger »

[quote="oxpus";p="66425"]Denn wenn ich es richtig verstanden habe, soll nicht ein Dateisatz in einer Zeile, sondern je Dateisatz nur ein Feld in einer Zeile stehen.
Also der Datensatz nicht nach rechts, sondern nach unten aufgeführt werden.
Richtig?[/quote]
Japp!

Das Ergebnis:
http://www.gremminger.se/service/compare/visa.php
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

... nach deiner oben genannten Methode?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Beitrag von Holger »

Ja ...
Aber ich habe DESC in ASC geändert ...
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Naja, ist eigentlich einfach:

Alle Daten erst einmal einlesen und dann sortiert wieder ausgeben.
Dazu werden 2 verschachtelte Schleifen verwendet, die einmal die Felder und dann die Inhalte der einzelnen Datensätze herausfummelt.
Wie in der Anlage eben dargestellt (ungetestet).

Wenn Du Felder weglassen oder in der Reihenfolge ändern willst, dann einfach das Array "$titles" bearbeiten.
Diese Titel stellen dazu die Feldnamen in der Tabelle dar und werden zum Abfragen komplett in Kleinbuchstaben umgewandelt.
Wenn Du also andere Namen in der Darstellung verwenden willst, müsstest Du hierzu ein Alias in der Abfrage erstellen.
Also z. B.:

Code: Alles auswählen

$result = mysql_query("SELECT * FROM maskinlista ORDER BY registrerat ASC");
wird dann zu

Code: Alles auswählen

$result = mysql_query("SELECT *, tillverkare AS beschreibung FROM maskinlista ORDER BY registrerat ASC");
wobei "Beschreibung" dann der Alias ist, der in dem Array "$titles" wieder verwendet und damit angezeigt werden kann.

Denk aber dran, nur kleingeschriebene Namen in der Abfrage zu verwenden!
Dateianhänge
script.zip
(668 Bytes) 125-mal heruntergeladen
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Beitrag von Holger »

Hmm, habe mal das Script hochgeladen und getestet.
Output meine Version:
http://www.gremminger.se/service/compare/visa.php
Output Deine Version:
http://www.gremminger.se/service/compare/script.php

Da kommt nichts raus ...

EDIT: mein Fehler! Alles ok!
"registrerat" hatte ich geändert in "maskinbeteckning"
DANKE!
Ich werde vermutlich mehr Fragen hierzu haben, ich will nämlich eine Auswahl ermöglichen:
http://www.gremminger.se/service/compare/start.php

EDIT2: doch nicht richtig!
Du hast die $title verwendet für die Datenbankabfrage UND für die Reihentitel.
In der Datenbank ist "Hoejd" bzw "hoejd" zwar richtig, aber die Zeile hat den Titel "Höjd".
Böse Falle, gelle?!?!
Zuletzt geändert von Holger am Mi 15.Nov, 2006 09:14, insgesamt 3-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ich schrieb bereits: "ungetestet".
Konnte ich ja auch nicht, da ich die Tabelle nicht hatte ;)

Aber gut wenn es in deiner nun neuen Version klappt...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Beitrag von Holger »

Danke!
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Beitrag von Holger »

Hi, ich habe nun das Script im Einsatz:
http://www.maskinisten.net/compare/visa.php
Ich habe ganz vorne ja eine Beschreibung ("Tillverkare", "Maskinbeteckning" usw).
Diese Beschreibung würde ich alle fünf oder 10 Spalten anzeigen.

Geht das?

Gruss
Holger

Code: Alles auswählen

<table cellspacing="5">
<tr><td class="tdborder">Tillverkare</td>
<?php

$vergleich = (isset($HTTP_POST_VARS['vergleich'])) ? $HTTP_POST_VARS['vergleich'] : array(); 
$sql_where_ids = ''; 
if(sizeof($vergleich)) 
{ 
for ($i=0; $i<sizeof($vergleich); $i++) 
{ 
$sql_where_ids .= ($sql_where_ids != '') ? ', ' . $vergleich[$i] : $vergleich[$i]; 
} 
} 


if ($sql_where_ids) 
{ 
$sql_where_ids = ' WHERE id IN (' . $sql_where_ids . ') ';
}

$result = mysql_query("SELECT * FROM maskinlista $sql_where_ids ORDER BY id ASC");
  while ($r = mysql_fetch_array($result))
  {
    echo('<td class="tdborder"><b>');
    echo($r['tillverkare']);
    echo('</b></td>');
  }
?>
</tr>
<tr><td class="tdborder">Maskinbeteckning</td>
<?php
$vergleich = (isset($HTTP_POST_VARS['vergleich'])) ? $HTTP_POST_VARS['vergleich'] : array(); 
$sql_where_ids = ''; 
if(sizeof($vergleich)) 
{ 
for ($i=0; $i<sizeof($vergleich); $i++) 
{ 
$sql_where_ids .= ($sql_where_ids != '') ? ', ' . $vergleich[$i] : $vergleich[$i]; 
} 
} 


if ($sql_where_ids) 
{ 
$sql_where_ids = ' WHERE id IN (' . $sql_where_ids . ') ';
}
$result = mysql_query("SELECT * FROM maskinlista $sql_where_ids ORDER BY id ASC");
  while ($r = mysql_fetch_array($result))
  {
    echo('<td class="tdborder"><b>');
    echo($r['maskinbeteckning']);
    echo('</b></td>');
  }
?>
</tr>
usw
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ja, wenn Du die Tabelle in der Form aufbereitest, wie ich Dir das schon einmal genannt hatte.
Aktuell erstellst Du Zeile für Zeile mit einer Abfrage ...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Holger
Beiträge: 2253
Registriert: Mi 17.Mär, 2004 18:09

Beitrag von Holger »

Arrrg, ich wusste, mit der Seite war noch was zu tun. Sorry.
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Antworten