MYSQL id zuweisen per variablenübergabe

nischtak

Banned
Registriert
Nov. 2005
Beiträge
692
hi zusammen hab mal wieder ne frage .....
ich muss in eine datenbank authoren für ein buch und das bucht sleber eintragen
wie sag ich der datenbank das,dass buch die gleiche Id bekommt wie der author damit es richtig ausgeben wird...
danke im voraus
 
Schreibst du den Namen des Autors in den Buch Datensatz? Oder nur die Autoren ID? wenn du 2 Tabellen hast brauchst du ja nur die ID des Autors beim Buch zu hinterlegen. Da müssen nicht beide Datensätze die gleiche ID haben.
Kommt eben auf die Struktur der Datenbank an.
 
möchtest du beides getrennt in zwei verschiedene Tabellen machen oder erst den author speichern und danach erst das Buch ?
 
Ich würde das so machen:

Tabelle Autor
ID, Name, Vorname

Tabelle Buch
ISBN, Autor, Titel

Beispieldatensäze:

Autor
1, Möhrke, Carsten

Buch
3898426483,1,Besser PHP Programmieren

Und das ganze als MY-SQL Query:

SELECT Autor.Name, Autor.Vorname, Buch.ISBN, Buch.Titel
FROM Autor, Buch
WHERE Autor.ID=Buch.Autor
AND Buch.ISBN="3898426483"

Ausgabe wäre dann:
Möhrke,Carsten,3898426483,Besser PHP Programmieren
 
ja danke so hatte ich das auch ungefähr aber cheffe will des net so der will das es automatisch erhöht weil man nach einer weile die übersicht der id verliert....

also ich schilder es mal alles ein wenig näher

ich hab 3 tabellen
erste tabelle nenn ich books_ge
enthalten in dieser tabelle
book_id, titel, year, edition

2 tabelle genannt authors_ge
enthalten author_id & author <- name des autoren

3 tabelle rel_book_author_ge
enthalten author_id und book_id

die dritte tablle fast beide id's zusammen (bei mir macht sie da aber net)

und hier mein skript

PHP:
<?php


$verbindung = mysql_connect ("1.1.1.28","x","y")
or die ("keine Verbindung möglich Benutzername oder Passwort sind falsch");

mysql_select_db("mis")
or die ("Die Datenbank existiert nicht.");

 $title = $HTTP_POST_VARS["title"];
 $year = $HTTP_POST_VARS["year"];
 $edition = $HTTP_POST_VARS["edition"];
 $author = $HTTP_POST_VARS["author"];

 

 $eintrag = "INSERT INTO books_ge (title,year,edition) VALUES ('$title','$year','$edition')";
 $eintragen = mysql_query($eintrag);
 
 $eintrag2 = "INSERT INTO authors_ge (author) VALUES ('$author')";
 $eintragen2 =mysql_query($eintrag2);
 
 
 $eintrag3 = "INSERT INTO rel_book_author_ge (author_id,book_id) VALUES authors_ge (author_id), books_ge (book_id)";
 $eintragen3 =mysql_query($eintrag3);
 
  
  
   $abfrage = "SELECT books_ge.title,
	   	      books_ge.year,
		      books_ge.edition,
		      books_ge.book_id
	    	   
		   
	       FROM   books_ge";

http://stunet01/
   $ergebnis = mysql_query($abfrage)
   or die ("Ungueltiges SQL".mysql_error());
   while ($row = mysql_fetch_row($ergebnis))
   {
   echo "<tr><TD>$row[0]</TD><TD>$row[1]</TD><TD>$row[2]</td>";

       
       $abfrage2  =    "SELECT authors_ge.author
	                   
	                FROM   authors_ge,
			       rel_book_author_ge
	                    
			WHERE  rel_book_author_ge.book_id=".$row[3]." and 
			       authors_ge.author_id=rel_book_author_ge.author_id";
			       
       $ergebnis1 = mysql_query($abfrage2)
       or die ("Ungueltiges SQL".mysql_error());
       
       echo "<td>";
       while ($row1= mysql_fetch_row($ergebnis1))
               
	echo "$row1[0]<br>";
	echo "</td></tr>";
	
	}
?>

das problem ist das die dritte tabelle die zwei ID's also sprich author_id & book_id nicht zusammenfast und ich die falsche ausgabe bekomme

ich hoffe ihr könnt mir helfen sitz schon seit 2 tagen dran
 
Zuletzt bearbeitet:
merv schrieb:
Ich würde das so machen:

Tabelle Autor
ID, Name, Vorname

Tabelle Buch
ISBN, Autor, Titel

Beispieldatensäze:

Autor
1, Möhrke, Carsten

Buch
3898426483,1,Besser PHP Programmieren

Und das ganze als MY-SQL Query:

SELECT Autor.Name, Autor.Vorname, Buch.ISBN, Buch.Titel
FROM Autor, Buch
WHERE Autor.ID=Buch.Autor
AND Buch.ISBN="3898426483"

Ausgabe wäre dann:
Möhrke,Carsten,3898426483,Besser PHP Programmieren


kommen wir nochmal auf deine ergebniss zuruck wäre es möglich das ich die id auf einezahl zb 10 setze und php sage er soll nach jeder neuen eingabe die id von book_id & author_id um eins erhöhen???
 
Also erstmal brauchst du keine dritte Tabelle für eine Relation zwischen Buch und Autor. Das geht über den Fremdschlüssel Autor in der Tabelle Buch. Und die Autor ID kannst du einfach in mysql über den Schlüssel Auto_increment bei jedem neuen Datensatz um einen erhöhen. Und wenn du die letzte vergebene ID haben willst hilft da die PHP Funktion mysql_insert_id

http://de2.php.net/manual/de/function.mysql-insert-id.php
 
hey leute ist wichtig ich komm nicht drauf mit min und max schon versucht aber er gibt nicht die nächst freie aus....
ich hab 1-12ID
und dann 140-....ID
aber mein chef will das die synatax die nächst gröste id automatisch beshreibt das wäre bei mir die 13ID , 14ID, 15ID....
 
das hab ich schnon an....
mein chef will das der explorer die nächste freie book _id anzeigt...
ich hab select count versucht zeigt mit aber eine spalte weniger weil er nur die spalten zählt die schon eingetragen sind
ich brauch aber die nächste die frei ist ....
so funkt. schon alles
 
auf leute ich komm einfach nicht drauf und das teil muss bist freitag fertig sein ... lasst mich nicht hängen...
:freak:
also nochma genau meine frage....
der skript muss genau in die nächste frei book_id den author und co eintragen es dürfen keine lücken sein in der id

das heisst wenn ich einen lösche dann hab ich ja eine Id frei.... den 10ten datzensatz
dann zeigt er die id 8.9.11.12 usw an aber 10 ist leer
wenn ich einen neuen datensatz einfüge muss er in den freien 10 datensatz rein .... und nicht wie jetzt unten einfach neu eingefügt...
 
Zuletzt bearbeitet:
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben