Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Join Problem

Empfohlene Antworten

So dann nerv ich euch mal wieder.

also flgendes ich hab jetzt eine datenbank jokes mit den tabellen jokes wo die witze gespeichert werden mit id und aid.

und eine tabelle authors in welcher die namen und email adressen der schreiber eingetragen sind,

dann möchte ich in authors schreiber hinzufügen.

INSERT INTO Authors

(ID, Name, EMail) VALUES

("1","nam1","email1"),

("2","name2","email2")

;

doch wenn ich das eingebe erhalte ich den error 1062 : duplicate entry 1 for key primary

könnte mir vielleicht jemand helfen?

gut hast recht danke!

aber sobald ich jetzt die zwei tabellen in einer anzeigen will mit:

select left(joketext,20), name, email from jokes, authors where aid = authors.id;

erhalte ich die fehlermeldung: empty set

was könnte das bedeuten?

ja schon klar

aber wieso sollte das kommen wenn ich alles richtig eingegeben habe ebenso die gros kleinschreibung?

so kan ich es doch schreiben oder?

denn. joketext und aid ist in jokes

und name email und authors.id ist in authors

so

also wenn ich den befehl:

select left(joketext,20), name, email from jokes, authors;

eingebe funktioniert es noch und ich bekomme eine tabelle angezeigt.

aber sobald ich where aid=authors.id hinzufpge geht es nicht mehr.

aid iist in jokes hab ich damit den richtigen syntax?

Damit hast Du ein sog. Cartesisches produkt. jede zeile der einen Tabelle wird mit jeder Zeile der anderen Tabelle verknüpft. Nicht unbedingt was Du haben möchtest.

aber sobald ich where aid=authors.id hinzufpge geht es nicht mehr.

Es "geht" schon. Es gibt nur einfach keine Daten, die zu dieser Bedingung passen. Anders ausgedrückt: Es gibt keine jokes die zu einer Autorenid passen würden.

Schau in deinen Tabellen nach und überprüfen das.

Dim

ah jetzt seh ichs die spalte aid hat den "inhalt" null

aber wie muss ich das jetzt richitg eingeben um den witzen von er tabelle jokes über die spalte aid einen author zuzuweisen. weil es wäre doch ziemlich sinnfrei wenn ich jedem witz die aid eintragen muss bei ein paar dutzend würde das doch etwas lange dauern

aber wie muss ich das jetzt richitg eingeben um den witzen von er tabelle jokes über die spalte aid einen author zuzuweisen.

Du musst selbst die Spalte aid füllen (manuell oder per Update Befehl) aber die Information wer ursprünglich welchen Witz geschrieben hat ist nicht (mehr?) vorhanden.

Zukünftig musst Du beim Einfügen eines Witzes sicherstellen, dass diese Spalte auch gefüllt ist. Sprich Du legst einen NOT NULL Constraint und zusätzlich noch einen Foreign key (Fremdschlüssel) auf die Spalte der auf die Autoren Tabelle verweist.

Damit hast Du sichergestellt, dass zu jeder aid auch ein Autor existiert - andernfalls bekommst Du eine entsprechende Fehlermeldung.

Dim

Bearbeitet von dr.dimitri

so, ich hab jetzt alles eingetragen.....

danke für die hilfe doktor!

dann hab ich doch gleih noch mal ne frage ist zwar eher php aber dann muss ich nicht extra den speicherplatz des servers belasten....

<body>

<h1>Autoren verwalten</h1>

<ul>
<?php
// Verbindung zum Datenbankserver
$dbcnx = @mysql_connect('localhost', 'root', '1234');
if (!$dbcnx) {
exit('<p>Verbindungsaufbau zum Datenbankserver ' .
' zurzeit nicht möglich.</p>');
}

// Datenbank auswählen
if (!@mysql_select_db('jokes')) {
exit('<p>Auswahl der Witzedatenbank' .
'zurzeit nicht möglich.</p>');
}


$authors =@mysql_query('SELECT id, name FROM authors');
if (!$authors) {
exit('<p>Fehler beim Aufruf aus der Witzedatenbank!<br /> ' . 'Error: ' . mysql_error() . '</p>');
}

while ($author = mysql_fetch_array($authors)) {
$id = $author['id'];
$name = $htmlspecialchars($author['name']);

echo '<li>$name ' .
"<a href='editauthor.php?id=$id'>Bearbeiten</a>" .
"<a href='deleteauthor.php?id=$id'>Löschen</a></li>";
}
?>
</ul>
<p><a href="newauthor.php">Neuen Autor einfügen</a></p>
<p><a href="index.html">Zurück zur Startseite</a></p>


</body>[/PHP]

hier hab ich alles richtig gemacht und trotzdem kommt "ein" fehler:

auf der seite steht dann..

[PHP]Autoren verwalten

Verbindungsaufbau zum Datenbankserver ' . ' zurzeit nicht möglich.'); } // Datenbank auswählen if (!@mysql_select_db('jokes')) { exit('

Auswahl der Witzedatenbank' . 'zurzeit nicht möglich.
'); } $authors =@mysql_query('SELECT id, name FROM authors'); if (!$authors) { exit('

Fehler beim Aufruf aus der Witzedatenbank!
' . 'Error: ' . mysql_error() . '
* '); } while ($author = mysql_fetch_array($authors)) { $id = $author['id']; $name = $htmlspecialchars($author['name']); echo '$name ' . "Bearbeiten" . "Löschen
"; } ?>

Neuen Autor einfügen

Zurück zur Startseite

hier hab ich alles richtig gemacht und trotzdem kommt "ein" fehler:

auf der seite steht dann..

Wenn Du alles richtig gemacht hättest, dann würde es funktionieren...

Was mich hier wundert ist, dass im Browser php Code zu sehen ist. Mein letztes php Programm ist schon länger her, aber das dürfte nicht passieren, wenn dein Webserver richtig konfiguriert ist.

Daher halte ich diese Frage hier für offtopic und Du solltest sie im PHP Forum stellen (und spar nicht mit dem Speicherplatz des Servers :D)

Dim

ja, mir ist schon klar das wenns nicht geht ein fehler vorliegt aber ich habe nach bestem wissen geproggt.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.