Da tut sich gleich wieder ein neues kleines Problemchen auf: wie kann man ein input feld mit type="file" auf Eingabe prüfen. es funktioniert irgendwie nicht mit dem name-attribut. Hast du ne Idee? Zur info es gibt mehrer dieser Felder, die unabhängig voneinander geprüft werden sollen.
Thanks
Beiträge von sero79
-
-
danke, das funktioniert jetzt.
-
Hi,
danke für den Tip mit move_uploaded_file. Ich lade die Datei in den bestimmten Ordner und in die DB kommt nur der Dateiname.
Gleichzeitig wird die Datei in einen einheitlichen Dateinamen je Datensatz umbenannt (z.B. 01-img.jpg). Dazu hänge ich die ID des jeweiligen Datensatzes an den Dateinamen voran. So gibt es für jeden Datensatz eine Datei.
Allerdings gibts mit der Vergabe der ID ein Problem, wenn ich einen neuen Datenssatz hinzufüge: ich hole mir die maximale ID ( z.B 100) über eine Abfrage und sage IDnext = IDmax+1 (z.B. 101). So weit so gut, werden jetzt aber Datensätze zuvor gelöscht (z.B. 99, 100), dann ist IDmax 99 und 100 wäre IDnext. Aber beim Erstellen des neuen Datensatzes vergibt MySQL als neue ID 101 (da ja schon 99, 100 vergeben wurden), da ID auto_increment. Nun meine Frage, wie kann ich in diesem Sonderfall die richtige ID erhalten? -
eigentlich wollte ich diese variante nur mal testen, aber leider funktioniert es nicht.
zur zeit habe ich die bilder in einem Ordner und in die DB kommt nur der link. das funktioniert ganz gut. Ist das eine gängige Methode?
mal ne frage: kann man ein bild über ein Formular in einen bestimmten Ordner hochladen? Also anstatt ins die DB gleich in einen Ordner. -
Hallo,
anhand dieses Tutorials http://www.infos24.de/mysqle/handbuch/9_mysql_binaries.htm versuche ich Bilder in meine DB hochzuladen und wieder auszugeben.
Nach dem Hochladen in die DB steht in Spalte 'Bild' folgender Eintrag: BLOB - 0 Bytes. Es ist sozusagen leer. Diese Fehlermeldung erscheint nach dem Ausführen des Skripts:Code[B]Warning[/B]: fread(): supplied argument is not a valid stream resource in [B]C:\xampp\htdocs\myStaff\Datenbank-Test\upload.php[/B] on line [B]18[/B]
Zeile 18
Hier der Code vom Tutorial (übergabevariablen hinzugefügt):PHP
Alles anzeigen<? mysql_connect("localhost","",""); mysql_select_db("homepage"); include "bild-upload.html"; $modul = $_POST['modul']; $nummer = $_POST['nummer']; $datei = $_POST['datei']; if($modul ==1) { print "<html><head><title>Bild in eine mysql Datenbank einspeisen mit PHP</title></head> <body>"; $bild=addslashes(fread(fopen($datei, "r"), filesize($datei))); $Name=$HTTP_POST_FILES['datei']['name']; mysql_query("insert into bilder(Name,Bild) values ('$Name','$bild')"); $zahl= mysql_insert_id(); echo "Der Name des Files ist ".$HTTP_POST_FILES['datei']['name']."<br>"; echo "Der Grösse des Files ist ".$HTTP_POST_FILES['datei']['size']."<br>"; echo "Der File ist vom Typ: ".$HTTP_POST_FILES['datei']['type']."<br>"; echo "Der Name des Files ist ".$HTTP_POST_FILES['datei']['name']."<br>"; $dateiname=$HTTP_POST_FILES['datei']['name']; echo "Der File wurde upgeloaded. Die Nummer des Bildes ist $zahl"; print "</body></html>"; } if($modul ==2) { $zeiger=mysql_query("select Bild from bilder where Ident=$nummer"); $ergebnis=mysql_fetch_array($zeiger); print $ergebnis['Bild']; } if($modul ==3) { $zeiger=mysql_query("select Bild from bilder where Ident=$nummer"); while($ergebnis=mysql_fetch_array($zeiger)) { print $ergebnis['bild']; } } mysql_close(); ?>
Ich bin mir nicht ganz sicher, ob ich die DB richtig eingerichtet habe, da ich nicht weiss, wo diese Anweisungen gemacht werden sollen:
Thanks -
für die benutzerfreundlichkeit ist die überprüfung ganz gut.
ich war mir nur unsicher mit der zeichenkette, da ich mich mit der syntax nicht auskenne, aber es funktioniert... -
-
-
Super, Problem gelöst. War einfacher als gedacht...Grundlagen eben
-
Hallo,
ich verwende ein Auswahlliste zur Eingabe von mir festgesetzter Werte (z.B. Jahreszahlen). Die Übergabe der Werte in die DB funktioniert gut. Über eine Bearbeitungsfunktion, wird ein Datensatz aus der DB ausgelesen und in die Formularzellen wieder eingefügt und kann somit geändert werden. Das klappt soweit mit allen einfachen Textzellen, aber in der Auswahlliste wird der jeweilige Wert nicht angezeigt.
Wie kann man erreichen, dass in der Auswahlliste der Wert aus der DB angezeigt wird? -
du musst natürlich diese Funktion im Gesamtskript sehen, dann machen die oben genannten Sachen schon Sinn...zumindest funktioniert es:D. Aber das betrifft nicht meine Frage.
Ich kann sehr wohl return $filterMessage; ausgeben aber mit return $result; funktioniert das nicht. Die Rückgabe von $result ist in meinem Skript bedingung, damit die funktion läuft! -
also ich möchte lediglich eine Nachricht ausgeben, die in einer Variable verpackt sein soll, so dass ich diese an passender stelle in der html einbauen kann... ist das verständlicher
-
Hallo Leute,
ich habe noch ein kleines Problem mit einer anderen Abfrage. Die unten gezeigte Funktion besteht aus 2 Abfragen. Soweit funktioniert es auch. Zusätzlich soll eine Nachricht ($filterMessage) angezeit werden. Allerdings möchte ich diese Nachricht als Variable ($filterMessage) ausgeben und nicht als echo, wie hier im Bsp. Habt ihr ne Idee? return $filterMessage; klappt nicht...
PHP
Alles anzeigenfunction AbfrageProjekt( $query, $dbCon, $gruppe ) { if ($gruppe > '' && isset ($_GET['start'])) { $query = "SELECT id, nummer, name, gruppe, text, bild1, bild2, bild3 FROM links WHERE gruppe='$gruppe' ORDER BY nummer"; $result = mysql_query( $query, $dbCon ) or die ("MySQL-Error: " . mysql_error() ); $filterMessage = "gefiltert nach Gruppe: " . $gruppe; echo $filterMessage; return $result; } else { $query = "SELECT id, nummer, name, gruppe, text, bild1, bild2, bild3 FROM links ORDER BY gruppe, nummer"; $result = mysql_query( $query, $dbCon ) or die ("MySQL-Error: " . mysql_error() ); $filterMessage = "alle Gruppen"; echo $filterMessage; return $result; } }
-
Hallo Bandit600,
ich habe das Problem selber lösen können, somit konnte ich Punkt 7 übergehen, . Es lag gar nicht an der update funktion. Der Fehler lag vielmehr bei der übertragung der Formularwerte...mit dem Link werden halt keine Werte übergeben, nur mit einem Submit Button funktionierts. -
Ich versuche das Problem nochmal zu erklären:
Es gibt ein Problem mit dieser Funktion:
Über diesen Link wird die Funktion aufgerufen:HTML<a href="meineDB-opt-01.php?id=<?php echo $row['id']; ?>&action=aktualisieren">Prokjekt aktualisieren</a>
Nach Aufruf des Links wird diese Abfrage vorgenommen:PHPelseif ($action == 'aktualisieren') { $ErrorMessage = AktualierenProjekt( $id, $nummer, $name, $gruppe, $text, $bild ); if ($ErrorMessage == '') { $ErrorMessage = "Projekt wurde aktualisiert!"; } }
Leider kann ich den Fehler nicht richtig lokalisieren, aber ich denke der Fehler liegt in der oben genannten Funktion.
Wie bereits gesagt, löscht der Aufruf des Links den bestehenden Datensatzinhalt.HTML<a href="meineDB-opt-01.php?id=<?php echo $row['id']; ?>&action=aktualisieren">Prokjekt aktualisieren</a>
Ich hoffe, ihr könnt jetzt meine Problem besser verstehen. -
Hallo,
im folgenden findet ihr ein kleines DB Projekt, bestehend aus einem Eingabe-Formular und einer Ausgabe-Tabelle für die Datensätze. Jeder aufgelistete Datensatz verfügt über eine Bearbeitungs- und Lösch-Funktionen. Bei Aufruf des Bearbeitungs-Links wird der bestehenden Datensatz aus der DB ausgelesen und in das Eingabe-Formular eingeschrieben. Im Anschluss können jetzt die Daten manipuliert werden und bei Aufruf von "Prokjekt aktualisieren" wird der Datensatz aktualisiert.
Das zur Theorie, allerdings habe ich Probleme bei der Umsetzung der Aktualisierungs-Funktion. Bei Aufruf der Funktion steht z.B. das in der Adresszeile:
ZitatmeineDB.php?id=5&action=aktualisieren
. Als Ergebnis erhalte ich dann einen leeren Datensatz z.B. #5.
Hier zum Code:PHP
Alles anzeigen<?php include ("connect.inc.php"); $id = $_POST['id']; $nummer = $_POST['nummer']; $name = $_POST['name']; $gruppe = $_POST['gruppe']; $text = $_POST['text']; $bild = $_POST['bild']; $id = $_GET['id']; $action = $_GET['action']; if ($action == 'geloescht') { $ErrorMessage = LoeschenProjekt( $id , $dbCon ); } elseif ($action == 'bearbeiten') { $row = AbfrageBearbeitenProjekt( $id ); if(is_string($row)) { $ErrorMessage = $row; } } elseif ($action == 'aktualisieren') { $ErrorMessage = AktualierenProjekt( $id, $nummer, $name, $gruppe, $text, $bild ); if ($ErrorMessage == '') { $ErrorMessage = "Projekt wurde aktualisiert!"; } } else { $ErrorMessage = HinzufuegenProjekt($nummer, $name, $gruppe, $text, $bild); if ($ErrorMessage == '') { $ErrorMessage = "Projekt hinzugefügt!"; } } $result = AbfrageProjekt( $query, $dbCon ); include "EingabeDB-opt-01.html"; //--------------------------------------------------------------------------- function HinzufuegenProjekt($nummer, $name, $gruppe, $text, $bild) { $ErrorMessage = CheckEingabe( $nummer, $name, $gruppe, $text, $bild ); return $ErrorMessage; } //--------------------------------------------------------------------------- function CheckEingabe( $nummer, $name, $gruppe, $text, $bild ) { if ( $nummer == '' ) { $ErrorMessage = "Nummer ... <br />"; } if ( $name == '' ) { $ErrorMessage = $ErrorMessage . "Name ... <br />"; } if ( $gruppe == '' ) { $ErrorMessage = $ErrorMessage . "Gruppe ... <br />"; } if ( $text == '' ) { $ErrorMessage = $ErrorMessage . "Text ... <br />"; } if ( $bild == '' ) { $ErrorMessage = $ErrorMessage . "Bild ... <br />"; } if ($ErrorMessage == '') { $returnValue = EintragProjekt( $nummer, $name, $gruppe, $text, $bild ); if( $returnValue === TRUE ) { $ErrorMessage = ''; } else { $ErrorMessage = 'Große Probleme: ' . $returnValue; } } return $ErrorMessage; } //--------------------------------------------------------------------------- function VerbindungDB() { include ("connect.inc.php"); return $dbCon; } //--------------------------------------------------------------------------- function EintragProjekt( $nummer, $name, $gruppe, $text, $bild ) { $dbCon = VerbindungDB(); $insert = "INSERT INTO links(nummer, name, gruppe, text, bild) VALUES ('$nummer', '$name', '$gruppe', '$text', '$bild')"; $bolSuccess = mysql_query( $insert, $dbCon ); if ($bolSuccess) { return $bolSuccess; } else { return mysql_error(); } } //--------------------------------------------------------------------------- function AbfrageProjekt( $query, $dbCon ) { $query = "SELECT id, nummer, name, gruppe, text, bild FROM links ORDER BY gruppe, nummer"; $result = mysql_query( $query, $dbCon ) or die ("MySQL-Error: " . mysql_error() ); return $result; } //--------------------------------------------------------------------------- function AbfrageBearbeitenProjekt( $id ) { $dbCon = VerbindungDB(); $query = "SELECT id, nummer, name, gruppe, text, bild FROM links WHERE id=$id"; $result = mysql_query( $query, $dbCon ) or die ("MySQL-Error: " . mysql_error() ); if ($result) { return mysql_fetch_assoc($result); } else { return DBerror(); } } //--------------------------------------------------------------------------- function LoeschenProjekt( $id , $dbCon ) { $delEntry = "DELETE FROM links WHERE id=$id"; $bolSuccess = mysql_query( $delEntry, $dbCon ); if ($bolSuccess) { return "Projekt gelöscht"; } else { return DBerror(); } } //--------------------------------------------------------------------------- function AktualierenProjekt( $id, $nummer, $name, $gruppe, $text, $bild ) { $dbCon = VerbindungDB(); $updateEntry = "UPDATE links SET id='$id', nummer='$nummer', name='$name', gruppe='$gruppe', text='$text', bild='$bild' WHERE id=$id"; $bolSuccess = mysql_query( $updateEntry, $dbCon ); if ($bolSuccess) { return $bolSuccess; } else { return mysql_error(); } } ?>
HTML
Alles anzeigen<html> <head> <title>Projekte</title> </head> <body> <center> <h2>Projekte hinzufügen</h2> </center> <hr> <h3> <?php echo $ErrorMessage; // Will only appear if this html file is used in include statement ?> </h3> <form action="meineDB-opt-01.php" method="POST"> <center> <table width="30%" border="0" cellpadding="0" cellspacing="10"> <tr> <td>Projektnummer:</td> <td><input type="text" name="nummer" value="<?php echo $row['nummer']; ?>"</td> </tr> <tr> <td>Projektname:</td> <td><input type="text" name="name" value="<?php echo $row['name']; ?>"></td> </tr> <tr> <td>Gruppenname:</td> <td><select name="gruppe"> <option value="a">Gruppe a</option> <option value="b">Gruppe b</option> <option value="c">Gruppe c</option> </select> <?php echo $row['gruppe']; ?></td> </tr> <tr> <td>Text:</td> <td><input type="text" name="text" value="<?php echo $row['text']; ?>"></td> </tr> <tr> <td>Bildpfad:</td> <td><input type="text" name="bild" value="<?php echo $row['bild']; ?>"></td> </tr> <tr> <td><input type="submit" name="SubmitButton" value="Projekt hinzufügen"></td> <td><input type="reset"></td> </tr> <tr> <td><a href="meineDB-opt-01.php?id=<?php echo $row['id']; ?>&action=aktualisieren">Prokjekt aktualisieren</a></td> <td></td> </tr> </table> </center> </form> <hr> <center> <h2>Meine Projekte</h2> </center> <?php while($row = mysql_fetch_assoc($result)) { echo $row['id']; //Kontrolle ?> <table align="center" width="80%" border="1" bordercolordark="1" cellpadding="0" cellspacing="2"> <tr> <td colspan="2" >Überschrift:<br> <h1><?php echo $row['name']; ?>////<?php echo $row['nummer']; ?></h1></td> </tr> <tr> <td >Kategorie:<br> <h2><?php echo $row['gruppe']; ?><h2></td> <td > <a href="meineDB-opt-01.php?id=<?php echo $row['id']; ?>&action=geloescht">Löschen</a> <a href="meineDB-opt-01.php?id=<?php echo $row['id']; ?>&action=bearbeiten">Bearbeiten</a> </td> </tr> <tr> <td>Bild:<br> <img src="img/<?php echo $row['bild']; ?>" alt="" border="0" width="100" > </td> <td>Textteil:<br><?php echo $row['text']; ?></td> </tr> </table> <?php } ?> </body> </html>
Danke Seb -
Danke erstmal für euren Rat:
@Bandit:
im Code scheinen noch ein Paar Syntax Fehler zu stecken. Müsste die Zeile nicht so richtig sein:
In dieser Zeilekommt diese Fehlermeldung
ZitatParse error: syntax error, unexpected ';' in C:\xampp\htdocs\myStaff\Datenbank-Test\abfrage.php on line 24
-
Hallo,
Meine DB (alles in einer Tabelle) enhält Projekte die nummeriert und zu Gruppen zugeordnet sind(z.B. Gruppe a enhält 3 Projekte mit der Nummer 1 bis 3, Gruppe b enhält 2 Projekte mit der Nummer 1 bis 2). Über die Adresszeile frage ich jeweils ein Projekt ab: abfrage.php?wahl_a=1 Das ergibt die Ausgabe vom Projekt Nr 1 der Gruppe a. Meine Abfrage PHP sieht folgendermaßen aus:PHP
Alles anzeigen<?php error_reporting(E_ALL); ini_set("display_errors", true); include ("connect.inc.php"); include ("function.inc.php"); if (isset($_GET['wahl_a'])) { //Abfrage Projekt $query = "SELECT id, nummer, name, gruppe, text, bild FROM links WHERE gruppe = 'a' AND nummer = " . mysql_real_escape_string($_GET['wahl_a']); $result = abfrage($query, $dbCon); $num = mysql_num_rows($result); if (mysql_num_rows($result)) { include "Test-AusgabeDB.html"; } else { echo "Schade, aber der Parameter ist nicht vergeben."; } } elseif (isset($_GET['wahl_b'])) { //Abfrage Projekt $query = "SELECT id, nummer, name, gruppe, text, bild FROM links WHERE gruppe = 'b' AND nummer = " . mysql_real_escape_string($_GET['wahl_b']); $result = abfrage($query, $dbCon); $num = mysql_num_rows($result); if (mysql_num_rows($result)) { include "Test-AusgabeDB.html"; } else { echo "Schade, aber der Parameter ist nicht vergeben."; } } else { echo "Kein Parameter vorhanden"; } ?>
Wie man sieht, wird je nach Eingabe von wahl_a oder wahl_b die Gruppe a oder b angespochen. Die Abfrage filtert die Datensätze nach den jeweiligen Gruppen heraus. Allerdings finde ich den wiederholten Code nicht so günstig. Gerade wenn man weitere Gruppen hinzufügt erhält man doppelten Code. Mir fällt aber leider keine bessere Variante ein. Könnt ihr helfen?
Danke Sero -
mysql_num_rows: hat die Abfrage Treffer ja oder nein. Bei ja werden die Treffer angezeigt und bei nein kommt z.B. echo "keine Treffer gefunden";
hab ich's erraten! -