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 |
13.01.2011, 10:23:09
|
Anfänger
|
|
Registriert seit: Jan 2011
Alter: 41
Beiträge: 6
|
|
Ausgabe von mehreren Datensätzen in Tabellen
Hallo! Habe folgendes Problem: ich habe für meine WEB-Seite eine Suchfunktion gebastelt, mit der ich die gesamte Datenbank nach einem Suchbegriff durchsuchen kann. Alles funktioniert einwandfrei, mir fehlt bloß eine korrekte Ausgabe von Datensätzen. Ich möchte, dass alle Datensätze in zugehörigen HTML-Tabellen ausgegeben werden, z.B. so:
Tabelle - Organisation
------------------------
ID Nummer Bezeichnung Leiter Knotenpunkt
62 2 zwei 1 0
65 5 eins 2 3
Bei mir sieht die Ausgabe momentan so aus:
Tabelle - Organisation
------------------------
ID Nummer Bezeichnung Leiter Knotenpunkt
62 2 zwei 1 0
Tabelle - Organisation
------------------------
ID Nummer Bezeichnung Leiter Knotenpunkt
65 5 eins 2 3
D.h. jeder Eintrag aus einer SQL-Tabelle wird in jeweils eine HTML-Tabelle eingepackt. Ich möchte aber, dass mehrere Einträge die zu einer SQL-Tabelle gehören in einer Tabelle ausgegeben werden.
Wie kann ich dieses Problem lösen?
Ich würde mich auf jede Antwort sehr freuen! Vielen Dank!
Hier ist der Code:
PHP-Code:
function mysqlSearch($volltext)
{
// replace multiple whitespaces with a simple blank
$aSearch = explode(' ', preg_replace('#\s+#', ' ', $volltext));
// count search words once
$iSearch = count($aSearch);
if ($iSearch == 0) {
return array();
}
// remove addslashes (automatically executed by php) and use mysql_real_escape_string instead. it's more secure against sql injection
if (get_magic_quotes_gpc()) {
$aSearch = array_map('stripslashes', $aSearch);
}
$aSearch = array_map('mysql_real_escape_string', $aSearch);
// get all tables in selected database
$sSQL1 = 'SHOW TABLES';
$rRes1 = mysql_query($sSQL1);
// save hits
$aHits = array();
while ($aTable = mysql_fetch_array($rRes1)) {
$sTable = $aTable[0];
// get all columns from each table
$sSQL2 = "SHOW COLUMNS FROM `$sTable`";
$rRes2 = mysql_query($sSQL2);
// combine search words with columns
$aPermutation = array();
while ($aColumn = mysql_fetch_assoc($rRes2)) {
$sColumn = $aColumn['Field'];
for ($i = 0; $i < $iSearch; $i++) {
$volltextword = $aSearch[$i];
$aPermutation[] = "MATCH($sColumn) AGAINST ('.%$volltext%.' IN BOOLEAN MODE)";
}
}
// combine as OR-condition
$sSQL4 = "SELECT * FROM `$sTable` WHERE " . implode(' OR ', $aPermutation);
$rRes4 = mysql_query($sSQL4);
// collect result
while ($aHit = mysql_fetch_assoc($rRes4)) {
$aHits[$sTable][] = $aHit;
$total_cols = count($aHit);
$total_rows = mysql_num_rows($rRes4);
print "<HTML><BODY>";
print "<br></br>";
print "<p><table width='40%' border='1' cellspacing='0' cellpadding='0' align='left'>";
print "<tr><td colspan=$total_cols align=center><b>".$sTable."</b> </td> </tr>";
$sSQL2 = "SHOW COLUMNS FROM `$sTable`";
$rRes2 = mysql_query($sSQL2);
while ($aColumn = mysql_fetch_assoc($rRes2)) {
$sColumn = $aColumn['Field'];
print "<td>";
print $sColumn." ";
print "</td>";
}
print "<tr>";
foreach($aHit as $cell){
echo "<td>$cell</td>";
}
print "</tr>";
print "</TABLE></BODY></HTML>";
print "<br></br>";
print "<br></br>";
// var_dump($aHit);
}
}
print "<br>";
//return $aHits;
}
echo mysqlSearch($volltext);
}
|
13.01.2011, 11:45:43
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Ausgabe von mehreren Datensätzen in Tabellen
Schau Dir im speziellen noch mal die Ausgabe an:
PHP-Code:
$total_rows = mysql_num_rows($rRes4);
print "<HTML><BODY>";
print "<br></br>";
print "<p><table width='40%' border='1' cellspacing='0' cellpadding='0' align='left'>";
print "<tr><td colspan=$total_cols align=center><b>".$sTable."</b> </td> </tr>";
$sSQL2 = "SHOW COLUMNS FROM `$sTable`";
$rRes2 = mysql_query($sSQL2);
while ($aColumn = mysql_fetch_assoc($rRes2)) {
$sColumn = $aColumn['Field'];
print "<td>";
print $sColumn." ";
print "</td>";
}
print "<tr>";
foreach($aHit as $cell){
echo "<td>$cell</td>";
}
print "</tr>";
print "</TABLE></BODY></HTML>";
print "<br></br>";
print "<br></br>";
// var_dump($aHit);
}
}
print "<br>";
Hier musst Du ansetzen. Ziehe den notwendigen HTML-Teil vor bzw. hinter Deine Schleifen.
PS: Wozu sind die Zeilenumbrüche nach dem Ende des HTML-Teils?
PPS: Es gibt keine HTML-Tabellen!
PPPS: Für eine bessere und schnelle Hilfe formatiere bitte zukünftig Deinen Code besser.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
13.01.2011, 12:31:17
|
Anfänger
|
|
Registriert seit: Jan 2011
Alter: 41
Beiträge: 6
|
|
AW: Ausgabe von mehreren Datensätzen in Tabellen
Danke für die Antwort! Den HTML-Teils habe ich hinter der Schleife gezogen. Nun wird mir gar nichts ausgegeben( Wo ist der Fehler?
PHP-Code:
$total_cols = count($rRes4);
$total_rows = mysql_num_rows($rRes4);
while ($aHit = mysql_fetch_assoc($rRes4)) {
$aHits[$sTable][] = $aHit;
}
}
return $aHits;
print "<HTML><BODY>";
print "<p><table width='40%' border='1' cellspacing='0' cellpadding='0' align='left'>";
print "<tr><td colspan=$total_cols align=center <b>".$sTable."</b> </td> </tr>";
print "<td>";
print $sColumn." ";
print "</td>";
print "<tr>";
foreach($aHit as $cell){
echo "<td>$cell</td>";
}
print "</tr>";
print "<br>";
print "</TABLE></BODY></HTML>";
}
echo mysqlSearch($volltext);
}
Zitat:
Zitat von vt1816
Hier musst Du ansetzen. Ziehe den notwendigen HTML-Teil vor bzw. hinter Deine Schleifen.
PS: Wozu sind die Zeilenumbrüche nach dem Ende des HTML-Teils?
PPS: Es gibt keine HTML-Tabellen!
PPPS: Für eine bessere und schnelle Hilfe formatiere bitte zukünftig Deinen Code besser.
|
|
13.01.2011, 12:44:29
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Ausgabe von mehreren Datensätzen in Tabellen
Es sollte ja nicht alles hinter die Schleifen.
Vor die Schleife(n):
PHP-Code:
print "<HTML><BODY>";
print "<p><table width='40%' border='1' cellspacing='0' cellpadding='0' align='left'>";
In die Schleife(n) und die richtigen Stelle(n):
PHP-Code:
print "<tr><td colspan=$total_cols align=center><b>".$sTable."</b> </td></tr>";
print "<tr><td>";
print $sColumn ." ";
print "</td></tr>";
foreach($aHit as $cell)
{
echo "<td>$cell</td>";
}
Hinter die Schleife(n):
PHP-Code:
print "</TABLE></p></BODY></HTML>";
**ungetestet!!**
Bitte prüfe selbstständig noch die richtige Syntax. Schalte dazu die Fehleranzeige ein bzw. höher.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
13.01.2011, 14:04:12
|
Anfänger
|
|
Registriert seit: Jan 2011
Alter: 41
Beiträge: 6
|
|
AW: Ausgabe von mehreren Datensätzen in Tabellen
Wenn ich die zeile:
PHP-Code:
print "<tr><td colspan=$total_cols align=center><b>".$sTable."</b> </td> </tr>";
in die Schleife einfüge, dann kriege ich dasselde Problem wie am Anfang - zwei Enträge aus der gleichen SQL-Tabelle werden separat dargestellt.
Wenn außerhalb der Schleife - werden Sie korrekt dargestellt aber es werden dann die gesamte Datenbank ausgegeben(( Ich werd langsam verrückt...
|
14.01.2011, 11:21:56
|
Anfänger
|
|
Registriert seit: Jan 2011
Alter: 41
Beiträge: 6
|
|
AW: Ausgabe von mehreren Datensätzen in Tabellen
Habe Suchfunktion und Ausgabe voneinander getrennt, das Problem ist aber nicht verschwunden, es wird trotzdem für jeden Eintrag eine Tabelle gebaut.Bitte SOS!!!
PHP-Code:
.......
$sSQL4 = "SELECT * FROM `$sTable` WHERE " . implode(' OR ', $aPermutation);
$rRes4 = mysql_query($sSQL4);
// collect result
$total_rows = mysql_num_rows($rRes4);
$sSQL6 = "SHOW COLUMNS FROM `$sTable`";
$rRes6 = mysql_query($sSQL6);
while ($aHit = mysql_fetch_assoc($rRes4)) {
$total_cols = count($rRes4);
$aHits[$sTable][] = $aHit;
print "<tr>";
print "<td colspan=$total_cols align=center><b>".$sTable."</b></td>";
print "</tr>";
while ($aColumn = mysql_fetch_assoc($rRes6)) {
$sColumn = $aColumn['Field'];
print "<td>";
print $sColumn." ";
print "</td>";
}
print "<tr>";
foreach($aHit as $cell){
print "<td>$cell</td>";
}
print "</tr>";
}
return $aHits;
}
}
print "</TABLE></BODY></HTML>";
echo mysqlSearch($volltext);
}
|
14.01.2011, 16:05:35
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: Ausgabe von mehreren Datensätzen in Tabellen
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
14.01.2011, 16:14:54
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Ausgabe von mehreren Datensätzen in Tabellen
Crossposting
[mod: closed]
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
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 11:10:31 Uhr.
|