Tabellenkopf und Tabelle bei php
| Verfasst am: 22. 09. 2010 [09:52] | |||
| Gelöschter Benutzer | Beitrag hilfreich? | ||
| Hallo zusammen! Ich habe einmal eine Frage, und ein Problem: Zur Frage: Ich habe eine Datenbank mit Daten eines Bücherarchivs. Wenn man auf dieser Seite im Suchfeld z. B. Max Schwarze angibt und auf 'Suchen' klickt, erhält man auf der nächsten Seite die im Archiv vorhandenen Bücher des Autors aufgelistet. Die Frage ist jetzt, wie bekomme ich es hin, das Tabellenkörper und Tabellenkopf die selben Ausmaße in der Breite haben. Ist es möglich den Tabellenkopf mit php zu erstellen und zu fixieren, damit bei evtl. notwendigem scrollen die Spaltenbeschriftung sichtbar bleibt? Das Problem, welches ich habe, ist, das der ganze Vorgang bislang mit FF funktioniert. Der IE sagt nach dem Klick auf den 'Suchen'-Button 'Seite nicht gefunden'. Wo kann der Fehler liegen? Die Dateien sehen wie folgt aus: Die HTML-Datei zur Abfrage HTML <html>
<head>
<title>Das Buch-Archiv des MTV-Treubund Lüneburg v. 1848 e.V. durchsuchen</title>
</head>
<body>
<h1>Was suchen Sie?</h1>
<form action="archiv.php" method="post">
<p><strong>Suchbegriff eingeben:</strong></p>
<p>
<input name="searchterm" type="text">
<input name="submit" type="submit" value="Suchen">
</p>
</form>
</body>
</html>Die Datei zur Ausgabe sieht so aus: PHP <?php $verbindung = mysql_connect("localhost", "benutzername","passwort") or die ("Keine Verbindung moeglich"); mysql_select_db("benutzername") or die ("Die Datenbank existiert nicht."); ?> <head> <title>Ergebnis Durchsuchen des Buch-Archivs MTV-Treubund</title> <style type="text/css"> .five{width:5%;} .ten{width:10%;} .fifteen{width:15%;} .eight{width:8%;} </style></head> <h1>Die Suche brachte folgende Ergebnisse</h1> <table width="530" border="3"> <tr> <td width="10">Kategorie</td> <td width="20">Nummer</td> <td width="30">Verfasser</td> <td width="30">Titel</td> <td width="30">Verlag</td> <td width="10">Verlagsort</td> <td width="10">Erschienen</td> <td width="10">Seiten</td> </tr> <?php $abfrage = " SELECT Kategorie, Nummer, Verfasser, Titel, Verlag, Verlagsort, Jahr, Seiten FROM Tabelle1 WHERE Verfasser ='" . mysql_real_escape_string($_POST['searchterm'], $verbindung) . "' "; $ergebnis = mysql_query($abfrage, $verbindung) or die ("MySQL-Fehler: " . mysql_error()); echo '<table width="530" border="1">'; while($row = mysql_fetch_object($ergebnis)) { echo "<tr>"; echo "<td class='five'><a href='$row->download'>" . $row->Kategorie . "</a></td>"; echo "<td class='five'>". $row->Nummer . "</td>"; echo "<td class='fifteen'>". $row->Verfasser . "</td>"; echo "<td class='fifteen'>". $row->Titel . "</td>"; echo "<td class='fifteen'>". $row->Verlag . "</td>"; echo "<td class='fifteen'>". $row->Verlagsort . "</td>"; echo "<td class='five'>". $row->Jahr . "</td>"; echo "<td class='five'>". $row->Seiten . "</td>"; echo "</tr>"; } echo "</table>"; mysql_free_result( $ergebnis ); ?> [Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 22.09.2010 um 09:54.] | |||
| Verfasst am: 22. 09. 2010 [11:00] | |||
Ultima Dabei seit: 09.07.2010 ![]() 759 Beiträge | Beitrag hilfreich? | ||
| Warum machst du nicht einfach alles in eine Tabelle und nicht in 2? Wenn ich auf die Seite gehe kommen nur Fehlermeldungen. Wenn du die Tabelle in Body und Head unterteilst sollte das mit dem Scrollen auch kein Problem sein. Gruß Thomas Mein Portal: Ultima-Project.net - Gold für alle | |||
| Verfasst am: 22. 09. 2010 [11:03] | |||
| Gelöschter Benutzer | Beitrag hilfreich? | ||
| Hallo! Danke erstmal für die Antwort. Ich bin beim ausprobieren, desweghen kommen die Fehlermeldungen! | |||
| Verfasst am: 22. 09. 2010 [11:05] | |||
romacron Dabei seit: 01.11.2009 ![]() 1143 Beiträge | Beitrag hilfreich? | ||
| Hallo Marcus, Möchtest Du dieses Skript denn in/neben der Joomla installation laufen lassen? Nimmst Du die selbe Datenbank, in der auch Joomla gespeichert wird? | |||
| Verfasst am: 22. 09. 2010 [11:35] | |||
joerg Dabei seit: 09.06.2009 ![]() 1540 Beiträge | Beitrag hilfreich? | ||
| Hallo Marcus Also erstmal würde ich für den Kopf der Tabelle th statt td verwenden. Und dein Problem das der Kopf und der Körper eine unterschiedliche Breite haben kommt halt eben dadurch das du unterschiedliche Angaben der Breite vornimmst. Gruß Jörg | |||
| Verfasst am: 22. 09. 2010 [11:53] | |||
| Gelöschter Benutzer | Beitrag hilfreich? | ||
| Hallo Roman, Hallo Joerg! @Jörg: Danke für den Hinweis. Werde ich mal ändern. Das ist das erste 'Projekt', was ich in Verbindung mit php programmiere. @roman: Nein, das ist eine separate DB und auch nur auf der Domain, damit ich einen Platz habe, wo ich das ausprobieren kann. Wenn das so läuft wie ich es mir vorstelle, geht das wie ich hoffe auf den Server des Sportvereins. Weil die die Bücher auch an Unis und Sportverbände verleihen wollen. Gruß Marcus | |||
| Verfasst am: 22. 09. 2010 [16:06] | |||
| Gelöschter Benutzer | Beitrag hilfreich? | ||
| Hallo zusammen! Ich habe das jetzt erst einmal tatsächlich fertig gebracht, die Tabelle in einem Stueck auszugeben. So hat man zumindest schon mal eine komplette Uebersicht. Woran ich jetzt (trotz einer im Net gefundenen Vorlage) scheitere ist, nach einen Begriff - also Teil eines Autoren-Namens, eines Buchtitels oder Verlages - zu suchen. Wenn man hier irgendeinen Begriff eingibt, haut er trotzdem die ganze Liste raus, und nicht nur das, wonach man gesucht hat. Weiß da jemand Rat? Danke und Gruß Marcus Quelltext Suchmaske: HTML <html>
<head>
<title>Das Buch-Archiv des MTV-Treubund Lüneburg v. 1848 e.V. durchsuchen</title>
</head>
<body>
<center><h2>Hier haben Sie die Möglichkeit, das Archiv zu durchsuchen. Geben Sie einfach einen Begriff ein, nach dem Sie suchen lassen möchten</h2></center>
<h3>Was suchen Sie?</h3>
<form action="suche.php" method="post">
<p><strong>Suchbegriff eingeben:</strong></p>
<p>
<input name="anf"><p>
<input type="submit" value="Suchen">
<input type="reset" value="Abbrechen">
</p>
</form>
</body>
</html>Quelltext Suchergebnis-Ausgabe PHP <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <?php $db = mysql_connect("Ort","Datenbank","passwort"); $sqlab = "select Verfasser, Titel, Kategorie, Verlag, Verlagsort from Tabelle1"; $sqlab .= " where Verfasser like '$anf%' "; $res = mysql_db_query("datenbank", "$sqlab"); $num = mysql_num_rows($res); if ($num==0) echo "keine passenden Datensätze gefunden"; // Tabellenbeginn echo "<table border>"; // Überschrift echo "<tr> <td>lfd. Nr.</td> "; echo "<td>Verfasser</td> <td>Titel</td>"; echo "<td>Verlag</td> <td>Verlagsort</td></tr>"; for ($i=0; $i<$num; $i++) { $ka = mysql_result($res, $i, "Kategorie"); $au = mysql_result($res, $i, "Verfasser"); $ti = mysql_result($res, $i, "Titel"); $ve = mysql_result($res, $i, "Verlag"); $vo = mysql_result($res, $i, "Verlagsort"); $lf = $i + 1; // Tabellenzeile mit -zellen echo "<tr> <td>$lf</td> <td>$au</td>"; echo "<td>$ti</td> <td>$ve</td>"; echo "<td>$vo</td> </tr>"; } // Tabellenende echo "</table>"; mysql_close($db); ?> </body> </html> [Dieser Beitrag wurde 3mal bearbeitet, zuletzt am 22.09.2010 um 16:36.] | |||
| Verfasst am: 22. 09. 2010 [16:39] | |||
joerg Dabei seit: 09.06.2009 ![]() 1540 Beiträge | Beitrag hilfreich? | ||
| Hallo Markus Das sollte wohl reichen. Du brauchst eine Weiche die überprüft ob eine Abfrage vorgenommen worden ist. Und wenn nicht wird halt eben eine Standardabfrage gemacht. PHP if (!isset($_Post['text']))
{
$datenbank = '';
}
else
{
$datenbank = ' WHERE autor = % '.$_Post['text'].'%';
}Und wenn du soviel Suchmöglichkeiten hast solltest du auch entsprechend viele Eingabefelder dann auch haben. Und dann kommst du an den Punkt das du wiederum überprüfen musst ob bereits was in der Abfrage steht für die Mysql Datenbank. Und ab dem Punkt ist es sinnvoll sowas zu haben. PHP function whereand ()
{
global $datenbank;
$whereand = '';
if (strpos($datenbank,"WHERE")===false)
{
$whereand = ' WHERE ';
}
else
{
$whereand = ' AND ';
}
return $whereand;
}Und dann sieht das wiederum etwas komplexer danach aus. PHP if (isset( $_Post['title']))
{
$datenbank .= ''.whereand().' title = %'.$_Post['titel'].'%';
}Du solltest mehr suchen und ausprobieren dann fällt dir das nächste Problem wiederum leichter zu lösen. So habe ich mir PHP auch angeeignet. Jetzt ist der Nachteil da das du den Weg nicht richtig verstehst. Macht jetzt 3 Euro 50. Gruß Jörg Marcus schrieb: Weiß da jemand Rat? http://ca2.php.net/ [Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 22.09.2010 um 16:51.] | |||
| Verfasst am: 22. 09. 2010 [16:56] | |||
| Gelöschter Benutzer | Beitrag hilfreich? | ||
| Hallo Jörg! Danke für Deine Mühe, werd mir den Link mal anschauen. Gruß Marcus | |||
| Verfasst am: 22. 09. 2010 [17:38] | |||
UFOMelkor Dabei seit: 20.10.2009 ![]() 348 Beiträge | Beitrag hilfreich? | ||
| Hallo Markus, ein par Anmerkungen zu deinem Quellcode: Marcus schrieb: PHP <?php $sqlab = "select Verfasser, Titel, Kategorie, Verlag, Verlagsort from Tabelle1"; $sqlab .= " where Verfasser like '$anf%' "; Wo wird bei dir die Variable $anf gesetzt, holst du die explizit aus einer GET/POST Variablen? Das Stichwort auf das ich hinausmöchte ist register_globals. mysql_db_query ist veraltet, du solltest stattdessen mysql_select_db und mysql_query nutzen. (siehe http://de.php.net/mysql_db_query.) Das Umschließen von $sqlab ist unnötig, die Variable ist ja bereits vom Typ String. Marcus schrieb: PHP <?php $ka = mysql_result($res, $i, "Kategorie"); $au = mysql_result($res, $i, "Verfasser"); $ti = mysql_result($res, $i, "Titel"); $ve = mysql_result($res, $i, "Verlag"); $vo = mysql_result($res, $i, "Verlagsort"); Ich empfehle dir dringen, von derartigen Abkürzungen Abstand zu nehmen. Code wird immer nur einmal geschrieben, aber meist öfter gelesen. Die paar Sekunden, die du fürs Tippen längerer Variablen brauchst, die holst du locker wieder rein, wenn du irgendwann mal Änderungen vornehmen willst. Das Tutorial was du angegeben hast, beruht noch auf PHP 4. Die aktuelle PHP Version ist 5.3, ich würde dir ein aktuelleres Tutorial empfehlen: http://tut.php-quake.net/de/ @Jörg: Achtung, du hast eine schwere Sicherheitslücke in deinem Code! Traue niemals den Eingaben der Benutzer (auch nicht in Beispielen). Alles was irgendwie von außen kommt, muss erst überprüft bzw. maskiert werden: PHP <?php if (!isset($_Post['text'])) { $datenbank = ''; } else { $datenbank = " WHERE autor = '%" . mysql_real_escape_string($_Post['text'], $db) ."%'"; } Deine Funktion wäre wesentlich variabler einsetzbar, wenn du auf global verzichten würdest: PHP <?php function whereAnd($actWhere) { if (striPos($actWhere,"WHERE") === false) { return ' WHERE '; } return ' AND '; } Generell sind global und eval auf die man so oft wie möglich verzichten sollte. | |||
Du bist nicht eingeloggt. Bitte beachte, dass Du eingeloggt sein musst, um Themen zu erstellen oder auf Beiträge zu antworten.
Werde in Echtzeit über neue Foren-Beiträge informiert:
2 Mitglieder waren innerhalb der letzten 15 Minuten online (11 heute gesamt):
onkelschorsch, phpmix
Administratoren und Moderatoren:
[keine]
Seitenreport hat 18136 registrierte Mitglieder, 3002 Themen und 29106 Beiträge.
Der aktuelle Mitgliederzuwachs liegt bei durchschnittlich 12 bestätigten Neuregistrierungen pro Tag.
Pro Tag werden im Seitenreport Forum durchschnittlich 1 neues Thema und 8 Beiträge erstellt.
Die Durchschnittszahlen berechnen sich aus den letzten 7 Tagen.

Lade...
Neueste Foren-Beiträge
| Partnerprogramm: Eintrag für Kunden erledigt Internes & Ankündigungen / Internes | Gestern [10:35] | |
| Hotelbericht Entwickler Treffpunkt / Website vorstellen | Gestern [09:28] | |
| Ab 1. August neue Button-Regelung für Shopbetreiber Internet / News | Gestern [07:28] | |
| Statt Domain erscheint das Verzeichnis Webserver / htaccess | 21. 05. 2012 [17:00] | |
| Statcounter - Chrome vor IE Web-Entwicklung / Sonstige | 21. 05. 2012 [14:34] |
Lade...
Aktuelle Artikel:
Facebook - eine neue Tech-Blase?
Facebook ist in den vergangenen Tagen wegen seines Börsenganges und den dabei eingefahrenen Investorengeldern von 16 Milliarden Dollar großflächig in die Kritik geraten. Der Marktwert von 104 Milliarden Dollar wird von vielen als maßlos übertrieben angesehen. Ist Facebook eine neue Internet-Blase, die in den nächsten Jahren platzen wird?
Suchmaschinenoptimierung seit dem Google Penguin Update
Das neue Update vom Branchenriesen Google wird in Seo-Kreisen gerne mit einem Erdbeben verglichen. Diese Metapher trifft die Sachlage sehr gut, denn der Pinguin bringt die Arbeitsfundamente der Suchmaschinenoptimierer gehörig ins Wanken.
Tipps für den guten Start ins Business
Sich selbstständig machen, eine Firma gründen und direkt ins eigenständige Berufsleben einzusteigen klingt spannend und irgendwie auch einfach. Doch einfach ist es ganz und gar nicht...
Facebook - eine neue Tech-Blase?
Facebook ist in den vergangenen Tagen wegen seines Börsenganges und den dabei eingefahrenen Investorengeldern von 16 Milliarden Dollar großflächig in die Kritik geraten. Der Marktwert von 104 Milliarden Dollar wird von vielen als maßlos übertrieben angesehen. Ist Facebook eine neue Internet-Blase, die in den nächsten Jahren platzen wird?
18. Mai 2012
Suchmaschinenoptimierung seit dem Google Penguin Update
Das neue Update vom Branchenriesen Google wird in Seo-Kreisen gerne mit einem Erdbeben verglichen. Diese Metapher trifft die Sachlage sehr gut, denn der Pinguin bringt die Arbeitsfundamente der Suchmaschinenoptimierer gehörig ins Wanken.
15. Mai 2012
Tipps für den guten Start ins Business
Sich selbstständig machen, eine Firma gründen und direkt ins eigenständige Berufsleben einzusteigen klingt spannend und irgendwie auch einfach. Doch einfach ist es ganz und gar nicht...
14. Mai 2012



