Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Abfrage einmalig durchführen

hi zusammen,
ich sitze grade wieder über mein gästebuch projekt und tüftle schonwieder rum. vielleicht steh ich grade auch nur kurzfristig auf dem schlauch - aber mich verfolgt nun schonwieder 1-2 stunden ein problem zu dem ich nicht den geringsten lösungsansatz finde.

folgendes:
angenommen in meinem gästebuch sind 10 einträge. Die IDS 1 - 10 sind damit belegt. Nun hab ich eine Seitenfunktion programmiert, die sich mit mysql_num_rows die höchste ID holt (hier ID: 10) und dann in der Variable $zaehler immer die Variable $beitraege (steht für Beiträge pro Seite) abzieht.

Zudem habe ich noch eine Option zum Löschen von Beiträgen eingebaut. Lösche ich jetzt zum Beispiel den Beitrag mit der ID 6, so gibt mir mysql_num_rows 9 zurück. Ist ja auch logisch. Nur leider hilft mir das bei meiner Seitenfunktion null weiter - sondern behindert nur die Ausgabe.

Weil jetzt wird nur noch ab Beitrag 9 ausgegeben, d.h. Beitrag 10 existiert zwar noch wird aber nichtmehr ausgegeben - dafür wird der Beitrag 6 ausgegeben, mit einer leeren Tabelle.

Mein erster Lösungsgedanke war, das ich mir alle vorhandenen Datensätze ausgeben lasse mit mysql_num_rows - welches mir sagt du hast 10 Datensätze und überprüfe dann auf eine Variable die immer gesetzt wird in der MYSQL-DB (z.b. ip) - ob diese vorhanden ist. Ich lasse mir dann nur diese ausgeben in der das Feld mit z.b. ip belegt ist.

Nächstes Problem: Das Programm zeigt mir bei Löschen eines Beitrages immernoch nicht den Beitrag 10 - was ja immernoch logisch ist, da mysql_num_rows wieder nur 9 zurück gibt und ich eben mit genau dieser Variable meine Zählschleife mache.

dann kam ich auf die idee "warum nicht in der mysql-datenbank die IDS beim löschen eines Beitrages neu schreiben". der ansatz der Idee ist nicht schlecht da - wenn alles korrekt laufen sollte - die IDS richtig vergeben werden.
Doch leider liefert mir auch hier mysql_num_rows einen falschen Wert zurück (der Wert stimmt schon , nur bringt er mir nichtsmehr bei meiner schleife)

Hier die Ausgabe-Schleife zum letztgenannten Vorschlag:

Code:                   In Zwischenablage kopieren (nur IE)
1">

ich bin wiedermal mit meinem latein am ende - und habe auch keinen ansatz mehr zum lösungsweg. wäre nett wenn sich jemand damit mal kurz befassen würde bzw. nen vorschlag wüsste.


danke, sebastian
Hier gehts zum Orginal Eintrag "Abfrage einmalig durchführen" im Forum

Antworten

Hallo,
schau dir einfach mal das script an
http://www.kmcs.de/projects/lweb/index.php?cid=98&eid=2

Gruß, Timo


2.

danke erstmal für die antwort!

aber ich wollte eigentlich eine antwort auf mein problem, da ich es immer öfter habe in letzter zeit, und nicht weiter weiß


3.

warum machst du es dir so schwer? lös dich doch bitte von der vorstellung, dass der primärschlüssel (also hier das feld id) irgendetwas mit der anzahl der einträge zu tun hat. das funktioniert nur solange du sicherstellen kannst, dass die ids immer (auch nach löschvorgängen) eine vollständige reihe bilden. und dieser aufwand ist in meinen augen nicht gerechtfertigt, ja sogar unsinn, falls zwischen verschiedenen beiträgen beziehungen bestehen sollen, wie z.b. kommentare. ein zeichen eines schlüssels soll ja eigentlich sein, dass er ein element (eindeutig) auszeichnet.
was musst du also tun? zunächst benötigst du die gesamtzahl der einträge. die kannst du mit mysql_num_rows() oder auch mit "select count(spaltenname) as anzahl from tabelle" (je nachdem was grad passender ist) erfahren.

dann gibt es grob 2 lösungsmöglichkeiten:
1) du nutzt die limit-klausel von mysql um einen gewissen ausschnitt aus der tabelle zu holen
2) du liest ALLE datensätze in ein array ein und arbeitest auf ihnen mit array_splice() o.ä.

noch ein tipp: du musst nicht unbedingt eine for-schleife benutzen um über die einträge zu laufen, stell dir vor, deine schlüssel sind nicht-numerisch, dann klappt das gar nicht. einfacher gehts mit foreach()!

EDIT: code liefere ich dir nicht, da hilft dir die boardsuche weiter. das problem wird oft genug diskutiert.


Hier gehts zum Orginal Eintrag "Abfrage einmalig durchführen" im Forum
 
phpforum.de | Impressum