Registrieren  •  Login 
  
 
im Forum


 FAQ   Mitgliederliste   Benutzergruppen   Teamseite   Suchen 

Primärschlüssel umgekehrt
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
thoha
Übersetzer
Übersetzer



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 2591

BeitragVerfasst am: 11.11.2006, 23:56    Titel: Primärschlüssel umgekehrt

Hi


Ich habe ein Feld id, welches den Primary Key bekommen soll. Da ich aber möchte, dass die mit der höhesten id zuerst ausgegeben werden, wollte ich fragen, was ich eingeben muss, damit eben immer der neueste Eintrag zuoberst (schlussendlich) ausgegeben wird.

Oder kann ich das auch anders machen?
Nach oben
Benutzer-Profile anzeigen thoha ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13892
Wohnort: Wien

BeitragVerfasst am: 12.11.2006, 08:35    Titel:

Du hast in einer Datenbank zum Beispiel folgende Datensätze:
Code:
------------------------------------
id        |       feldname
------------------------
1                  test1
2                  schule
3                  ich
4                  du
-------------------------------------


Du möchtest nun, dass nicht Datensatz 1, 2, 3, 4 ausgegeben wird, sondern 4, 3, 2, 1. Verstehe ich doch soweit richtig, oder?

Ich nehme jetzt mal, dass du die Datensätze schon mit einem MySQL-Query ausgelesen hast und sie jetzt im Array $result[] hast.
PHP-Code:
1
2
3
4
5
6
7
8
9
<?php
$count 
count($result);
$count--;
while(
$count != 0)
{
  echo 
$result['$count']['feldname'].'<br>';
  
$count--;
}
?>

Du brauchst eine while-Schleife nur umgekehrt laufen lassen und die Datensätze fangen ganz hinten an. Statt den Zähler zu inkrementieren, dekrementieren wir einfach. Und du fängst halt nicht bei 0 an, sondern beim letzten Element.

Ausgabe:
Zitat:
du
ich
schule
test1



MfG Christian
------------------------
PS: Ich habe gerade bemerkt, dass die Zeilennummerierung beim PHP-Code nicht richtig funktioniert. Ich hoff eich habe es jetzt wieder behoben. Falls nichtb, bitte eine PN an mich Wink
_________________


Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt von killerbees19.
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
thoha
Übersetzer
Übersetzer



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 2591

BeitragVerfasst am: 12.11.2006, 11:40    Titel:

Wow vielen Dank!!! Das Probier ich gleich mal aus Exclamation
Nach oben
Benutzer-Profile anzeigen thoha ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13892
Wohnort: Wien

BeitragVerfasst am: 12.11.2006, 11:56    Titel:

Wenn es sich um viele Datensätze handelt, müsstest du natürlich den LIMIT-Wert in der SQL-Abfrage auch speziell verändern. Dabei würde dir die SQL-Funktion Count(*) helfen Wink
Damit nicht alle Datensätze angezeigt werden, sondern nur zum Beispiel die letzten / ersten 30.


MfG Christian
_________________
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
thoha
Übersetzer
Übersetzer



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 2591

BeitragVerfasst am: 12.11.2006, 12:54    Titel:

Auf die Idee bin auch schon gekommen, wird aber noch dauern, bis alles so funzt wie ichs will.
Nach oben
Benutzer-Profile anzeigen thoha ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden
Daniel
Mitglied
Mitglied



Anmeldedatum: 02.08.2006
Geschlecht: Männlich
Beiträge: 406
Wohnort: Mellrichstadt (Bayern)

BeitragVerfasst am: 12.11.2006, 13:01    Titel:

ich würde die mySQl Abfrage einfach anders machen!

ich würde sagen:
PHP-Code:
1
2
3
4
<?php $sql "SELECT * FROM Tabell ORDER BY id DESC";
result mysql_query($sql);

und so weiter... 


dann werden die Datensätze gleich in umgekehrter Reihenfolge
order by heißt, dass sich nach der id geordnet werden. das ginge auch für feldname, dann würde es alphabetisch geordnet werden. Um die Ordung jetzt umzudrehen, dass id also absteigend angezeigt wird, muss man noch ein DESC hintendran hängen...
is meiner meinung nach des einfachste!
_________________
oda so...

10¤ Fotobuch-Gutschein von CEWE
Nach oben
Benutzer-Profile anzeigen Daniel ist derzeit offline Private Nachricht senden
thoha
Übersetzer
Übersetzer



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 2591

BeitragVerfasst am: 12.11.2006, 13:04    Titel:

Hey, das könnte die Lösung sein!
Nach oben
Benutzer-Profile anzeigen thoha ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13892
Wohnort: Wien

BeitragVerfasst am: 12.11.2006, 13:22    Titel:

@Daniel: Ich habe wohl mal wieder zu kompliziert gedacht Laughing
Deine Lösung ist natürlich die bessere, so gehts schneller.

Habe ich ganz vergessen, dass ich es ja nach der ID sortieren kann Rolling Eyes


MfG Christian
_________________
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
thoha
Übersetzer
Übersetzer



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 2591

BeitragVerfasst am: 12.11.2006, 14:23    Titel:

Ok, die Ausgabe geht jetz, das LIMIT habe ich allerdings noch weggelassen. Dieses muss ich aber wieder einfügen, wenn ich nur einen News-Eintrag anzeigen lassen möchte.

Und genau da beginnt das neue Problem:
Ich möchte automatische Links!

Szenario 1:
Es ist nur 1 Newseintrag vorhanden, die Links << Zurück und Weiter >> sollen deaktiviert sein.

Szenario 2:
Es sind zwei Einträge vorhanden, der neueste wird zuerst ausgegeben (klar, mit DESC). Dann aber soll der Link weiter >> aktiv sein (zum draufklicken), und man gelingt zum zweiten (älteren) Eintrag.

Wie kann ich das realisieren?

Hier mal der aktuelle Code der news.php:

PHP-Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="css.css">
<title>Unbenanntes Dokument</title>
</head>

<body>

  <?php
//Zugriff zu mySQL herstellen
include('zugriff.inc.php');
//Ende zugriff
//SQL-Anweisung SELECT ALL 
$sql "SELECT * FROM news ORDER BY id DESC"
//Ende SQL-Anweisung SELECT ALL 
$result mysql_query($sql);
//

//Count-Variable
$count count($result); 
$count--;
//while beginn
while($u mysql_fetch_array($result)) {

//while vorläufig ende
?>
  <table width="337" border="0">
    <tr>
      <td width="327"><b><?php echo $u['titel']; ?></b></td>
    </tr>
    <tr>
      <td><?php echo $u['datum']; echo ' um '; echo $u['zeit']; ?></td>
    </tr>
    <tr>
      <td><?php echo 'Von  '; echo $u['autor']; ?></td>
    </tr>
    <tr>
      <td><br /><?php echo $u['eintrag']; ?></td>
    </tr>
  </table>



  <hr />
  <br />

<?php
//while ende


?>


</body>
</html>


Wer sehen will, wie ichs meine: http://www.ceviweiningen-geroldswil.ch/

Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt von thoha.
Nach oben
Benutzer-Profile anzeigen thoha ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13892
Wohnort: Wien

BeitragVerfasst am: 12.11.2006, 15:24    Titel:

Um mehrere Seiten zu erstellen, musst du natürlich erst einmal mit folgendem SQL-Befehl prüfen, wie viele Einträge es gibt:
PHP-Code:
1
2
3
<?php
$sql 
"SELECT Count(*) FROM tabellenname as gesamt";
?>

Nach der typischen MySQL-Query Verarbeitung & Co kannst du über den Feldanme "gesamt" darauf zugreifen, z.B. $result['0']['gesamt'].

Nun musst du prüfen, ob der ausgelesene Wert höher ist als die maximale Anzahl:
PHP-Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
if(is_numeric($_GET['next']))
{
  
$akt $_GET['next'];
}
else
{
  
$akt 0;
}
$max 30;
$sql "SELECT blablabla FROM blablabla ORDER by id DESC LIMIT $akt, ".$max."";
  
//Query ausführen......
  
  //..........
if($result['0']['gesamt'] > $max)
{
  
$page "<a href=\"".$_SERVER['PHP_SELF']."?next=30\">Weiter</a>";
}
else
{
  
$page '&nbsp;';
}
?>


Du musst also immer überprüfen, wie viele Einträge es Gesamt gibt. Über die GET-Variable kannst du dann ganz normal Links machen, in denen der Startwert von LIMIT steht.

Tipp: Sieh dir die Seitennummerieung von phpBB an, zum Beispiel auf der Mitgliederseite oder in der Suche.


MfG Christian
---
PS: Ich kann dir ein Beispiel senden, wenn du willst. So etwas habe ich erst vor einigen Tagen programmiert, habe dafür aber die Pagenation von phpBB genutzt, dmait es professioneller aussieht Laughing
_________________


Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt von killerbees19.
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
thoha
Übersetzer
Übersetzer



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 2591

BeitragVerfasst am: 12.11.2006, 16:17    Titel:

Also... das ganze sieht jetzt so aus:

PHP-Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="css.css">
<title>Unbenanntes Dokument</title>
</head>

<body>

  <?php
//Zugriff zu mySQL herstellen
include('zugriff.inc.php');
//Ende zugriff
//SQL-Anweisung SELECT ALL 
$sql "SELECT * FROM news ORDER BY id DESC"
$sql "SELECT Count(*) FROM news as gesamt";
$sql "SELECT * FROM news ORDER by id DESC LIMIT $akt, ".$max."";
//Ende SQL-Anweisung SELECT ALL 
$result mysql_query($sql);
//

//Count-Variable
$count count($result); 
$count--;
//while beginn
while($u mysql_fetch_array($result)) {

//while vorläufig ende
?>
  <table width="337" border="0">
    <tr>
      <td width="327"><b><?php echo $u['titel']; ?></b></td>
    </tr>
    <tr>
      <td><?php echo $u['datum']; echo ' um '; echo $u['zeit']; ?></td>
    </tr>
    <tr>
      <td><?php echo 'Von  '; echo $u['autor']; ?></td>
    </tr>
    <tr>
      <td><br /><?php echo $u['eintrag']; ?></td>
    </tr>
    <tr>
      <td><div align="center">
      <?php 
if(is_numeric($_GET['next'])) 

  
$akt $_GET['next']; 

else 

  
$akt 0

$max 1
 
  
//Query ausführen...... 
   
  //.......... 
if($result['0']['gesamt'] > $max

  
$page "<a href=\"".$_SERVER['PHP_SELF']."?next=30\">Weiter</a>"

else 

  
$page '&nbsp;'

?>
      </div></td>
    </tr>
  </table>



  <hr />
  <br />

<?php
//while ende


?>


</body>
</html>


Zuruück bekomme ich:

Zitat:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/web432/html/news.php on line 27


Was hat das zu bedeuten, was hab ich falsch gemacht?
Nach oben
Benutzer-Profile anzeigen thoha ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13892
Wohnort: Wien

BeitragVerfasst am: 12.11.2006, 16:29    Titel:

Mit deinem dreifachem $sql überschreibst du jedes mal die Variable!

Du musst das schon jeweils einzeln ausführen lassen, oder eine andere SQL-Abfrage nutzen.

Nochmals als Tipp: Wenn du nicht einmal verstehst, dass man durch die erneute Zuweisung einer Variable den alten Inhalt überschreibt, solltest du die Finger von einem Script lassen, dass mit einer Datenbank arbeitet. Lies dir wirklich die Grundbegriffe von PHP durch, denn ohne die wirst du nicht weiter kommen. Und wenn du nicht einmal das Grundlegendste weißt, habe ich auch keine Lust hier ein ganzes Script zu schreiben.

Ich helfe jedem gerne wo ich kann, aber ich kann jetzt nicht ein ganzes Script für dich programmieren. Ein wenig musst du schon selber etwas tun.....


MfG Christian
_________________


Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt von killerbees19.
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
thoha
Übersetzer
Übersetzer



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 2591

BeitragVerfasst am: 12.11.2006, 16:33    Titel:

Das weiss ich schon *schäm*

Ich habs in der Freude, dass jemand ne Lösung hat schlichtweg vergessen.

Tut mir wahnsinnig Leid

-------

Wieder der aktuelle Stand:

PHP-Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="css.css">
<title>Unbenanntes Dokument</title>
</head>

<body>

  <?php
//Zugriff zu mySQL herstellen
include('zugriff.inc.php');
//Ende zugriff
//SQL-Anweisung SELECT ALL 
$sql "SELECT * FROM news ORDER BY id DESC"
$sql_zwei "SELECT Count(*) FROM news as gesamt";
$sql_drei "SELECT * FROM news ORDER by id DESC LIMIT ==>$akt$max";  <==
//Ende SQL-Anweisung SELECT ALL 
$result mysql_query($sql);
==> 
mysql_query($sql_zwei);
mysql_query($sql_drei); <==
//

//Count-Variable
$count count($result); 
$count--;
//while beginn
while($u mysql_fetch_array($result)) {

//while vorläufig ende
?>
  <table width="337" border="0">
    <tr>
      <td width="327"><b><?php echo $u['titel']; ?></b></td>
    </tr>
    <tr>
      <td><?php echo $u['datum']; echo ' um '; echo $u['zeit']; ?></td>
    </tr>
    <tr>
      <td><?php echo 'Von  '; echo $u['autor']; ?></td>
    </tr>
    <tr>
      <td><br /><?php echo $u['eintrag']; ?></td>
    </tr>
    <tr>
      <td><div align="center">
      <?php 
if(is_numeric($_GET['next'])) 

  
$akt $_GET['next']; 

else 

  
$akt 0

$max 1
 
  
//Query ausführen...... 
   
  //.......... 
if($result['0']['gesamt'] > $max

  
$page "<a href=\"".$_SERVER['PHP_SELF']."?next=30\">Weiter</a>"

else 

  
$page '&nbsp;'

?>
      </div></td>
    </tr>
  </table>



  <hr />
  <br />

<?php
//while ende


?>


</body>
</html>

Das in Fettschrift habe ich verändert.

Jetzt habe ich zwar wieder eine Ausgabe meiner zwei Datensätze, aber der Links weiter erscheint nicht, beide werden untereinander ausgeben.
www.stufejosua-weingeri.ch/mainFrame.php

Dieser Beitrag wurde insgesamt 3 mal geändert. Zuletzt von thoha.
Nach oben
Benutzer-Profile anzeigen thoha ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden
killerbees19
Administrator & Rennleitung
Administrator & Rennleitung



OC-Nickname: KB19
Südafrika Team South Africa

Anmeldedatum: 09.05.2006
Geschlecht: Männlich
Alter: 29 Jahre
Beiträge: 13892
Wohnort: Wien

BeitragVerfasst am: 12.11.2006, 16:36    Titel:

Na dann Entschuldigung für meinen leichten Wutausbruch.
Nur ich hasse nichts mehr, als Benutzer in Foren, die sich dumm stellen und darauf warten, dass das jemand für sie programmiert. Das ist jetzt nicht auf dich bezogen, sondern allgemein, solche Personen erlebe ich fast jeden tag....

Du musst die SQL-Abfragen jeweils einzeln ausführen Wink
Man könnte es auch irgendwie anders lösen, ist aber kompliziert. Und daran habe ich mich selber noch nicht gewagt Laughing


MfG Christian
_________________
Nach oben
Benutzer-Profile anzeigen killerbees19 ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden Website dieses Benutzers besuchen
thoha
Übersetzer
Übersetzer



Anmeldedatum: 07.10.2006
Geschlecht: Männlich
Beiträge: 2591

BeitragVerfasst am: 12.11.2006, 16:39    Titel:

Schau obendran an deinem Beitrag, du warst schneller im Schreiben als ich im editieren, da hab ich wieder den aktuellen Stand und das fettgedruckte ist das, was ich geändert habe

Edit: vergiss den mit dem fettgedruckten, das klappt nicht... ich mach Pfeile hin

Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt von thoha.
Nach oben
Benutzer-Profile anzeigen thoha ist derzeit offline Spielerprofile bei SC:Special Bewerben anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht teilnehmen.
Du kannst Dateien in diesem Forum nicht hochladen.
Du kannst Dateien in diesem Forum nicht herunterladen.

 

Alle Zeiten sind GMT + 2 Stunden (Sommerzeit)
Aktuelles Datum und Uhrzeit: 30.03.2020, 09:56
Nach oben
Valid HTML 4.01 Transitional
Valid CSS!
Software based on work from the phpBB-Group  •  Deutsche Übersetzung von phpBB.de

netcup - Internetdienstleistungen
 
 
[ happytec.at | forum.happytec.at | blog.happytec.at | esports.happytec.at | event.happytec.at ]