Bestimmte Datensätze aus DB auslesen

Status
Für weitere Antworten geschlossen.
T

ThaHammer

Aktives Mitglied
Thread Starter
Dabei seit
01.06.2004
Beiträge
3.303
Reaktionspunkte
13
Ich stehe mal wieder total am Schlauch, deshalb frage ich mal wieder hier nach. Bitte helft mir mal auf die Sprünge!! :D

Also ich habe mir gerade eine nette Blätterfunktion für www.Mu-la.info gebastelt. $start und $ende geben mir den Bereich an, welcher auf der Seite erscheinen soll.
Das hier hilft mir aber nicht weiter: (ist nur ein Teil des Codes!)
Code:
	for($a=$start;$a<$ende;$a++)
	{
	$line=mysql_fetch_row($result);
Weil damit lese ich immer alle Datensätze aus, und gebe dann nur soviele aus wie ich mit $max vorher festgelegt habe. Wie mache ich das richtig? Per MYSQL und ID wird nicht funktionieren, weil wenn ich eine News lösche und eine neue anlege, rutscht die neue News auf den alten Platz! Der kann natürlich irgendwo in der Tabelle sein!
 
Probleme immer am Anfang beginnen zu lösen ;)

Wie sieht die Tabellenstruktur aus? Was möchtest Du daraus gelesen bekommen? Wo liegt dabei das Problem?

Wo es hin soll, was darin steht und welcher PHP-Code dazu verwendet wird kommt erst danach!
 
Code:
newstab ( newsid int(11) NOT NULL auto_increment, newstitel varchar(100) NOT NULL default '', newsdatum datetime NOT NULL default '0000-00-00', newsautor varchar(40) NOT NULL default '', newsinhalt text NOT NULL, newsurl varchar(100) NOT NULL default '', PRIMARY KEY  (newsid), KEY newsid (newsid)) TYPE=MyISAM CHARSET=latin1;
Das ist die Tabelle, aber die sollte doch jetzt nicht so wichtig sein. Problem ist ich will die Datensätze von 1-10 oder 11-20 oder 21-30 usw. auslesen. momentan komme ich nicht drauf wie ich das machen soll!
 
Hallo Hammer,

LIMIT und OFFSET sind deine neuen Freunde. Lies es mal in der MySQL-Doku nach.
 
Hallo,

also wenn es dir nur um die neusten news geht, die Du angezeigt haben möchtest, bzw. die neusten zuerst, dann ordne die Tabelle doch nach dem "newsdatum"

Also in etwa so:
SELECT * from newstab ORDER BY Name;

Dann baust du noch einen Zähler ein, der die Ausgabe nach z.B. 20 Einträgen abbricht (den hast du ja schon).

Gruß Joost
 
Joost schrieb:
Hallo,

also wenn es dir nur um die neusten news geht, die Du angezeigt haben möchtest, bzw. die neusten zuerst, dann ordne die Tabelle doch nach dem "newsdatum"

Also in etwa so:


Dann baust du noch einen Zähler ein, der die Ausgabe nach z.B. 20 Einträgen abbricht (den hast du ja schon).

Gruß Joost
Das genau habe ich schon, das will ich aber um die Blätterfunktion erweitern!
 
Ineffektiv - noch zu müde ;)

Post ist gelöscht.

2nd
 
Habe gerade mal bei der Select Anweisung nachgelesen. Es ist ganz einfach, wenn man es weiß! :D

Mit LIMIT $start,$ende an die Select Anweisung angehängt sollte es gehen.
Also so: SELECT * FROM newstab ORDER BY newsdatum DESC LIMIT $start,$ende
 
Da muss er aber immer ALLE Datensätze auslesen !

Wie wäre es mit

SELECT * FROM news
LIMIT 10 OFFSET $start
 
PowerBookGrafik schrieb:
Da muss er aber immer ALLE Datensätze auslesen !

Wie wäre es mit

SELECT * FROM news
LIMIT 10 OFFSET $start

Habe ich auch gemerkt! :D Danke für euere Hilfe, jetzt funktioniert es! :D
 
Hallo,
habe auch ein kleines Problem.
Folgendes:
Habe mir durch googlen, auch so ein Skript zusammengebastelt, was mir 10 Datensätze ausspuckt, damit die HTML-Seite nicht so aus ihren Nähten platzt ^^
Jedoch funktioniert das Skript nicht, was mir dann wenn die 10 Datensätze erreicht sind, die Links zu den Seiten unten schreibt, um auf die nächste zu gehen, und die nächsten 10 Datensätze zu sehen.

Das Skript, was die Daten aus der DB liest:

Code:
function getData() {
	$dateninfo = array();
	$ErgebnisseProSeite = 10;
	
	if(!isset($AkutelleSeite)) {
    	$AktuelleSeite = 0;
	}
	else {
    	$AktuelleSeite = $AkutelleSeite;
	}
	
	$rs = mysql_query("SELECT * FROM film_informationen ORDER BY film_informationen.vc_film_name ASC LIMIT $AktuelleSeite, $ErgebnisseProSeite") or die("Fehler beim Laden der Daten! ".mysql_error());
	$Anzahl = mysql_num_rows(mysql_query("SELECT * FROM Tabelle"));
	
	while($arrData = mysql_fetch_array($rs)) {
	$dateninfo[] =
	"<table cellpadding='5' cellspacing='0'>
		<tr>
			<td width='250'>$arrData[vc_film_name]</td>
			<td class='padding_l' width='100'>$arrData[vc_cd_anzahl]</td>
			<td width='100'><a href='datenbank.php?delID=$arrData[idP_Film]'>L&ouml;schen...</a></td>
		</tr>
	 </table>";
	}
	return $dateninfo;
}

Das Skript was die Seiten dynamisch erstellen soll:

Code:
<?php
					// Ausgabe der Daten
					
					for($i=0; $i<sizeof($dateninfo); $i++) {
						echo($dateninfo[$i]); 
					}
					
					if($Anzahl > $ErgebnisseProSeite) {
						$Seiten = intval($Anzahl/$ErgebnisseProSeite);
 
    					if($Anzahl%$ErgebnisseProSeite) {
							$Seiten++;
   						}
					}
 
					for($i = 1; $i <= $Seiten; $i++) {
						echo"<a href=\"",
						$_SERVER['PHP_SELF'],
						"?AktuelleSeite=",
						($i-1)*$ErgebnisseProSeite,
						"\">$i</a>&nbsp;";
					}
 
				?>


Bin noch PHP-Anfänger, und weiß leider nicht, was ich falsch mache.
Bin für jede Hilfe dankbar.

Gruß Moritz
 
REALMoritz schrieb:
Jedoch funktioniert das Skript nicht

Zum Einen: Eigenes Problem ==> neuer thread bitte!
Zum zweiten: funktioniert nicht ist keine Fehlerbeschreibung! Um den Lesern bei Deiner Fehlersuche Zeit zu sparen darf es schon genauer sein!

Gerade Letzteres ist ein wichtiger Punkt für die eigene Fehlersuche! Immer exakt formulieren was nicht geht und selbst überlegen welche Bereiche das auslösen können. Dann diese Bereiche selbst prüfen (Test-Skripte). Kommt dabei nichts Hilfreiches heraus die fraglichen Bereiche hier mit konkreter Frage und allen gemachten Tests veröffentlichen!

Ich weiß ja, das programmieren nicht einfach ist und der Weg nach Tipparary ein Langer, aber mit ich hab mir was zusammengegooglet kann Dir niemand wirklich helfen ohne Alles nachzuprüfen. Mach einen eigenen thread auf und frag gezielter bitte!
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben Unten