• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Die ID's gehen mir aus !

maria1

Mitglied
Hy,

Ich hab ein Problem.

Datenbank:
ID (Auto) - containerid - link

Ich brauche noch ein 3te ID die dann link id heissen würde.

Nur das Problem ist , die ID wird per Auto_Increment erstellt.


Die container id wird da, ich einen INSERT in meinem Script vornehme per last_insert_id generiert.
Nun brauche ich noch eine 3te ID die so aussehen soll:

es werden in die DB links eingetragen. Der Container ist eben der container der die Links beherbergt.
Ich kann jetzt anhand der containerid sagen welcher link in diesem container ist.
Nun muss ich aber auch noch sagen können welcher link welcher ist .
Wäre es möglich das wenn ich die link per formular eintrage ordne ? Mit Zahlen ?
Sprich :

ID (Auto) - containerid - link --- linkid
1 ---------------- -2 ----- http:// -- 1
2 ---------------- -2 ----- http://- - 2
2 ------------------2 ----- http:// -- 3

Nun weiß ich das diese 3 links zum container 2 gehöhren . Nun müsste ich eben anhand der linkid nur noch sagen können welcher link welcher ist ...

Hoffe ihr versteht mich :)

Danke
 
Was ist denn die ID? Nach deiner Beschreibung ist das die ID für den Link

Nachtrag: Wenn diese wirklich autoincrement sind, können die auch nicht dopelt vorkommen.
 
Ja die ID ist eigentlich für nichts da stimmt.

Nur ich würde gerne pro container die reihenfolge 1-2-3-4-5-6 usw. haben

also:

ID (Auto) - containerid - link --- linkid
1 ---------------- -2 ----- http:// -- 1
2 ---------------- -2 ----- http://- - 2
3 ------------------2 ----- http:// -- 3
4 ------------------3 ----- http:// -- 1
5 ------------------3 ----- http:// -- 2
6 ------------------3 ----- http:// -- 3

usw. wobei die ID (Auto) derzeit nicht genutzt wird.
 
Eine ID ist wie die Abkürzung schon suggeriert, eine eindeutiges Merkmal um einen Datensatz zu bestimmen. Genau aus diesem Grund gibt es die ID und die autoincrement Eigenschaft. Ich weiß nicht wo jetzt das Problem ist, diese ID zum bestimmen des Datensatzes zu verwenden?
 
Ja die ID ist eigentlich für nichts da stimmt.

Nur ich würde gerne pro container die reihenfolge 1-2-3-4-5-6 usw. haben

also:

ID (Auto) - containerid - link --- linkid
1 ---------------- -2 ----- http:// -- 1
2 ---------------- -2 ----- http://- - 2
3 ------------------2 ----- http:// -- 3
4 ------------------3 ----- http:// -- 1
5 ------------------3 ----- http:// -- 2
6 ------------------3 ----- http:// -- 3

usw. wobei die ID (Auto) derzeit nicht genutzt wird.

Wieso gibt es auf einmal ein linkid zweimal? Das kann nicht sein, bzw., ist dann dein Ansatz falsch. Sowas macht man nicht in einer Datenbank.
 
Du meinst die Position an der er bei Ausgaben erscheinen soll?

z.B.

LinkID 2
LinkID 3
LinkID 1

Du darfst nur 1 X Autoicrement verwenden. Füge einfach eine Spalte hinzu in der du die Positon der ID einträgst als Integer, mehr brauchst du nicht.

Ich hätte besser Linkpos als Spaltenname gewählt.
 
ok aber dann ne frage. Hast du verstanden was ich in etwa machen will ?

Wenn ja wie soll ich es sonst machen ?
Wenn ich es so habe , dann kann ich sagen das im Container 2 der 3te link der ist den ich haben will..
also index.php?containerid=2&link=3

Wenn ich nun aber die linkid normal zählen lasse also 1-2-3-4-5-6-7-8 dann muss ich zuerst abfragen wie viele links sind eingetragen zb. 10 , dann weiß ich das mein gesuchter link eine id ab 10 haben muss also 11 ! ok dann muss ich wissen wie viele links der container enthält das ich weiß wie viele links ich den user ausgeben muss...

Hoffe du verstehst mich :(
 
Wenn ich es so habe , dann kann ich sagen das im Container 2 der 3te link der ist den ich haben will..
also index.php?containerid=2&link=3

Genau!

Deine Vorgabe war:
ID (Auto) - containerid - link --- linkid
1 ---------------- -2 ----- http:// -- 1
2 ---------------- -2 ----- http://- - 2
3 ------------------2 ----- http:// -- 3
4 ------------------3 ----- http:// -- 1
5 ------------------3 ----- http:// -- 2
6 ------------------3 ----- http:// -- 3

Du willst den 2 Link aus Container 3, dann hängst du das an die URL dran:
index.php?containerid=3&link=2

Das wäre zwar dann die ID 5 in der Spalte ID deiner Tabelle, das macht aber gar nichts weil du die ja nicht willst sondern den Link(entsprendend der URL).
Das kannst du mit SQL genau so aus deiner Tabelle raussuchen:

$sql= "SELECT link FROM meineTabelle WHERE containerID=$containerid AND linkID=$link";

Du brauchst also gar nicht zu wissen welchen ID das ist.
Hoffe das ist jetzt verständlich. Ansonsten müssen wir es noch mal anders erklären.
 
Wenn ja wie soll ich es sonst machen ?
Wenn ich es so habe , dann kann ich sagen das im Container 2 der 3te link der ist den ich haben will..
also index.php?containerid=2&link=3
Warum nicht einfach: index.php?link_id=3
Dann hst du den Link. Die Reihenfolge solltest du der Datenbank Sortierung überlassen und nicht anhand der ID ermitteln.
 
@Wustersoss

Wenn ich es so mache &link=2

$sql= "SELECT link FROM meineTabelle WHERE containerID=$containerid AND linkID=$link";

Dann sag ich ja, ich will den container 3 und den link mit den linkid 2 !

und wie weiß ich nun das link 2 dieser ist google.de und nicht ebay.de ? erst dadurch das ich den link gesehen hab ^^

 
und wie weiß ich nun das link 2 dieser ist google.de und nicht ebay.de? erst dadurch das ich den link gesehen hab ^^

Genau, erst nach Ausgabe. Wenn der Link bekannt ist, braucht man ihn ja nicht erst aus der Datenbank fischen, oder?
 
Ich denke du verstehst mich nicht..

Es geht darum das ich die links verschlüsseln will


Nun dachte ich mir ich mach das so

PHP:
$id = $_GET['id']; 
 
//Verbindung herstellen 
$datenbank = mysql_connect("localhost","root","") or die ("Verbindung fehlgeschlagen: ".mysql_error()); 
$verbunden = mysql_select_db("links") or die ("Datenbank nicht gefunden oder fehlerhaft"); 
 
  //Daten Abfragen und Links generieren 
$sql = "SELECT 
             * 
          FROM 
          links 
          WHERE 
          containerid = '$id' "; 
$result = mysql_query($sql) OR die(mysql_error()); 
while ($row = mysql_fetch_assoc($result)) 
{ 

$link = $row['link'];  
$id = $row['id'];  



echo"  
 
<div style='border:1px solid black;' id=''><a href='goto.php?containerid=$fileid&id=$id'>klick mich</a></div> 
"; 
}

Nun wenn ich eine id hätte in der variable $link könnte ich ja nur die ids einsetzen also jeder container hat ja in meiner vorstellung
links mit den ids die immer neu beginnen von container zu container .
Mein container enthält 3 links

Also sehe ich nun die ausgabe im browser

klick mich
klick mich
klick mich

nun klicke ich auf den 2ten link und der link würde lauten container.php?id=5&link=2 !

Nun mein code ich frage den link ab da ich ja den container weiß und die linkid , mache eine neue datei mi dem name goto.php
wo ich den link abfrage aus der db und in einer variable schreibe , dann nen header mit der variablen und man wird sofort weitergeleitet zum linkziel
ohne dass man die zielurl gesehen hat.
 
Hallo Maria,

ich habe unter aller Mühe alle Posts gelesen und ehrlich gesagt, denk ich, bin ich nicht der einzige der nicht verstanden hat was du machen willst. Tust du es? :P

Also:

Was genau ist dein Ziel? Soll dann als Beispiel: http://html.de/redirect.php?link=cAVe§Q§%!%!&§ ( in deinem Fall: ?link=1&id=5 )zu html.de Forum - HTML für Anfänger & Fortgeschrittene führen?

Was ist dein Problem dabei? Fragst du uns, ob dein Vorgehen so Ok ist oder brauchst du Hilfe dabei, wie du zum Ziel kommst?



Ich kann dir ja mal ein Spontanes Beispiel nennen, wie ich es machen würde.

Tabelle: Links

id, link, linkname, title,target, crypt

Beispiel Daten

1, html.de Forum - HTML für Anfänger & Fortgeschrittene, HTML.de Deine Seite fürs Web!, HTML.de, _blank, kGm_C-24
2, Google, Google Suchmaschine, Google, _blank, 9Vim3Nncv
..

$id == 'http://html.de';
<a href="redirect.php?crypt=<?=$crypt;?>" title="<?=$title;?>" target="<?=$target;?>" ><?=$linkname;?></a>

Mhmmm hmmm mhmm.. naja so in der Art.. ich weiß ja nicht einmal was zu machen ist.
 
Ich verstehe auch nichts, aber...

Du liest einen Datensatz aus und hast damit alle Spalteneinträge die zu diesem Datensatz passen. Dabei vergibst du übrigens $id doppelt !

PHP:
$sql = "SELECT * FROM `links` WHERE `links`.`containerid` = '".$id."' "; // $id ist hier die Containerid, muss also nicht neu gelesen werden

$result = mysql_query($sql) OR die(mysql_error()); 
while ($row = mysql_fetch_assoc($result)) 
{ 
   $link = $row['link'];  
   $linkid = $row['linkid'];
   // und so weiter

echo"  
 
<div style='border:1px solid black;' id=''><a href='goto.php?containerid=$id&amp;linkid=$linkid&amp;link=$link'>klick mich</a></div> 
";

}
Wo ist also das Problem?

Da können noch 100 ID's angehängt werden, die alle eindeutig dem Datensatz mit der ID xyz verbunden sind.
Das ganze ist derart verwirrend durchdacht, dass ein durcheinander vorprogrammiert ist.
 
Ich glaube es geht ihm um die Absicherung von Daten die über solche URLs erreichbar wären. Ich löse das, wie oben teilweise schon angedeutet, über einen Sicherheitscode zusätzlich zur eineindeutigen ID.

Beispieldaten:
ID | Name | SecureCode
1 | html.de | md9324md83nd
2 | html.de | 0924mf9s2059f

Ein Link auf Datensatz ID 1 sähe z.B. so aus:

Code:
link.php?id=1&sc=md9324md83nd

In der verarbeitenden Datei baut man dann das Statement zusammen:

PHP:
$sql = "SELECT * FROM tabelle WHERE ID = '".$id."' AND SecureCode = '".$sc."'";

Dadurch wird der Zeichensatz eineindeutig identifiziert und ein Nutzer kann nicht durch Linkmanipulation an andere Daten kommen.
 
Zurück
Oben