Zum Inhalt springen

PHP-Tabelle teilen / Als .exe binden


Empfohlene Beiträge

Hallo. Ich habe mal 2 Fragen.

Zum einen:

Ich habe eine Tabelle mit 759 Datensätzen. Also 759 Zeilen. Wie kann ich es machen, dass pro Seite nur 100 Datensätze angezeigt werden und man per klick (wo auch immer) auf die nächsten 100 Zeilen kommt?

Zum Anderen: Ich habe ein Haupt-Script und ca. 8 Unterscripte. Ist es möglich, dass ich das Ganze als Programm mache, also als .exe? Sprich (es geht um ein Frontend) dass dies wie ein Programm über eine .exe aufgerufen wird, die alle nötigen Scripte beinhaltet.

MfG

HdR

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe eine Tabelle mit 759 Datensätzen. Also 759 Zeilen. Wie kann ich es machen, dass pro Seite nur 100 Datensätze angezeigt werden und man per klick (wo auch immer) auf die nächsten 100 Zeilen kommt?

Du kannst Links definieren, die einen Parameter an Dein Script übergeben, z.B. die Startposition der Datensätze, oder die Seite, die angezeigt werden soll.

Dann kannst Du innerhalb Deines Scripts den SQL-Operator LIMIT benutzen, der es erlaubt nur eine bestimmte Zahl an Datensätzen auszulesen (LIMIT Start, Anzahl: "SELECT * FROM tabelle WHERE 1 LIMIT 10,20", um die Datensätze 10-30 zu erhalten...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

Zum Anderen: Ich habe ein Haupt-Script und ca. 8 Unterscripte. Ist es möglich, dass ich das Ganze als Programm mache, also als .exe? Sprich (es geht um ein Frontend) dass dies wie ein Programm über eine .exe aufgerufen wird, die alle nötigen Scripte beinhaltet.

Scripte in welcher Sprache?

Gruß,

Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zum Anderen: Ich habe ein Haupt-Script und ca. 8 Unterscripte. Ist es möglich, dass ich das Ganze als Programm mache, also als .exe? Sprich (es geht um ein Frontend) dass dies wie ein Programm über eine .exe aufgerufen wird, die alle nötigen Scripte beinhaltet.

PHP -> EXE? Nein. Die Installation müsste eine komplette PHP-Laufzeitumgebung mitbringen und zum Rendern von HTML-Seiten wäre noch immer ein Webbroser nötig.

Link zu diesem Kommentar
Auf anderen Seiten teilen

PHP -> EXE? Nein. Die Installation müsste eine komplette PHP-Laufzeitumgebung mitbringen und zum Rendern von HTML-Seiten wäre noch immer ein Webbroser nötig.

Fast richtig.

PHP notwendig: ja

HTML-Seiten: nein

Alternativen sind zum einem PHP-GTK oder ganz simpel, das CLI. Dann kannst alles in ein shellscript (nennt sich unter Windows batch) packen und dann das script starten

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo. Ich habe mal 2 Fragen.

Zum einen:

Ich habe eine Tabelle mit 759 Datensätzen. Also 759 Zeilen. Wie kann ich es machen, dass pro Seite nur 100 Datensätze angezeigt werden und man per klick (wo auch immer) auf die nächsten 100 Zeilen kommt?

MfG

HdR

bei mysql_fetch_array(bla bla<101)

und die zweite sache ist -> JAVASCRIPT, die benötigte funktion heisst glaube ich onClick()

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dann kannst Du innerhalb Deines Scripts den SQL-Operator LIMIT benutzen, der es erlaubt nur eine bestimmte Zahl an Datensätzen auszulesen (LIMIT Start, Anzahl: "SELECT * FROM tabelle WHERE 1 LIMIT 10,20", um die Datensätze 10-30 zu erhalten...

Vorsicht !

Kein SQL-Standard. Funktioniert nur bei einer MySQL.

Aber da du ja genau garkeine Infos über dein RDBMS gibst....

gruss

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vielleicht hätte ich noch schreiben sollen, dass ich weiss, welches RDBMS er verwendet ;)

--> MySQL

Edit: Aber das wiederum macht eine Standalone-Version Deiner Scripte auch nicht einfacher, da auch ein DBMS mitgeliefert oder eine andere Art der Datenhaltung verwendet werden muss...

Link zu diesem Kommentar
Auf anderen Seiten teilen

HTML-Seiten: nein

Ich denke man kann davon aussgehen, dass sein (bereits fertiges) Skript zur Ausgabe intensiv von HTML-Formatierungen gebrauch macht. Diese Ausgaben auf eine Konsole zu schreiben oder gar ein komplett neues GUI zu entwickeln ist vermutlich nicht das, was ihm vorschwebte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 Monat später...

*Push*

Hallo.

Also, es geht nochmal um die Zeilenbegrenzung.

Ich habe momentan 750 Testitems in meiner Datebank. Also 750 Zeilen.

Ich habe die Anzeige auf 250 begrenzt. Wie stelle ich das am Besten an, dass ich in dem Datenbankkopf z.B. die Zeichen '<' und '>' darstelle und durch ein Klick auf '>' die nächsten 250 bzw. auf '<' die vorigen 250 Zeilen angezeigt werden?

Das ist der Code, in dem die Zeilenbegrenzung eingebaut ist:

$sql = "SELECT * FROM Testfall WHERE 1 LIMIT 0,250";

$datenbank = "ppsfr_spielwiese";

mysql_select_db($datenbank,$db_handle);

if (isset($_GET['suche'])) {

$filter = $_GET['suche'];

$was = $_GET['was'];

$sql = "SELECT * FROM Testfall WHERE ".$was." LIKE '".mysql_escape_string($filter)."%'";

}

else $sql = "SELECT * FROM Testfall WHERE 1 LIMIT 0,250";

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hattest Du nicht in Post #10 geschrieben, dass diese Aufteilung auf mehrere Seiten bereits funktioniert?

Wie hast Du das denn gelöst? Jetzt sag nicht, Du hast für jede Seite ein eigenes SQL-Statement gebastelt ;)


$itemsPerPage = 250;
$aktPage = $_REQUEST['aktPage'];
if ($aktPage > 0) {
$vonPos = ($aktPage-1) * $itemsPerPage;
}
else $vonPos = 0;


$query = "SELECT .... LIMIT ".$vonPos.",".$itemsPerPage;
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Monty82:

Ja, es funzt in dem Sinne (auch damals in dem Sinne, wohl falsch ausgedrückt) dass ich mir nur eine gewissen Anzahl an Datensätzen ausgeben lasse.

Das geht (In dem Fall die ersten 250).

Nur, ich will das so machen, dass ich durch Klicken auf '<' und '>' automatisch die nächsten bzw. vorigen 250 Datensätze sehe.

Das ging damals nicht, hab mich auch net weiter bis jetzt drum gekümmert. Aber jetzt wäre es ganz gut, wenns geht.

@ Wolle:

Also, sagen wir als Variable nehme ich x. Diese Variable hat Standardmäßig den Wert '0'.

Dieser soll, bei Klick auf '>' automatisch auf x+250 gesetzt werden. Das versteh ich soweit.

Aber wie mache ich das, dass er bei Klick auf '>' die Variable 'x' verändert?

Wie mache ich das? OnClick??

Und naja, bei der Einschränkung (!= < 0) bzw. bei den aktuellen Datensätzen (!= > 759) muss ich halt mal sehen, ob und wie ich das hinbekomme.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich mach's meistens so, es gibt bestimmt auch andere Möglichkeiten:


$itemCount = 795; //Hier bitte die Anzahl der gefunden Zeilen ermitteln...


$itemsPerPage = 250;
$pageCount = ceil($itemCount/$itemsPerPage);

$aktPage = $_REQUEST['aktPage'];
if ($aktPage > 0) {
$vonPos = ($aktPage-1) * $itemsPerPage;
}
else $vonPos = 0;

if ($aktPage > 1) echo "<a href=\"".$PHP_SELF."?aktPage=".($aktPage - 1)."\">zurück</a> ";

if ($aktPage < $pageCount) echo "<a href=\"".$PHP_SELF."?aktPage=".($aktPage + 1)."\">vor</a> ";


$query = "SELECT .... LIMIT ".$vonPos.",".$itemsPerPage;
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

*EDIT-Button not available;) *

Also, ich denke mal ich bin schon bissl weitergekommen. Fehlt wohl mal wieder der letzte Schliff:D

Also.

Hier seht ihr, was bei dem Klick auf '<' passiert:

<td colspan='1' heigth='20' class='headline12' align='center'>

<a href='testdatenbank.php?action=x'><</a>

<a href='testdatenbank.php' style='color:white'>></a>

</td>

Dieses 'Action' wird dann aufgerufen:

if (!empty($_GET['action']) && $_GET['action'] == "x")

{

$x = $x + 250;

echo $x; <= Das 'x' habe ich weiter oberhalb als $x = 0; definiert. Aber hier wird, korrekterweise, ein 250 ausgegeben. Dürfte bis hier also funktionieren!

$sql = "SELECT * FROM Testfall WHERE 1 LIMIT ".$x.",250";

if (!mysql_query($sql))

{

die("MySQL-Fehler:".mysql_error());

}

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

*EDIT*

Es funktioniert.

So, wie ich es geschrieben habe (habs nur verrafft, dass es geht-.-).

Aber:

Standard wird angezeigt: 0-250

Durch den klick: 250-500

Durch einen weiteren Klick: SOLLTE 500-750. Aber er zeigt weiterhin 250-500 an.

Jetzt andersrum:

<a href='testdatenbank.php?action=y'><</a>

Führt zu der Action:

if (!empty($_GET['action']) && $_GET['action'] == "y")

{

$y = $x - 250;

echo $y;

$sql = "SELECT * FROM Testfall WHERE 1 LIMIT ".mysql_escape_string($y).",250";

if (!mysql_query($sql))

{

die("MySQL-Fehler:".mysql_error());

}

}

Soll heissen: Aktuell hat x den Wert 250. So soll er wieder auf 0 kommen.

Aber, das Problem ist, dass er x irgendwie nicht richtig speichert.

Ich definiere am Anfang des Scriptes $x=0;

Dadurch, dass ich den Wert x auf 250 setze, speichert er das aber nur in diesem Action-Tag.

*EDIT (Diesmal gehts;))*

Ich habe am Anfang des Scriptes das $x=0; entfernt. Er zeigt mir trotzdem nach dem klicken auf '>' die Datensätze 250-500 an. Er gibt mir zwar ein Notice aus (Undefined Variable x), aber es geht. Bei einem weiteren Klick auf '>' zeigt er mir aber trotzdem die 250-500 an. Nicht die 500-750.:(

Und das $x wird weiterhin nicht richtig gespeichert. Er versucht bei $y nämlich die datensätze -250-0 anzuzeigen-.-

Link zu diesem Kommentar
Auf anderen Seiten teilen

OK, auf Deine Bitte hin nochmal zum Mitschreiben ;)


$itemsPerPage = 250;
$startPos = $_REQUEST['startPos'];
if (!($startPos >= 0)) $startPos = 0;

$query = "SELECT ... FROM ... LIMIT ".$startPos.",".$itemsPerPage;
...


//Und hier jetzt die "Navigationsleiste"
if ($startPos >= $itemsPerPage) {
echo "<a href=\"".$PHP_SELF."?startPos=".$startPos-$itemsPerPage."\">«</a> ";
}

//Hier kannst Du jetzt noch Abfangen, ob überhaupt noch weitere Ergebnisse vorhanden sind...
echo "<a href=\"".$PHP_SELF."?startPos=".$startPos+$itemsPerPage."\">»</a> ";
[/PHP]

Edit: Vielleicht noch zur Erklärung: Du musst den aktuellen Startwert dynamisch wieder mit an Dein Script übergeben, damit Du überhaupt einen Wert hast, der bei jedem Blättern erhöht oder erniedrigt werden kann...

Sonst wäre das immer 0, da PHP sich die Variablen nicht automatisch zwischen verschiedenen Seitenaufrufen merken kann (wenn man ohne Sessions arbeitet), aber das hast Du ja bereits gemerkt ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...