PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Datenbankeinträge mit hochgeladenen Dateien vergleichen (http://www.selfphp.de/forum/showthread.php?t=25999)

ThisIsBeat 01.05.2017 16:11:57

Datenbankeinträge mit hochgeladenen Dateien vergleichen
 
Hallo,

kurz zu dem was ich vorhabe :) Lädt ein User ein Foto hoch so wird dieses Bild in einem Ordner abgespeichert und der Dateipfad in der Datenbank. Das funktioniert soweit auch wunderbar.

Nun hat jeder User ein Profilbild und bei jedem hochgeladenem Bild, soll zusätzlich auch noch das Profilbild zu sehen sein (einfach in klein irgendwo dadrüber).

Genau hier liegt das Problem. Ich weiß nicht wie ich da heran gehen soll an die Sache, doch hier erstmal mein Code:

PHP-Code:

<?php
$array 
= array();
foreach(
glob('upload/bild_user'.$userid.'{*Lifestyle}'.'{*.jpg,*.jpeg,*.png,*.gif}'GLOB_BRACE) as $image
    
$array[$image] = filemtime($image);
    
arsort($array); // neueste Datei nach oben

$test "http://192.168.178.61/PHPversion/$pfad"// mal gucken 
    
foreach ($array as $key => $value
   echo 
"<div style='width: 50%; min-width: 100px; max-width: 300px; border-radius: 5px; border-style: double; border-color: gray; border-width: 1px; margin-left: 20px; margin-top: 25px; height: 360px; margin-bottom: 25px; box-shadow: 0px 8px 20px 0px gray; margin-right: 20px; display: inline-block'>
    
<img class='bild' src='"
.$test."' alt='Bild' style='width: 2%; min-width: 20px; max-width: 20px; border-radius: 20px; border-style: double; border-color: gray; border-width: 1px; margin-left: 10px; height: 20px; float: left; margin-top: 2px; margin-bottom: 2px; cursor: pointer'><p style='color: black; float: left; margin-left: 5px'>$user_id</p>
    
   <img src='$key' style='width: 100%; min-width: 100px; max-width: 300px; border-top: solid 1px gray; border-bottom: solid 1px gray; height: 300px; cursor: pointer; margin-right: 20px;' ><i class='fa fa-comment-o' aria-hidden='true' style='color: black; float: right; margin-right: 10px; cursor: pointer'></i></div>"


?>

Das ist der Code mit dem die hochgeladenen Bilder ausgelesen werden. Eine kurze Erklärung zu den Variablen:

$test = die Variable die den kompletten Dateipfad des Profilbildes beinhaltet. In ihr ist zudem die Variable $pfad zu finden, die den abgespeicherten Pfad in der Datenbank beinhaltet.

$user_id = ist die individuelle id eines Users die ebenfalls beim auslesen der Bilder mit angezeigt werden soll.


Nun ist es so das dass Profilbild sich in einer Tabelle befindet in der ebenfalls jegliche andere Informationen zu dem jeweiligen User stehen wie bspw. Vorname, Nachname usw.
Die hochgeladenen Bilder hingegen werden in einer anderen Tabelle abgespeichert in der ebenfalls die User_id zu finden ist.

Das Problem das ich nun habe ist das ich keine Ahnung davon habe, wie ich nun diese"Brücke" zwischen den Tabellen schaffe. Das einzige was in beiden meiner Tabellen identisch ist, ist der Eintrag zur User-ID. Doch wie gesagt weiß ich nicht wie ich da den vergleich ziehen soll um am Ende passend zu jedem Bild, ein Profilbild anzeigen zu lassen.

Würde mich freuen wenn jemand von euch eine Idee hat :)

vt1816 01.05.2017 19:02:20

AW: Datenbankeinträge mit hochgeladenen Dateien vergleichen
 
Wo kommt $pfad her?

ThisIsBeat 02.05.2017 22:05:18

AW: Datenbankeinträge mit hochgeladenen Dateien vergleichen
 
Zitat:

Zitat von vt1816 (Beitrag 149117)
Wo kommt $pfad her?

Ach ja vergessen, sorry :) In meiner Tabelle in der Datenbank (in die der Pfad der Profilbilder abgespeichert wird) gibt es eine Spalte namens "pfad".

Die Einträge dieser Spalte sollen später einmal in der Variable $pfad abgespeichert werden.

Ich weiß das dass ganze aktuell noch keinen Sinn macht weil die Variable nicht definiert ist.

Das liegt vor allem an dem Problem das ich halt nicht weiß wie ich diese Variable so definiere so das sie mir immer den Dateipfad des Profilbilds anzeigt, der auch zu dem hochgeladenem Bild passt.

vt1816 03.05.2017 07:22:44

AW: Datenbankeinträge mit hochgeladenen Dateien vergleichen
 
Wie wäre es dann mal mit einem:
PHP-Code:

"SELECT pfad FROM tabelle WHERE userID = $userid;" 

und der entsprechenden Auswertung des Ergebnis der Abfrage?

ThisIsBeat 06.05.2017 15:08:57

Zitat:

Zitat von vt1816 (Beitrag 149122)
Wie wäre es dann mal mit einem:
PHP-Code:

"SELECT pfad FROM tabelle WHERE userID = $userid;" 

und der entsprechenden Auswertung des Ergebnis der Abfrage?

Hey tut mir leid das ich erst jetzt schreibe. War ne stressige Woche :)

Also ja ich denke das dass auf jeden Fall der richtige Ansatz ist. Ich hab mir aber im laufe der Woche weiterhin Gedanken gemacht zu dem Code den du geschrieben hast.

Dieser Code
PHP-Code:

"SELECT pfad FROM tabelle WHERE userID = $userid;" 

funktioniert ja rein theoretisch nur dann wenn ich auch weiß welches hochgeladene Bild, zu welcher user-id gehört.

Jedes Bild das von allen Usern hochgeladen wird, wird in einem Ordner abgespeichert. Zusätzlich wird der Pfad des Bildes und die id des Users der das Bild hochgeladen hat, in einer Datenbanktabelle abgespeichert. Dieser Ordner wird dann in meinem Code ausgelesen. Jedes der enthaltenen Bilder wird in einem Array abgespeichert und dann mit der Variable $key ausgegeben ( da $key den Pfad der einzelnen Bilder enthält ).

Das bedeutet also das ich erstmal herausfinden muss welches Bild/$key zu welcher user-id gehört.

Ich hoffe man kann mir folgen ...


Ich habe also einen Code geschrieben der dazu dienen soll, herauszufinden welche Bild zu welcher User-id passt.
Wie ich oben schon einmal geschrieben habe, habe ich in meiner Datenbank zwei Tabellen:
Tabelle 1: beinhaltet alle Informationen eines Users die bei der Registrierung angegeben wurden UND das Profilbild
Tabelle 2: beinhaltet alle Pfade der hochgeladenen Bilder, sowie die User-IDs der User die ein Bild hochgeladen haben

In meinem Code beziehe ich mich zunächst auf Tabelle 2:
PHP-Code:

<?php
if(isset($key)) {
    
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU''root''fisch123');
    
$sql "SELECT user_id FROM `bildtabelle` WHERE `path` = '".$key."'";
    
$stmt $pdo -> query($sql);
    
$resultat $stmt -> fetch();
    echo 
"$resultat";
}
?>

Wie schon gesagt funktioniert der Code nicht. Bin mir auch ziemlich sicher das in diesem Code der ein oder andere Fehler steckt da ich das ganze mehr aus dem Bauch heraus geschrieben habe da ich nicht ganz weiß wie ich das sonst umsetzen soll.

Hierbei direkt eine Sache bei der ich mir unsicher bin. In meinem Code frage ich "WHERE 'path' = ".$key." "

$key ist aber eigentlich nur ein Pfad von vielen die im Array abgespeichert werden. Da ich ja bei allen Pfaden überprüfen muss zu welchen User-IDs sie gehören, frage ich mich ob die Zeile nicht eher "WHERE 'path' = ".$array." " lauten müsste.

Naja ich hab viel geschrieben und ich habe viele Fragen. Ich hoffe das mir trotzdem geholfen werden kann :)

Vielleicht noch als Ergänzung...
Wenn das ganze dann funktioniert und ich erstmal weiß welcher Pfad zu welcher user-id gehört dann kann ich die ermittelte user-id dazu nutzen, um sie mit der id aus der anderen Tabelle zu vergleichen und daraus das Profilbild zu generieren.

ThisIsBeat 06.05.2017 17:11:07

AW: Datenbankeinträge mit hochgeladenen Dateien vergleichen
 
So bin jetzt schon den ganzen Tag am probieren und habe vielleicht einen neuen Ansatz:

PHP-Code:

if(isset($key)) {
    
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU''root''lehar456');
    
$sql "SELECT user_id FROM `bildtabelle` WHERE `path` = '".$key."'";
    
$result mysqli_query($pdo$sql);
    while(
$row mysqli_fetch_object($result))
{
  echo 
$row->user_id;
}
    } 

muss auch zu diesem Code sagen das der nicht funktioniert es kommt immer die Fehlermeldung:
Warning: mysqli_fetch_object() expects parameter 1 to be mysqli_result, null given in /Library/WebServer/Documents/PHPversion/unbenannt.php on line 272

Warning: mysqli_fetch_object() expects parameter 1 to be mysqli_result, null given in /Library/WebServer/Documents/PHPversion/unbenannt.php on line 273.

Wie gesagt ist nur ein Ansatz vielleicht kann einer von euch mir sagen womit es schlauer wäre zu arbeiten :)

chorn 08.05.2017 09:45:56

AW: Datenbankeinträge mit hochgeladenen Dateien vergleichen
 
Du kannst mit den MySQLi-Funktionen auch nicht auf PDO zugreifen, das muss schon einheitlich sein

PHP-Code:

$pdo = ...
$statement $pdo->prepare(...)
$statement->execute(...)
$statement->fetchAll() 


ThisIsBeat 08.05.2017 19:54:13

AW: Datenbankeinträge mit hochgeladenen Dateien vergleichen
 
Zitat:

Zitat von chorn (Beitrag 149131)
Du kannst mit den MySQLi-Funktionen auch nicht auf PDO zugreifen, das muss schon einheitlich sein

PHP-Code:

$pdo = ...
$statement $pdo->prepare(...)
$statement->execute(...)
$statement->fetchAll() 


also ich gehe jetzt mal davon aus das du den Code aus meinem neuen Ansatz meinst ?:)
Okay also ich verstehe was du meinst aber eine Frage hätte ich da: Was bedeutet eigentlich fetchAll() ? Bedeutet das so viel wie "alle Ergebnisse" ?

vt1816 08.05.2017 23:37:11

AW: Datenbankeinträge mit hochgeladenen Dateien vergleichen
 
Zitat:

Zitat von ThisIsBeat (Beitrag 149132)
[..] Was bedeutet eigentlich fetchAll() ? Bedeutet das so viel wie "alle Ergebnisse" ?

Liesst Du hier.

ThisIsBeat 09.05.2017 16:33:50

AW: Datenbankeinträge mit hochgeladenen Dateien vergleichen
 
Das heißt also das ein Array zurückgegeben wird das alle Ergebnismengen enthält. Wenn ich das ganze nun ausgeben möchte dann würde ein
PHP-Code:

foreach 

wahrscheinlich Sinn machen oder ?

Ich meine letztendlich war das hier ja meine Ausgangslage:

PHP-Code:

<?php 
if(isset($key)) { 
    
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU''root''fisch123'); 
    
$sql "SELECT user_id FROM `bildtabelle` WHERE `path` = '".$key."'"
    
$stmt $pdo -> query($sql); 
    
$resultat $stmt -> fetch(); 

?>

also in etwa sowas hier würde doch für $relutat Sinn machen oder ?
PHP-Code:

foreach ($resultat as $res => $value



Alle Zeitangaben in WEZ +2. Es ist jetzt 10:31:51 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.