[MySQL] Bereits eingebenen Autor nicht nochmal in die Datenbank schreiben

nischtak

Banned
Dabei seit
Nov. 2005
Beiträge
692
Ich mach ne Datenbank mit authoren und bücher....
wie kann ich einen bereits eingeben Author wieder aus der id auslesen und ihm keine neue id zuorden müssen (ich arbeite mit variablenübergabe)
jeder author bekommt von mir automatisch eine id zugewissen mit auto increment...
sagen wir so ich habe den author bereits in der datebank, dann brauch ich ihm aj keien neue id geben sondern von der alten id ...
ich glaub ich geh mit einer if anweisung und vergleichsoperatoren vor...
oder wie würdet ihr mir das raten
 
E

ExtiQ

Gast
AW: MYSQL bereits eingebenen author nicht nochmal in die datenbank schreiben

Auslesen kannst du das recht einfach:

Code:
$autor = "SELECT
              Autor,
              Buch,
              Geburt,
              Tod,
              etc..,
          FROM
              Autor_tabelle
          WHERE
              [B]ID = xx [/B]";
wobei du ID auch 'dynamisch' per z.B. POST oder GET zuordnen kannst, was aber nur ein Beispiel ist.

Oder schau mal am besten hier: Klick(eng)
Hoffe ich hab das somit richtig verstanden und konnte dir helfen.

MfG

eXtiQ
 
Zuletzt bearbeitet:

nischtak

Banned
Ersteller dieses Themas
Dabei seit
Nov. 2005
Beiträge
692
AW: MYSQL bereits eingebenen author nicht nochmal in die datenbank schreiben

hallo,

das auslesen und reinschreiben geht bei mir schon....

sagen wir ich hab 3 bücher
microsoft word author bill gates
book_id 1 author_id1

MYSQL tutorial author nikolaus
book id2 author_id2

microsoft XP author bill gates
book_id 3 author_id 3

den author bill gates gibt es ja bereits als author_id 1 ich brauch den ja nicht nochmal in die datenbank schreiben und das meinte ich wie kann ich mysql sagen doppelte authoren vermeiden

if ($authorenübergabe == .....
 

HoRnominatoR

Lt. Junior Grade
Dabei seit
Dez. 2004
Beiträge
302
AW: MYSQL bereits eingebenen author nicht nochmal in die datenbank schreiben

traegst du beides gleichzeitig ein? entweder du fragst vorher ab, ob der autor schon vorhanden ist. wenn ja, einfach die ID eintragen, wenn nicht, neuen autor anlegen und dessen id eintragen. oder du gibst der tabellenspalte autor.name das attribut unique mit, dann darf der string kein weiteres mal vorhanden sein.
 
E

ExtiQ

Gast
AW: MYSQL bereits eingebenen author nicht nochmal in die datenbank schreiben

Ich bin noch nicht so fest in MySQL aber ich denke es müsste so gehen:

Code:
$autordenesschongibtabermitanderembuch = '"Bill Gates";
$neuesbuch = "Wie vernichte ich Windows in 10 Tagen";

$table = " SELECT * FROM tabelle ";
$query = mysql_query($table) OR die(mysql_error());

while($row = mysql_fetch_assoc($query))
{
   if($row['autor'] == $autordenesschongibtabermitanderembuch)
   {
      $eintrag = "INSERT INTO tabelle VALUES $neuesbuch WHERE autor=$autormit...buch";
      mysql_query($eintrag)
   }
   else
   {
   // Erstelle neuen Autor mit nem tollen Buch
   }
}
So hab ich das verstanden ;)

MfG eXtiQ
 

nischtak

Banned
Ersteller dieses Themas
Dabei seit
Nov. 2005
Beiträge
692
AW: MYSQL bereits eingebenen author nicht nochmal in die datenbank schreiben

PHP:
<table border="1"> 
<tr><td>book_id</td><td>TITEL</TD><td>JAHR</td><TD>EDITION<TD>AUTHOR(EN)</td></tr>

<?php


$verbindung = mysql_connect ("150.158.150.28","lamprecht","test")
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);
    printf("Der zuletzt eingefuegte Datensatz \"book_id\" hat die ID %d\n<br>", mysql_insert_id());
    $book = mysql_insert_id();

    
    if ($author == "auhors_ge.author")  
       {
       echo "author schon vergeben";
       }
    else
       { 
    	$eintrag2 = "INSERT INTO authors_ge (author) VALUES ('$author')";
        $eintragen2 =mysql_query($eintrag2);
	}
        printf("Der zuletzt eingefuegte Datensatz \"author_id\" hat die ID %d<br>", mysql_insert_id());
        $aut = mysql_insert_id();
	
	
	
	
            $eintrag3 = "INSERT INTO rel_book_author_ge (author_id,book_id) VALUES ('$aut','$book')";
            $eintragen3 =mysql_query($eintrag3);



$abfrage = "SELECT COUNT(book_id) FROM books_ge";
$ergebnis = mysql_query($abfrage);
$menge = mysql_fetch_row($ergebnis);
$menge = $menge[0];

echo "Es sind $menge Datensaetze vorhanden";

   $abfrage = "SELECT books_ge.title,
	   	      books_ge.year,
		      books_ge.edition,
		      books_ge.book_id
	    	   
		   
	       FROM   books_ge ORDER BY book_id";


   $ergebnis = mysql_query($abfrage)
   or die ("Ungueltiges SQL".mysql_error());
   while ($row = mysql_fetch_row($ergebnis))
   {
   
    
   
   echo "<tr><td>$row[3]</td><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>";
	
	
	
   $abfrage = "SELECT books_ge.title,
	   	      books_ge.year,
		      books_ge.edition,
		      books_ge.book_id
	    	   
		   
	       FROM   books_ge";
	       
 }    
	       
 ?>
</table>

vielen dank für eure bemühungen....
ich frag den vorher ab wenn die Author_id schon nichts machenwenn sie nicht vergeben ist soll er ein neuen eintrag machen
aber die if anweisung ist noch falsch bei mir schaut es euch mal an
 

Phux

Cadet 4th Year
Dabei seit
Apr. 2004
Beiträge
70
AW: MYSQL bereits eingebenen author nicht nochmal in die datenbank schreiben

Der Fehler ist: "auhors_ge.author".
Im IF-Statement musst Du das Arrayfeld angeben, in das der Author gefetcht ist.

So wie Du die Angabe benutzt, funktioniert sie nur in einem SQL-Statement.
 

nischtak

Banned
Ersteller dieses Themas
Dabei seit
Nov. 2005
Beiträge
692
AW: MYSQL bereits eingebenen author nicht nochmal in die datenbank schreiben

if ($row1[0] == $author)
{
echo "author schon vergeben";
}
else
{
$eintrag2 = "INSERT INTO authors_ge (author) VALUES ('$author')";
$eintragen2 =mysql_query($eintrag2);
}
printf("Der zuletzt eingefuegte Datensatz \"author_id\" hat die ID %d<br>", mysql_insert_id());
$aut = mysql_insert_id();



ich habs so versucht geht auch net richtig
 

Phux

Cadet 4th Year
Dabei seit
Apr. 2004
Beiträge
70
AW: MYSQL bereits eingebenen author nicht nochmal in die datenbank schreiben

Zitat von nischtak:
if ($row1[0] == $author)
{
echo "author schon vergeben";
}
else
{
$eintrag2 = "INSERT INTO authors_ge (author) VALUES ('$author')";
$eintragen2 =mysql_query($eintrag2);
}
printf("Der zuletzt eingefuegte Datensatz \"author_id\" hat die ID %d<br>", mysql_insert_id());
$aut = mysql_insert_id();



ich habs so versucht geht auch net richtig


Beinhalten denn die beiden verglichenen Variablen auch die gewünschten Werte?
 

nischtak

Banned
Ersteller dieses Themas
Dabei seit
Nov. 2005
Beiträge
692
nein er kennt da oben die variable row1[0]
die wird ja erst weiter unten definiert...
 
Zuletzt bearbeitet:
E

ExtiQ

Gast
Das kann so doch gar nicht funktionieren.

du hast $row[xx] bis zu dem Punkt wo du es benutzt noch gar nicht definiert.

du müsstest erst:
Code:
  [COLOR=Gray]//Blaa mysql connect query
  [COLOR=Blue]$row[/COLOR] [COLOR=SeaGreen]=[/COLOR] [COLOR=Blue]mysql_fetch_row($result)[/COLOR]
[/COLOR][COLOR=#000000][COLOR=#007700] if ([/COLOR][COLOR=#0000BB]$author [/COLOR][COLOR=#007700]== [COLOR=Blue]row[(index wo autor steht)][/COLOR][/COLOR][COLOR=#007700])   
       { 
       echo [/COLOR][COLOR=#DD0000]"author schon vergeben"[/COLOR][COLOR=#007700]; 
       } 
    else 
       {  
        [/COLOR][COLOR=#0000BB]$eintrag2 [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#DD0000]"INSERT INTO authors_ge (author) VALUES ('$author')"[/COLOR][COLOR=#007700]; 
        [/COLOR][COLOR=#0000BB]$eintragen2 [/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]mysql_query[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$eintrag2[/COLOR][COLOR=#007700]); 
    } 
        [/COLOR][COLOR=#0000BB]printf[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"Der zuletzt eingefuegte Datensatz \"author_id\" hat die ID %d<br>"[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]mysql_insert_id[/COLOR][COLOR=#007700]()); 
        [/COLOR][COLOR=#0000BB]$aut [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]mysql_insert_id[/COLOR][COLOR=#007700](); [/COLOR][/COLOR]
 

nischtak

Banned
Ersteller dieses Themas
Dabei seit
Nov. 2005
Beiträge
692
PHP:
	    $sql = "SELECT author
        	    FROM authors_ge
                    WHERE author = '".mysql_real_escape_string($author)."'";

$resource = mysql_query($sql);
$result = mysql_fetch_assoc($resource);
if($result['hits'] == 0) {
    echo 'Name existiert noch nicht';
} else {
    echo 'Name existiert!';
}


ich versuch das jetzt mal so mit einer select abfrage...
 
Top