SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 03.02.2009, 22:48:07
KeinenPlan KeinenPlan ist offline
Anfänger
 
Registriert seit: Jan 2009
Alter: 43
Beiträge: 57
Datenübernahme aus Auswahlliste in DB funktioniert nicht...

Habe zwar rausgefundem wo der Fehler liegt, aber dem Warum komm ich einfach nicht auf die Schliche!

relevenater Skripauszug mit Formular:
PHP-Code:
    echo '<table border="1">';
    echo 
'<input name="modus" type="hidden" value="EDIT">';
    echo 
'<input name="in_id" type="hidden" value="'.$foto_id.'">';
    echo 
'<input name="in_bilder_image" type="hidden" value="'.$bigview_file.'">';
    echo 
'<input name="in_bilder_thumbnail" type="hidden" value="'.$preview_file.'">';
    echo 
'<tr><td>Foto-ID</td><td>'.$foto_id.'</td></tr>';
    echo 
'<tr><td valign="top">Bild</td><td align="center"><img src="../fotos/preview/'.$preview_file.'"></td></tr>';
    echo 
'<tr><td>akt. Projektzuweiung:</td><td>';

    if (empty(
$projekt_titel))
    {
     echo 
'<b>noch nicht erfolgt</b>!';
    }
    else
    {
     echo 
$projekt_titel;
    }
    
    echo 
'</td></tr>';
        
    
//Festellen ob schon Projekte zur Zuweisung vorhanden sind
    
$selectquery2 'SELECT projekt_id FROM Projekte_test';
    
$selecterg2 mysql_db_query($db_name$selectquery2$verbindung);
    
$projekte_da count($selecterg2);
    
    if (
$projekte_da  1)
    {
     echo 
'<tr><td>Zuweisung &auml;ndern auf:</td><td>';
     echo 
'&nbsp;-&nbsp;keine Projekte vorhanden&nbsp;-&nbsp;';
     exit;
    }
    else
    { 
     
// 2. Hier Erfolgt die Projektzuordnung
     
$selectquery3 'SELECT projekt_id, titel FROM Projekte_test ORDER BY projekt_id';
     
$selecterg3 mysql_db_query($db_name$selectquery3$verbindung);
     echo 
'<tr><td>Zuweisung &auml;ndern auf:</td><td>';
     echo 
'<select name="in_projekt_id">';
     while (list(
$projekt_id$titel) = mysql_fetch_row($selecterg3))
     {
      echo 
'<option value="'.$projekt_id.'">'.$titel.'</option>';
     }
     echo 
'</select>';
    }
    echo 
'</td></tr>'
Es werdem alle Wert korrekt in der DB abgespeichert, außer den Werten, die aus dem <select> gezogen werden!

Und das kann ich mir nicht erklären, da bei der Seitenansicht Daten in der Auswahlliste auftauchen!

Es muss also irgendwo an der Übergabe liegen.

Wenn ich mir jedoch nach dem </select> die Werte von $projekt_id + $titel per echho ausgeben, habe ich zu meiner Verwunderung ebenfalls festgestellt, dass dort nichts angezeigt wird.

Was ich nun völlig unlogisch finde, da ja die Auswahlliste mit werten gefüllt ist.


Besonders ärgerlich ist, dass bis auf dieses Detail mein Projekt reibungslos funktioniert!


relevanter auszug für DB-Update:
PHP-Code:
elseif ($_POST["modus"] == "EDIT")
{
 if (
$_POST["deletecheck"] != "true")  
 {
  if (
$_POST["in_projekt_id"] == 1) { $projekt_titel 'Mehr- und Familienh&auml;user'; }
  elseif (
$_POST["in_projekt_id"] == 2) { $projekt_titel 'Gewerbebauten'; } 
  elseif (
$_POST["in_projekt_id"] == 3) { $projekt_titel '&Ouml;ffentliche Geb&auml;ude'; } 
  elseif (
$_POST["in_projekt_id"] == 4) { $projekt_titel 'Um- und Anbauten'; } 
  elseif (
$_POST["in_projekt_id"] == 5) { $projekt_titel 'Sonderbauten'; } 
  elseif (
$_POST["in_projekt_id"] == 6) { $projekt_titel 'Stadtplanung'; } 
 
  
$updatequery 'UPDATE Fotos
                 SET preview_file = "'
.$_POST["in_bilder_thumbnail"].'", fullview_file = "'.$_POST["in_bilder_image"].'",
                     "'
.$zuweisung.'", "'.$_POST[in_projekt_id].'", "'.$projekt_titel.'" 
                 WHERE foto_id="'
.$_POST["in_id"].'"';
  
$updateerg mysql_db_query($db_name$updatequery$verbindung);

  echo 
'Fotomaterial <b>ID: '.$_POST["in_id"].'</b> wurde erfolgreich ge&auml;ndert und gespeichert.';
 } 
Mit Zitat antworten
  #2  
Alt 04.02.2009, 00:54:26
stfwi stfwi ist offline
Anfänger
 
Registriert seit: Feb 2009
Alter: 42
Beiträge: 17
AW: Datenübernahme aus Auswahlliste in DB funktioniert nicht...

Hi,

kleiner Fehler ;)
PHP-Code:
   "'.$zuweisung.'""'.$_POST[in_projekt_id].'""'.$projekt_titel.'" 
... da fehlen nur die Anführungszeichen im $_POST[in_projekt_id].

(Du "escapest" die post-Daten vorher wegen MySql-Injection?)

Gruß

Stefan
Mit Zitat antworten
  #3  
Alt 04.02.2009, 10:57:46
KeinenPlan KeinenPlan ist offline
Anfänger
 
Registriert seit: Jan 2009
Alter: 43
Beiträge: 57
AW: Datenübernahme aus Auswahlliste in DB funktioniert nicht...

Äh, wie war das noch mit dem Wald vor lauter Bäumen nicht finden!? ;-)

Thx für's Korrekturlesen!

Geändert von KeinenPlan (04.02.2009 um 10:58:33 Uhr)
Mit Zitat antworten
  #4  
Alt 06.02.2009, 23:31:44
KeinenPlan KeinenPlan ist offline
Anfänger
 
Registriert seit: Jan 2009
Alter: 43
Beiträge: 57
AW: Datenübernahme aus Auswahlliste in DB funktioniert nicht...

Trotz stfwi's Hinweis funktionierte das Update der DB mit den besagten Werten immer noch nicht! Daher post ich noch mal die kompletten Skripts!

Einige Modifikation habe ich bereits vorgenommen, da über die Auswahlliste ja nicht der Wert von value= übergeben wird, sondern der jeweils gewählte Listeneintrag!

Ich kann nach mehrmaliger Durchsicht keinen Schreib- oder Logikfehler mehr ausmachen!

Falls jemand des Rätsels Lösung finden kann, wär das echt Super!

Formular-Skript:
PHP-Code:
<?php
$selectquery 
'SELECT foto_id, preview_file, bigview_file, zuweisung, projekt_id
                FROM Fotos
                WHERE foto_id = "'
.$_GET["id"].'"';
$selecterg mysql_db_query($db_name$selectquery$verbindung);

echo 
'<form enctype="multipart/form-data" action="fotos_aendern_action.php5" method="post">';

if ((list (
$foto_id$preview_file$bigview_file$zuweisung$projekt_id) = mysql_fetch_row($selecterg)) OR ($_GET["id"]=="NEU"))
{
  if (
$_GET["id"] == "NEU"
  {
    
$foto_id 'wird automatisch vergeben';
    echo 
'<b>ACHTUNG!</b><br>';
    echo 
'Vollbild und Vorschaubild m&uuml;ssen immer beide gleichzeitig hochgeladen werden; ansonsten erfolgt ein Abbruch!';
    echo 
'<table border="1">';
    echo 
'<input name="modus" type="hidden" value="NEW">';
    echo 
'<input type="hidden" name="MAX_FILE_SIZE" value="1000000">';
    echo 
'<tr><td>Foto-ID:</td><td>'.$foto_id.'</td></tr>';
    echo 
'<tr><td>Vollbild (800 Pixel breit):</td>';
    echo 
'<td><input name="userfile1" type="file" size="50"></td></tr>';
    echo 
'<tr><td>Vorschaubild (150 Pixel breit):</td>';
    echo 
'<td><input name="userfile2" type="file" size="50"></td></tr>';
  }
  elseif (
eregi("[0-9]"$_GET["id"]))
  {
    echo 
'<table border="1">';
    echo 
'<input name="modus" type="hidden" value="EDIT">';
    echo 
'<input name="in_id" type="hidden" value="'.$foto_id.'">';
    echo 
'<input name="in_bilder_image" type="hidden" value="'.$bigview_file.'">';
    echo 
'<input name="in_bilder_thumbnail" type="hidden" value="'.$preview_file.'">';
    echo 
'<tr><td>Foto-ID</td><td>'.$foto_id.'</td></tr>';
    echo 
'<tr><td valign="top">Bild</td><td align="center"><img src="../fotos/preview/'.$preview_file.'"></td></tr>';
    echo 
'<tr><td>akt. Projektzuweiung:</td><td>';

    if (empty(
$projekt_id))
    {
     echo 
'<b>noch nicht erfolgt</b>!';
    }
    else
    {
     echo 
'<b>siehe unten</b>!';
    }
    
    echo 
'</td></tr>';
        
    
//Festellen ob schon Projekte zur Zuweisung vorhanden sind
    
$selectquery2 'SELECT projekt_id FROM Projekte_test';
    
$selecterg2 mysql_db_query($db_name$selectquery2$verbindung);
    
$projekte_da count($selecterg2);
    
    if (
$projekte_da  1)
    {
     echo 
'<tr><td>Zuweisung &auml;ndern auf:</td><td>';
     echo 
'&nbsp;-&nbsp;keine Projekte vorhanden&nbsp;-&nbsp;';
     echo 
'</td></tr>';
     exit;
    }
    else
    { 
     
// 2. Hier Erfolgt die Projektzuordnung
     
$selectquery3 'SELECT projekt_id, titel FROM Projekte_test ORDER BY projekt_id';
     
$selecterg3 mysql_db_query($db_name$selectquery3$verbindung);
     echo 
'<tr><td>Zuweisung &auml;ndern auf:</td><td>';
     echo 
'<select name="in_projekt_titel">';
      while (list(
$projekt_id$titel) = mysql_fetch_row($selecterg3))
     {
      echo 
'<option value="'.$projekt_id.'">'.$titel.'</option>';
     }
     echo 
'</select>';
     echo 
'</td></tr>';
    }
  }
  
  if (
$_GET["id"] != "NEU" && eregi("[0-9]"$_GET["id"]))
  {
   echo 
'<tr><td colspan="2">Zum L&ouml;schen des Fotos bitte Checkbox&nbsp;<input type="checkbox" name="deletecheck" value="true">&nbsp;aktivieren!</td></tr>';
  }

  echo 
'</table>';
  echo 
'<input type="submit" value="Angaben speichern">';        
  echo 
'</form>';
}
else { echo 
'<p>Fehler in der Verarbeitung!</p>'; }
?>
Übergabe-Skript:
PHP-Code:
<?php
// Prüfen ob Zuweisung auf 1 gesetzt werden kann
if (!empty($_POST['in_projekt_id']))
{
 
$zuweisung 1;
}
else
{
 
$zuweisung 0;
}

if (
$_POST["modus"] == "NEW"
{

   
// Ermitteln wieviel Bilder/Beiträge schon hochgeladen wurden
   
$selectquery 'SELECT MAX(foto_id) FROM Fotos';
   
$selecterg mysql_db_query($db_name$selectquery$verbindung);
   list(
$maxid) = mysql_fetch_row($selecterg);
   
   if (empty(
$_FILES['userfile1']) AND empty($_FILES['userfile1']))
   {
    echo 
'Der Upload wurde nicht gestartet, weil vergessen wurde entsprechende Bilder auszuw&auml;hlen!';
    exit;
   }
   elseif (empty(
$_FILES['userfile1']) AND !empty($_FILES['userfile1']))
   {
    echo 
'Der Upload wurde nicht gestartet, weil vergessen wurde ein Vollbild auszuw&auml;hlen!';
    exit;
   }      
   elseif (!empty(
$_FILES['userfile1']) AND empty($_FILES['userfile1']))
   {
    echo 
'Der Upload wurde nicht gestartet, weil vergessen wurde ein Vorschaubild auszuw&auml;hlen!';
    exit;
   }  
   else 
   { 
    if (
is_uploaded_file($_FILES['userfile1']['size']) > 500000) {
        echo 
'Das Vollbild ist zu gro&szlig; (es sind maximal 500 kb erlaubt).';
        exit;
        }
    
    if (
is_uploaded_file($_FILES['userfile2']['size']) > 100000) {
        echo 
'Das Vorschaubild ist zu gro&szlig; (es sind maximal 100 kb erlaubt).';
        exit;
        }    
    
    
$bildinfos1 GetImageSize($_FILES['userfile1']['tmp_name']);
    
$bildinfos2 GetImageSize($_FILES['userfile2']['tmp_name']);
    
    if (
$bildinfos1[0] > 800) {
        echo 
'Das Vollbild ist breiter als erlaubt (maximal 800 Pixel)';
        exit;
        }
        
    if (
$bildinfos2[0] > 150) {
        echo 
'Das Vorschaubild ist breiter als erlaubt (maximal 150 Pixel)';
        exit;
        }
    
    if (
$bildinfos1[2] != 2) {
        echo 
'Bei dem Vollbild handelt es sich nicht um ein JPG!';
        exit;
        }
    
    if (
$bildinfos2[2] != 2) {
        echo 
'Bei dem Vorschaubild handelt es sich nicht um ein JPG!';
        exit;
        }
    
    
$maxid++;
    
$bild_datei1 $maxid.'.jpg'$bild_datei2 'preview_'.$maxid.'.jpg';    
    
$bild_url_intern1 $_SERVER['DOCUMENT_ROOT'].'/fotos/fullview/'.$bild_datei1;
    
$bild_url_intern2 $_SERVER['DOCUMENT_ROOT'].'/fotos/preview/'.$bild_datei2;    
    
    
copy($_FILES['userfile1']['tmp_name'], $bild_url_intern1);
    
copy($_FILES['userfile2']['tmp_name'], $bild_url_intern2);
    
    
$insertquery 'INSERT INTO Fotos(foto_id, preview_file, bigview_file)
                    VALUES ("'
.$_POST["maxid"].'", "'.$bild_datei2.'", "'.$bild_datei1.'")';
    
$inserterg mysql_db_query($db_name$insertquery$verbindung);
    
    echo 
'Das Vollbild wurde als <b>'.$bild_datei1.'</b> und das Vorschaubild als <b>'.$bild_datei2.'</b> auf den Server &uuml;bertragen und gespeichert!<br>';
    echo 
'Beide Ansichten wurden unter der <b>Foto-ID: '.$maxid.'</b> abgelegt.';
   }
}    
elseif (
$_POST["modus"] == "EDIT")
{
 if (
$_POST["deletecheck"] != "true")  
 {
  if (
$_POST["in_projekt_id"] == "Mehr- und Familienhäuser") { $projekt_id 1; }
  elseif (
$_POST["in_projekt_id"] == "Gewerbebauten") { $projekt_id 2; } 
  elseif (
$_POST["in_projekt_id"] == "Öffentliche Gebäude") { $projekt_id 3; } 
  elseif (
$_POST["in_projekt_id"] == "Um- und Anbauten") { $projekt_id 4; } 
  elseif (
$_POST["in_projekt_id"] == "Sonderbauten") { $projekt_id 5; } 
  elseif (
$_POST["in_projekt_id"] == "Stadtplanung") { $projekt_id 6; } 
 
  
$updatequery 'UPDATE Fotos
                 SET preview_file = "'
.$_POST["in_bilder_thumbnail"].'", fullview_file = "'.$_POST["in_bilder_image"].'",
                     "'
.$zuweisung.'", "'.$projekt_id.'"
                 WHERE foto_id="'
.$_POST["in_id"].'"';
  
$updateerg mysql_db_query($db_name$updatequery$verbindung);

  echo 
'Fotomaterial <b>ID: '.$_POST["in_id"].'</b> wurde erfolgreich ge&auml;ndert und gespeichert.';
 }
 
 elseif (
$_POST["deletecheck"] == "true"
 {
  
$vollbildpfad'../fotos/fullview/'.$_POST["in_bilder_image"];
  
$previewbildpfad '../fotos/preview/'.$_POST["in_bilder_thumbnail"];
  
$vollbild $_POST["in_bilder_image"];
  
$previewbild $_POST["in_bilder_thumbnail"];
  
  
// Löschen des Vollbildes versuchen
  
$result1 = @unlink($vollbildpfad);

  
// Löschen des Previewbildes versuchen
  
$result2 = @unlink($previewbildpfad);

  if ((
$result1 == false) || ($result2 == false))
  {
   echo 
'Entfernen von Foto-ID:&nbsp;'.$_POST["in_id"].' konnte nicht ausgef&uuml;hrt werden!<br><br>';
   echo 
'<b>Grund:</b><br>';
   if (
$result1 == false)
   {
    echo 
'&nbsp;•&nbsp;Die Vollbild-Datei '.$vollbild.' konnte nicht gel&ouml;scht werden!<br>';
   }
   if (
$result2 == false)
   {
    echo 
'&nbsp;•&nbsp;Die Preview-bild-Datei '.$previewbild.' konnte nicht gel&ouml;scht werden!<br>';   
   }
  }
  else
  {
   
$deletequery 'DELETE FROM Fotos WHERE foto_id="'.$_POST["in_id"].'"';
   
$deleteerg mysql_db_query($db_name$deletequery$verbindung) or die(mysql_error().'<br>$deletequery');
   echo 
'Die <b>Foto-ID: '.$_POST["in_id"].'</b> wurde erfolgreich aus der Datenbank entfernt';
   echo 
'&nbsp;und die dazugeh&ouml;rigen Bilder (<b>'.$_POST["in_bilder_image"].'</b>&nbsp;/&nbsp;<b>'.$_POST["in_bilder_thumbnail"].'</b>) auf dem Server gel&ouml;scht!';
  } 
 }
}
?>
Mit Zitat antworten
  #5  
Alt 07.02.2009, 12:17:43
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 53
Beiträge: 1.044
AW: Datenübernahme aus Auswahlliste in DB funktioniert nicht...

Deine IF-Anweisung ist meines Erachtens nach falsch
PHP-Code:
//so setzt du den Namen deiner Selectbox
<select name="in_projekt_titel">

//und so sieht deine Prüfung danach aus
if (!empty($_POST['in_projekt_id'])) 

//änder es mal in
if (!empty($_POST['in_projekt_titel'])) 

//oder halt im Formular,
<select name="in_projekt_id"
Die Projekt ID wäre dann $_POST['in_projekt_titel']. Deine o.g. IF-Anweisung verweist auf ein POST, der nicht existent ist, da im Formular nicht erstellt.

Geändert von urvater (07.02.2009 um 12:19:32 Uhr)
Mit Zitat antworten
  #6  
Alt 07.02.2009, 12:22:28
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 53
Beiträge: 1.044
AW: Datenübernahme aus Auswahlliste in DB funktioniert nicht...

Zitat:
Wenn ich mir jedoch nach dem </select> die Werte von $projekt_id + $titel per echho ausgeben, habe ich zu meiner Verwunderung ebenfalls festgestellt, dass dort nichts angezeigt wird.
Wundert mich auch etwas. Er sollte nach der While-Schleife mindestens den zuletzt zugewiesenen Wert anzeigen.
Alle Werte kann er nicht anzeigen, da sie bei jedem Durchlauf überschrieben werden.
Alternativ könntest du das Ergebnis in ein Array schreiben lassen und dieses zur Ausgabe bringen.
Mit Zitat antworten
  #7  
Alt 07.02.2009, 17:59:05
KeinenPlan KeinenPlan ist offline
Anfänger
 
Registriert seit: Jan 2009
Alter: 43
Beiträge: 57
AW: Datenübernahme aus Auswahlliste in DB funktioniert nicht...

@urvater:

Habe deinen Rat befolgt und den Update-Zugriffe zur DB wie folgt geändert; damit die IF-Abfrage sinnvoll ist.
PHP-Code:
  if ($_POST["in_projekt_titel"] == "Mehr- und Familienhäuser") { $projekt_id 1; }
  elseif (
$_POST["in_projekt_titel"] == "Gewerbebauten") { $projekt_id 2; } 
  elseif (
$_POST["in_projekt_titel"] == "Öffentliche Gebäude") { $projekt_id 3; } 
  elseif (
$_POST["in_projekt_titel"] == "Um- und Anbauten") { $projekt_id 4; } 
  elseif (
$_POST["in_projekt_titel"] == "Sonderbauten") { $projekt_id 5; } 
  elseif (
$_POST["in_projekt_titel"] == "Stadtplanung") { $projekt_id 6; } 
  
  
// Prüfen ob Zuweisung auf 1 gesetzt werden kann
  
if (!empty($projekt_id))
  {
   
$zuweisung 1;  
  }
  else
  {
   
$zuweisung 0;  
  }
 
  
$updatequery 'UPDATE Fotos
                 SET preview_file = "'
.$_POST["in_bilder_thumbnail"].'", fullview_file = "'.$_POST["in_bilder_image"].'",
                     zuweisung = "'
.$zuweisung.'", projekt_id = "'.$projekt_id.'"
                 WHERE foto_id = "'
.$_POST["in_id"].'"';
  
$updateerg mysql_db_query($db_name$updatequery$verbindung); 
Auf diese Korrektur bin ich selbst gekommen: zuweisung = "'.$zuweisung.'", projekt_id = "'.$projekt_id.'"

Trotzdem wird die Tabelle Fotos nicht mit den geänderten Werten für $projekt_id aktualisiert!

---

Daher mal die Frage, ob dir(oder sonst jemand) evtl. eine alternative Formular-Lösung für diese Aufgabe hast?

Einem Foto soll ein beliebiges Projekt zugeordnet werden können, wobei die Anzahl der Projekt und Fotos nach Oben hin unbegrenz ist!

Wobei mir persönlich eigentlich keine sinnvolle Alternative zur Auswahlliste einfällt, da man sonst ja keine Möglichkeit mehrer Projekte aufeinmal zur Auswahl anzubieten!

Hier mal die beiden DB-Tabellen!

Fotos:
foto_id, int(11), auto_increment, primary_key
preview_file, varchar(150)
bigview_file, varchar(150)
zuweisung, tinyint(4), standardwert 0
projekt_id, int(11)

zuweisung wird auf 1 gesetzt, wenn das Foto einen Projekt zugewiesen wurde; also Fotos:projekt_id mit einer Projekte_test:projekt_id übereinstimmt!

Projekte_test:
projekt_id, int(11), auto_increment, primary_key
aktiv, tinyint(4), standardwert 0
titel, varchar(150)
bereich, tinyint(4), standardwert 0
baujahr, varchar(150)
wfläche, varchar(150)
nfläche, varchar(150)
bauart, varchar(150)
ausführung, varchar(150)
Mit Zitat antworten
  #8  
Alt 07.02.2009, 21:56:50
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 53
Beiträge: 1.044
AW: Datenübernahme aus Auswahlliste in DB funktioniert nicht...

Ich kann dir aufzeigen, wie ich es mit der Rechtevergabe bei mir auf Arbeit gelöst habe. Kommt ja in etwa auf das Selbe raus. Daher schreibe ich es mal als Beispiel für deine Fotos.

1. Tabelle Projekte
id (sollte unique oder primär sein)
restliche Spalten wie sie nur dem Projekt zuzuordnen sind

2. Tabelle Bilder
id (sollte unique oder primär sein)
restliche Spalten, wie du sie zu den Bildern benötigst

3. Tabelle bilderprojekte
pid (beinhaltet die ID deiner Projekte)
bid (beinhaltet die ID deiner Bilder)
index als unique über beide Spalten setzen.

Den Select für die Zuweisung eines Projektes holst du ganz normal aus der Tabelle Projekte.
Speicherst du neue Bilder ohne Bezug zu einem Projekt, wird es ganz normal in Bilder gespeichert. Mit Bezug auf Bilder speicherst du sie zuerst unter Bilder und läßt dir die insert_id zurück geben. Danach speicherst du den Zusammenhang zwischen Projektid und Bilderid in Tabelle 3.
Willst du einem Bild, welches schon gespeichert ist, ein Projekt zuordnen musst du nur in Tabelle 3 die Projekt- und Bild-ID speichern. Weißt du einem Bild eine neue Kategorie zu müsstest du zuvor die vorhandene Verknüpfung in Tabelle 3 löschen bevor du sie neu Speicherst.

Die Anzeige der Bilder zu einem Projekt würde dann über left join erreicht werden.

Sollte ich morgen mal genug Zeit haben, versuche ich das mal mit deinen Tabellen nach zu vollziehen.

Vorteil dieser Lösung: Du könntest den Bildern auch eine mehrfache Zuordnung erlauben. Somit könnte man deine Projekte weiter aufsplitten ohne den Zusammenhang zu verlieren.
Mehr- und Einfamilienhäuser kann man trennen. Ein Bild eines Ein- bzw. Mehrfamilienhauses könnte so z. B. auch unter Sonderbauten verknüpft werden.
Etc. Etc. pp.

Geändert von urvater (07.02.2009 um 22:01:14 Uhr) Grund: um Vorteil ergänzt
Mit Zitat antworten
  #9  
Alt 08.02.2009, 01:58:31
KeinenPlan KeinenPlan ist offline
Anfänger
 
Registriert seit: Jan 2009
Alter: 43
Beiträge: 57
AW: Datenübernahme aus Auswahlliste in DB funktioniert nicht...

Ja dieser Ansatz mit 3 Tabellen zu arbeiten ist auch ne gute Variante, aber die Problematik liegt ja nicht bei den Tabellen, sondern daran wie ich die mit Werten füllen kann!

Sprich, wie verpack ich die Bild-Projektzuordnung im Backend, wenn es per Auswahliste(<select>) innerhalb eines Formulars aus unerfindlichh Gründen hier nicht funktioniert?

Geändert von KeinenPlan (08.02.2009 um 01:59:32 Uhr)
Mit Zitat antworten
  #10  
Alt 08.02.2009, 12:41:58
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 53
Beiträge: 1.044
AW: Datenübernahme aus Auswahlliste in DB funktioniert nicht...

Versuch es mal mit folgender Update-Query. Hab lediglich mal die Hochkommatas getauscht. Bin mir nicht sicher aber glaube MySql erwartet ' statt ".
PHP-Code:
$updatequery "UPDATE Fotos
    SET preview_file = '"
.$_POST['in_bilder_thumbnail']."', fullview_file = '".$_POST['in_bilder_image']."',
    zuweisung = '"
.$zuweisung."', projekt_id = '".$projekt_id."'
    WHERE foto_id = '"
.$_POST['in_id']."'"
Sollte ich heute mehr Zeit haben, dann schon ich mal genauer rüber.

PS: Wenn ich deine Frage richtig verstanden habe, dann willst du ja "nur" dem Bild ein Projekt zuweisen. Es würde demnach vollkommen reichen, wenn der Update nur auf die Spalte "zuweisung" geht, wo die foto_id = $_POST['in_id'] ist. Die restlichen Variablen blieben dabei ja vollkommen unangetastet.

Oder soll bei dem Update auch noch etwas am Bild selbst geändert werden können?
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bei Auswahlliste alles auswählen Tatjana PHP Grundlagen 5 30.07.2007 22:50:08
Bild als Blob in DB - Ausgabe funktioniert nicht ceptar PHP Grundlagen 6 19.02.2006 18:15:33
Bildupload funktioniert lokal, online aber nicht 8805-evergreen. PHP Grundlagen 11 09.02.2006 15:55:48
TXT-Datei splitten, funktioniert nicht mit Leerstellen BenjaminG PHP Grundlagen 11 29.06.2005 17:08:04
prüfen unter welcher Endung PHP funktioniert... FourSix Off Topic Area 4 10.04.2003 23:37:28


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:51:39 Uhr.


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


© 2001-2022 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt