Danke Euch beiden,
ich werde mir das in ruhe ansehen.
Ich hoffe wenn doch noch fragen offen sind das ich mich hier nochmals melden kann
steffen
Danke Euch beiden,
ich werde mir das in ruhe ansehen.
Ich hoffe wenn doch noch fragen offen sind das ich mich hier nochmals melden kann
steffen
ZitatIch frage mich gerade, was die Abfrage bringen soll.
Wenn man Alle Shows mit allen Models abfragen, aber kein Model doppelt haben möchte, hat man doch unvollständige Daten.
Wenn man all Models mit Allen Shows abfragen, aber keine Show doppelt haben möchte, hat man ebenfalls unvollständige Daten.
Und wenn man alle shows zu einem Model oder alle Models zu einer Show haben möchte, sollte es keine doppelten Einträge geben.
Also was bringt das? Ganz einfach stell dir vor du hast eine Datenbank von einem Sänger sagen wir Herbert Grönemeyer.
Ok der hat ja nicht nur ein Lied rausgebracht. Daneben stellen wir mal frank Sinatra da neben, auch er hat nicht nur ein Lied rausgebracht.
Das ganze kann man weiter spinnen.
Jetzt möchtest Du eine Übersichtsseite haben wo Du alle Künstler die Du magst aufgelistet da stehen. Ich sag mal so mir fehlt jetzt das Verständnis dafür wie so eine Tabelle aufgebaut sein müsste, dann denke ich mir das es auch kein Problem darstellen wird so einen Künstler leicht raus zu filtern.
So nun meine Tabelle war oder besser gesagt ist ja nicht das goldene Ei.
AndreasB m-n Relation dafür fehlt mir das Verständnis, das muss ich mir in ruhe durch lesen wie das geht.
ZitatSempervivum müsste man zusätzlich eine Tabelle nur mit Show-IDs und Model-IDs vorsehen
Auch das muss ich mir ansehen wie das geht.
Ich dachte ( soll man(n) ) das geht einfacher oder leichter aber nun gut.
Ich denke mal, Steffen meint folgendes: Sicher ist ein Model in mehreren Shows aufgetreten. Fragt man jetzt alle Shows für ein Model ab, treten die Daten des Models dann im Ergebnis der Abfrage mehrfach auf. Wird jetzt die ursprüngliche Tabelle auf models und shows aufgeteilt, erwarte ich, dass das am Ergebnis nichts ändern wird: Man wird einen Join verwenden müssen, um die Daten wieder zusammen zu führen. Dann bekommt man wieder mehrere Zeilen, weil es ja mehrere Shows gibt.
Danke besser kann man es nicht erklären
ZitatKannst jetzt nochmal dein Problem beschreiben?
Ich hoffe ich kann es verständlich erklären.
Also in der Datenbank (models) habe ich name und modelid.
Das Model kommt mehrmals mit der gleichen modelid vor. Jetzt möchte ich auf einer Seite, das so haben, das die Models nur einmal erscheinen. Also muss das gefiltert werden und die Datenbank gibt mir nur einmal die Person raus.
Ich habe es mit DISTINCT in der Abfrage versucht. Nach dem ich die MYSQL Referenz gelesen hatte, komme ich zu dem Entschluss das es nicht funktionieren kann.
Also kurz gesagt, ich wollte oder will es immer noch. das nur eine Person egal wie oft sie da enthalten ist ausgeben wird.
Steffen
Hallo Andreas ich hoffe so ist es richtig
und hoffe es richtig verstanden zu haben:)
Steffen
Ok werde das Datenbankschema versuchen ab zu bilden.
und das mal reinstellen.
Hallo ihr beiden,
ich habe jetzt die Tabelle in vier Tabellen unterteilt.
Eine Nur für Namen, Schlagzeile und dann zweimal in für für die Bilder, wird auch nicht wirklich optimal sein aber was solls.
Fremdschlüssel hat die Datenbank keine das einzige was die Datenbank bekommt ist die ID die ist Auto Inkrement und das andere womit ich eigentlich arbeite ist die modelid.
Jetzt muss ich die Tabellen Abfragen neu Anpassen, Soweit wird das auch nicht so schwierig sein.
Aber es stellt sich mir jetzt trotzdem die Frage, auch wenn ich meine Tabelle gesplittet habe, wie ich nur einen wert angezeigt bekomme.
Steffen
Hallo zusammen,
ich habe eine MYSQL Tabelle mit 19 Spalten. Jetzt ist es so das in der Tabelle mehrmals der Name und die dazu gehörige ID vorkommen.
Was ich möchte ist folgendes, ich möchte das der Name wenn er doppelt vorkommt. Nur einmal ausgegeben wird.
Der Aufbau der MYSQL Tabelle ist folgender:
ID | ||
showid | ||
showname | ||
modelid | ||
modelname | ||
collection | ||
seite | ||
datum | ||
galerie | ||
info | ||
card |
usw. wie gesagt 19 Felder.
Nun zu meiner 1. Frage:
wenn ich ein SELECT DISTINCT ausführe komme ich nicht zu dem Ergebnis. Ist auch klar, da ja mehre spalten unterschiedliche Inhalte haben.
Aber wie schaffe ich das das trotzdem die Daten nach dem modelname gefiltert werden und nur ein Datensatz vom jeweiligen modelnamen angezeigt wird?
Nun zu 2. Frage
Wäre es sinnvoller die Tabelle zu zerlegen?
z.B.
Tabelle 1 modelname modelid
Tabelle 2 alles relevante dann rein
Tabelle 3 dann Bilder usw.
Danke für Eure Zeit .
Schön, dass es funktioniert. Aber noch eine Frage zum Verständnis: Bei meinem ersten Vorschlag mit Subquery bin ich davon ausgegangen, dass es eine 1-zu-1-Zuordnung zwischen Set-ID und Model-ID gibt. Inzwischen ist mir eingefallen, dass es ja U. U. mehrere Models am Set geben kann. Dann würde es mit Subquery nicht gehen sondern nur mit Join.
Du hast mir den entscheidenden Tipp mit dem Sub bzw. unter Abfragen gegeben. Dazu muss ich mich erst einmal einlesen um zu sehen wie ich es umsetzen kann.
Also in der Datenbank gibt es das Model einmal oder das Model ist mehrmals vertreten. Ich versuche es nochmals so zu skizzieren.
setid = die verbindung zu allen drei Tabellen ( Model, Modelinfo, Modelbilder)
modelid = modelname
also im Verständnis für mich ich gebe die Setid an und komme zum Model X, dann möchte ich wissen gibt es das Model X noch einmal in meiner Datenbank bei ja ok geb sie mir, wenn nein dann ist es auch gut und gib mir ein false bzw. eine Null.
ZitatWie verhält es sich denn in deiner Konfiguration?
Edit: Würde auch dann mit Subquery gehen, wenn man ein IN verwendet
da ich das ganze zu Hause auf dem PC erstelle kann ich dir noch nicht einmal sagen ob das auf meinem Webspace geht. Aber ich denke schon.
Ich weis nicht wo ich da nach schauen muß / soll
LG Steffen und danke
PS: Oder auch mit einem Join:
Danke ich denke ich habe es.
also Tabelle 1 sind nur die namen der models z.B.
Tabelle model
id|setid|modelname|model_id
id wird selber von Mysql gesetzt, modelname und model_id sind im Prinzip identisch, also beide gehören zusammen.
Die setid gibt mir die Bildergalerie von dem jeweiligen Model aus. Da nun mal ein Model mehrere Bilder Galerien haben kann. Deswegen wird auch bei den Bildergalerien immer die setid angeben.
Tabelle 2 da sind nur schlagwörter datum galerielink xml usw.
also die sieht dann so aus:
id|model_id|datum|showname|bildergalerie|card|info|vorschau|seite
id die wird von mysql selber gesetzt, model_id ist identisch wie setid.
was ich möchte, ist folgendes. Ich habe ein Model, welches mehrmals in der Tabelle vorkommt. und die möchte ich gerne herausfiltern und ausgeben lassen.
Da ich eigentlich nur mit der setid arbeite, ist die frage wie ich das bewerkstelligen kann.
moin Steg
Die Frage ist, wie kann ich mir alles von einer Person aus der Datenbank ausgebenlassen. Ich komm da nicht drauf.
Moin Moin zusammen,
ich habe wiedermal ein Problem, wo ich nicht weiter weis.
// Binden der Setid die ist auch bekannt
//$setid = 'e0815';
if (isset ($setid)){
$setid = 'setid';
} else {
$setid = '0815';
}
//Abfrage der setid
$stmt = $db->prepare("SELECT * FROM model WHERE setid = :setid");
$stmt->execute(['setid' => $setid]);
// Ausgabe der Modeltabelle
while ( $model = $stmt->fetchAll(PDO::FETCH_ASSOC){
echo $model['modelname'];
}
Alles anzeigen
So jetzt zu meiner Frage, die setid die ist die bekannte. Wie kann ich die setid mit der model_id binden?
Die model_id ist fest mit dem model verbunden, der modelname und die model_id sind mehrmals belegt.
Geht das oder muss ich jedesmal die model_id mit angeben?
LG steffen
jetzt bekomme ich die Abfrage und in der while Schleife wird mir ja alles ausgeben.
Mein Problem ist ja aber. In Zeile 1 habe ich ein Array definiert. $seite = 'wasauchimmer';,
Danach wird gesucht und wird mir auch das Ergebnis angezeigt, soweit auch gut. wenn ich nur ein wert habe ist das ok. in der Datenbank gibt es immer mehrere Spalten die gefüllt sind, und die kann man doch nicht Händisch da oben eintragen. Sorry ich weiß nicht wie ich es besser ausdrücken soll.
Moin Moin zusammen,
Ich habe eine Abfrage wie folgt:
$seite = 'wasweissich.de'; // die Eingabe "wasweissich.de"
// die Abfrage als solche stellt sich nicht als Problem dar
$stmt->prepare("
SELECT
*
FROM TABELLE
LEFT JOIN linkeTabelle ON linkeTabelle.id = rechteTabelle.id
WHERE seite = :seite
");
// Werte Binden etc.
$stmt->bindParam('seite', $seite);
$stmt->execute(array('seite' => $seite)); // muss hier Seite als Array eingetragenwerden?
// hole alle Daten raus
$daten = $stmt->fetchAll(PDO::FETCH_ASSOC);
// ab hier Abfragen
Alles anzeigen
Soweit auch, jetzt zu meinem Problem.
Ich weiß nicht wie ich das Array
binde ohne eine Wert Angabe. Also ohne das ich diesen Wert eingeben muss, denn der soll aus meiner Datenbank abgeholt werden.
Ich weiß leider nicht wonach ich suchen soll. Vielleicht könnte mir jemand weiterhelfen wonach ich suchen muss soll.
Danke Arne, den Code Schnipsel werde ich morgen einbauen.
Zu deinem Hinweis, danke da der Code noch zu Hause, ist habe ich aus Bequemlichkeit htmlspezialcars noch nicht reingeschrieben.
Was ich noch nicht geprüft habe ist, ob pdo angriffsicher ist.
wie sollte das gehen?
Wenn Du das Geheimnis lüften würdest, um welche Notices es sich handelt, wäre es sicher leichter für uns Dir zu helfen.
Hallo Arne
die Notize ist folgende
Notice: Undefined index: id in C:\MAMP\htdocs\admin\galerie.php on line 14
Notice: Undefined index: id in C:\MAMP\htdocs\admin\galerie.php on line 19
das er mir die Notizen anzeigt war bzw. ist mir klar. kann ja nicht zurück auf die Bildergalerie Seite. Was soll er rausholen wenn keine übergabe der id stattfindet.
und jetzt komme ich ja zu meinem Problem. wie kann ich es bewerkstelligen das er wieder zurück findet?
Ich hatte schon an session gedacht. aber keine Ahnung wie das gehen soll.
Hallo zusammen.
Ich habe eine Frage.
Also ich habe 3 Seite.
Soweit so ok.
Wenn ich in der Galerie (php) das Bild anklicke wird dieses zu foto.php weitergeleitet und da angezeigt.
Soweit und alles ok. Der Code ist ok etc. also es gibt keine Fehlermeldung.
index.php
<?php
require __DIR__ . './_application.php';
$db = holeDatenbankverbindung();
$statemant = $db->query("
SELECT
modelseite.id,
modelseite.datum,
modelseite.vorschau,
model.modelname
FROM modelseite
LEFT JOIN model ON modelseite.model_id = model.id
");
$modelseite = $statemant->fetchAll(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Übersicht Models</title>
</head>
<body>
<table>
<tr>
<th>ID</th>
<th>Model</th>
<th>GalerieBild</th>
<th>Datum</th>
</tr>
<?php foreach ($modelseite as $inhalt): ?>
<tr>
<td><?= htmlspecialchars($inhalt['id']) ?></td>
<td>
<a href="galerie.php?id=<?= $inhalt['id'] ?>">
<?= htmlspecialchars($inhalt['modelname']) ?>
</a>
</td>
<td><img src="../<?= htmlspecialchars($inhalt['vorschau']) ?>" width="300" height="500"></td>
<td><?= htmlspecialchars (datum_deutsch ($inhalt['datum']))?></td>
</tr>
<?php endforeach; ?>
</table>
</body>
</html>
Alles anzeigen
galerie.php
wenn ich in der galerie.php,
<a href="foto.php?dateiname=<?= $bild['full'] ?>">
<img src="../<?= $bild['tn'] ?>" alt="Dummy Image" class="masonry-content">
</a>
anklicke werde ich auf die foto.php weitergeleitet.
Soweit auch ok. das Bild wird mir auch alles angezeigt.
Aber wie kann ich es so lösen, das ich von foto.php wieder zurück auf die galerie.php komme und mir auch die Bilderangezeigt bekomme, die ich gesehen habe. den jetzt wird mir eine leere Seite mit zwei Notizen angezeigt.
<?php
require __DIR__ . './_application.php';
$db = holeDatenbankverbindung();
$modelStatement = $db->prepare("
SELECT
model.modelname,
modelseite.showname
FROM modelseite
LEFT JOIN model on modelseite.model_id = model.id
WHERE model.id = :model_id
");
$modelStatement->execute(['model_id' => $_GET['id']]);
$modelsbilder = $modelStatement->fetch(PDO::FETCH_ASSOC);
$bilderStatement = $db->prepare("SELECT * FROM allebilder WHERE mseite_id = :mseite_id");
$bilderStatement->execute(['mseite_id' => $_GET['id']]);
$bilder = $bilderStatement->fetchAll(PDO::FETCH_ASSOC);
$full = $_SESSION['full'];
echo $full;
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="src/css/style.css">
</head>
<body>
<h1>
<?= htmlspecialchars($modelsbilder['modelname']) ?>
</h1>
<div class="masonry-wrapper"><div class="masonry">
<?php foreach ($bilder as $bild): ?>
<div class="masonry-item">
<a href="foto.php?dateiname=<?= $bild['full'] ?>">
<img src="../<?= $bild['tn'] ?>" alt="Dummy Image" class="masonry-content">
</a>
</div>
<?php endforeach; ?>
</div>
</div>
<div class="masonry-footer">
<p>Created with ❤ with <a href="//w3bits.com/tools/masonry-generator/" target="_blank" rel="external noopener nofollow">CSS Masonry Generator</a></p>
</div></div><script src="//unpkg.com/imagesloaded@4/imagesloaded.pkgd.min.js"></script>
<script src="src/js/masonry.js"></script></body>
</html>
<?php
/**
* session_unset();
* session_destroy();
*/
?>
Alles anzeigen
foto.php
<?php
session_start();
$dateiname = $_GET['dateiname'];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Fotogalerie - Foto <?= htmlspecialchars($dateiname); ?></title>
</head>
<body>
<h1>Foto <?= htmlspecialchars($dateiname); ?></h1>
<p>
<img src="../<?= htmlspecialchars($dateiname); ?>" alt="<?= htmlspecialchars($dateiname); ?>">
</p>
<p>
<!--<a href="galerie.php?">Zurück</a> -->
<a href="galerie.php" >Zurück</a>
</p>
</body>
</html>
Alles anzeigen
Ich hoffe das ich mich etwas vernüftig ausgedrückt habe.
Lg
Steffen
An den CREATE-Statements könnte man evtl. schon einen Fehler erkennen.
Aus der Fehlermeldung entnehme ich, dass die Tabelle gallerie referenziert wird, aber oben ist ersichtlich, dass gallerie eine Spalte ist. Vielleicht hilft schon die Verwendung von Galerie als Tabellenname.
Ja den Fehler habe ich gefunden, nach genaueren hinsehen, wurde eine spalte benannt die garnicht existiert. danke euch beiden für das erste.
HTML-Seminar.de - mit Videos zum schnellen Lernen, wie man eine Website selbst erstellt.