PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablen merken und weitergeben..



sowatt
04-06-2002, 02:22
Hallo,
ich versuch mein Problem mal verständlich zu erklären.....
Ich möchte eine ID Nummer aus der MySQL DB auslesen (immer die letzte,eingetragene), dann will ich ergebnis um 1 erhöhen und dann das
Resultat in eine Variable schreiben, die ich an einen Link anhängen möchte,
welcher dann wieder in die DB geschrieben wird.
Das ganze soll bewirken das, wenn der User auf den Link klickt, das aufgerufene
Skript die variablen die im Link übergeben wurden, zur Verfügung hat, denn
danach richtet sich der Select den das Skript ausführt um den jeweiligen Inhalt
aus der DB zu holen. Das ganze sieht so aus...
code/
$html_link = "<a href=\"template$layout.php?nr=$eintragnr\">$linker</a>";
codeende/
Alles was hier nach dem Fragezeichen kommt,will nach zig Versuchen einfach
nicht klappen.Ich habe echt keine Idee mehr wie ich das hinkriegen soll :confused:
Es wäre echt super wenn jemend einem PHP-Neuling da weiterhelfen kann.
Vielen Dank
Many Greetz
sowatt

elrond
04-06-2002, 07:48
ich glaube, du bist gerade dabei die PHP-Session zu erfinden :D

Wenn du dich mal mit den sessions von PHP beschäftigst wirst du sehen, dass du Sachen wie eine Session-ID -das ist wohl das was Du brauchst- gut funktioniert. Allerdings arbeite ich bisher ausschliesslich (implizit) mit Coockies...

Wenn Du es allerdings tatsächlich selber machen willst frag ruhig weiter.

sowatt
04-06-2002, 09:40
hi ,
nun muss ich das ganze wohl mal etwas besser erklären :

dieser link den ich da zusammen bauen will, der kommt aus einem
völlig anderen bereich der site,das heisst das sessions und cookies
auf keinen fall funzen können. im detail: es gibt einen adminbereich
den benutzt der sitebesitzer um bilder und texte in eine Datenbank
zu schreiben(seine referenzen).
dann gibt es den öffentlichen bereich in dem die daten
die ich hier verarbeiten will, aus der db ausgelesen werden. das
bedeutet das der link, die verschiedenen inormationen enthalten muss
damit ich mit einem template die richtigen daten aus der db auslesen
und anzeigen kann.alles was ich möchte ist , die richtigen daten in
die db schreiben.das problem ist das ich eine id aus der db abfragen
muss (die aktuell höchste) und das ergebnis +1 wieder an den link hängen muss
und dann wieder in die db schreiben.damit will ich erreichen das das
skript mit den empfangenen daten den richtigen datensatz auslesen kann.
habt erbarmen mit einem neuling,aber ich hoffe doch das ich das jetzt
etwas besser geschildert habe.
vielen dank
greetz
sowatt

elrond
04-06-2002, 09:59
da hab ich was für dich:



function getnexttaskid() {
global $db;

$sql="select max(taskid) as id,count(*) as anz from task";
$rs_arr=$db->select($sql);
if(!$rs_arr or $rs_arr[0]["anz"]==0) {$id=1;}
else {$id=$rs_arr[0]["id"]+1;}
return $id;
} //function getnexttaskid



diese funktion liefert mir die nächste task-id...

Ich verwende eine mysql-klasse ($db) um den ganzen Ramsch nicht immer im Quellcode zu haben.

Die ID, die di dabei erhälst kannst du
1. in die DB schreiben, und
2. an deinen Link hängen


...kann gut sein, dass ich auch ein wenig schwehr von Begriff bin... Wenn's das nicht ist, versuch's noch mal mit wenigen einfachen Worten :cool:

sowatt
04-06-2002, 10:33
hi ,
na , da schlägst du dich wieder mal rum mit meinen problemen...
vielen dank erst einmal. aber deine funktion verstehe ich nicht.
da bin wohl eher ich schwer von begriff....(aber lernwilliger newbie).
jetzt versuche ich es in einfachen worten , wenn ich kann.
ich möchte nur einen select bauen der mir die max(id) in einer
tabelle gibt.dann einen raufzählen und dann in einen link packen
(wobei du mir ja schon einmal geholfen hast:) ) den ich wieder in die
db schreibe. das mit dem select habe ich ja auch gemacht, allerdings
bekomme ich immer nur ein ergebnis ,die zahl 3, ganz egal wieviele
einträge ich in der db habe.
@elrond: wenn es eine abkürzenden effekt hat würde ich das
skript zippen und mitposten.ich wiil deine nerven ja nicht unnötig
strapazieren.

vielen dank
many greetz
sowatt

sowatt
04-06-2002, 12:08
hi,
nun habe ich das gerafft mit deiner funktion..:)

allerdings bekomme ich auch auf diesem wege immer die id mit der nummer
3 und das obwohl mittlerweise schon 19 einträge in der db sind:confused:

das kann doch alles nicht mehr angehen........

greetz
sowatt

elrond
04-06-2002, 13:34
dann stehen zwar 19 Einträge in der Tabelle, aber die höchste ID ist die 3...

wenn du mit der anzahl arbeiten willst musst du die sql-anweisung anders formulieren:

nicht
$sql="select max(taskid) as id,count(*) as anz from task"

sondern
$sql="select count(*) as id from task"

Wenn Du nicht mit einer ID sodern mit der anzahl arbeitest, erzeugst du nur unnötige Rechenlast auf dem DB-Server und bekommst bei grösseren Datenmengen Performanceprobleme...

die Tabellen, die ich für solche sachen benutzte sehen immer so aus:

CREATE TABLE task (
taskid int(11) NOT NULL default '0',
tasknr varchar(12) NOT NULL default '',
taskowner int(11) default NULL,
priorid int(11) default NULL,
ptaskid int(11) default NULL,
taskname varchar(40) default NULL,
statusprz int(11) default NULL,
level int(11) default NULL,
startdate datetime default NULL,
enddate datetime default NULL,
statusid int(11) default NULL,
PRIMARY KEY (taskid)
) ENGINE=MyISAM;

also eine id->primary key und dann den ganzen Ramsch hinten dran...

sowatt
04-06-2002, 16:20
hi ,

jawoll das ist es. prima und vielen dank für deine hilfe.

many greetz
sowatt