|
|
PHP Quellcode |
1 2 3 4 5 6 7 8 9 |
<?php /*DB-Connect START*/ $verbindung = mysql_connect ("localhost", "username", "password") or die ("keine Verbindung möglich. Bitte Webmaster kontaktieren"); mysql_select_db("test") or die ("keine Verbindung möglich. Bitte Webmaster kontaktieren"); /*DB-Connect END*/ ?> |
|
|
HTML Code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <h1>Neuer Eintrag</h1> <form action="EingabeVerarbeitungAusgabe.php" method="post" enctype="multipart/form-data"> <table> <tr> <td>Name:</td> <td><input type="text" name="Name"></input></td> <td>Vorname:</td> <td><input type="text" name="Vorname"></input></td> </tr> <tr> <td>Telefon:</td> <td> <input type="text" name="Telefon"></input></td> </tr> <tr> <td>Mobil:*</td> <td> <input type="text" name="Mobil"></input></td> </tr> <tr> <td>Fax:*</td> <td> <input type="text" name="Fax"></input></td> </tr> <tr> <td>Email:*</td> <td> <input type="text" name="Email"></input></td> </tr> <tr> <td>ICQ:*</td> <td> <input type="text" name="Icq" size="9"></input></td> </tr> <tr> <td>Geburstag: </td> <td> <input type="text" name="Geburtstag" value='01' maxlength='2' size="2"></input> <input type="text" name="Geburtsmonat" value='01' maxlength='2' size="2"></input> <input type="text" name="Geburtsjahr" value='1900' maxlength='4' size="4"></input> </td> </tr> <tr> <td>Strasse:</td> <td> <input type="text" name="Strasse"></input></td> <td>Hausnummer: </td> <td><input type="text" name="Hausnummer" size="3"></input></td> </tr> <tr> <td>Plz:</td> <td> <input type="text" name="PLZ" size="5" maxlength="5"></input></td> <td>Wohnort: </td> <td><input type="text" name="Wohnort"></input></td> </tr> <tr> <td>Vorstand:</td> <td> <input type="checkbox" name="Vorstand"></input></td> <td>Ausbilder: </td><td><input type="checkbox" name="Ausbilder"></input></td> <td></td> </tr> <tr> <td colspan="2"><input type="submit" value="Send"></input></td> <td colspan="2"><input type="reset" value="Reset"></input></td> </tr> </table> </form> *Freiwillige Angaben </body> </html> |
|
|
PHP Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<?php include "db-connect.php"; $Name= $_POST[Name]; $Vorname= $_POST[Vorname]; $Telefon= $_POST[Telefon]; $Mobil= $_POST[Mobil]; $Fax= $_POST[Fax]; $Plz= $_POST[Plz]; $Wohnort= $_POST[Wohnort]; $Strasse= $_POST[Strasse]; $Hausnummer= $_POST[Hausnummer]; $Email= $_POST[Email]; $Icq= $_POST[Icq]; $Geburtstag= $_POST[Geburtstag]; $Geburtsmonat= $_POST[Geburtsmonat]; $Geburtsjahr= $_POST[Geburtsjahr]; $Vorstand= $_POST[Vorstand]; $Ausbilder= $_POST[Ausbilder]; $id=mysql_fetch_object(mysql_query("SELECT MAX(ID) as max FROM Telefonbuch;")); $Geburt=$Geburtsjahr."-".$Geburtsmonat."-".$Geburtstag; $id=$id+1; mysql_query("INSERT INTO Telefonbuch VALUES ( $id, $Name, $Vorname, $Telefon, $Mobil, $Fax, $Plz, $Wohnort, $Strasse, $Hausnummer, $Email, $Icq, $Geburt, $Vorstand, $Ausbilder );"); ?> |
|
|
PHP Quellcode |
1 2 3 4 5 |
$sql = "INSERT INTO ...."; $result = mysql_query($sql); if (!$result) { die('Invalid query: ' . mysql_error().$sql); } |
Hi,
wenn deine Id in der Tabelle Telefonbuch auf autoincrement steht, dann brauchst du garkeine id beim Insert übergeben.
Falls nicht, was natürlich komisch wäre, müsstest du die ausgelesene id selber incrementieren, da du sonst für jeden Datensatz die selbe id hast. Und wenn deine id der Primärschlüssel ist, dann ist hier beim Insert Schluss.
und lasse dir mal die Fehlermeldung ausgeben, bzw den falschen String ausgeben:
![]()
PHP Quellcode
1 2 3 4 5 $sql = "INSERT INTO ...."; $result = mysql_query($sql); if (!$result) { die('Invalid query: ' . mysql_error().$sql); }
außerdem ist deine Programmierung anfällig für SQL Injections.
Es sollte überall so aussehen: $Name= mysql_real_escape_string($_POST['Name']);
PS: [lexicon]Willkommen[/lexicon] im Forum ihr beiden![]()
Nein meine ID steht nciht auf Auto_increment, weil wieso soll ich mich darauf verlassen wenn ich selber invrementieren kann udn dies dann mit Sicherheit richtig passiert.
Nein meine ID steht nciht auf Auto_increment, weil wieso soll ich mich darauf verlassen wenn ich selber invrementieren kann udn dies dann mit Sicherheit richtig passiert.

|
|
PHP Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?php include "db-connect.php"; $Name= $_POST[Name]; $Vorname= $_POST[Vorname]; $Telefon= $_POST[Telefon]; $Mobil= $_POST[Mobil]; $Fax= $_POST[Fax]; $Plz= $_POST[Plz]; $Wohnort= $_POST[Wohnort]; $Strasse= $_POST[Strasse]; $Hausnummer= $_POST[Hausnummer]; $Email= $_POST[Email]; $Icq= $_POST[Icq]; $Geburtstag= $_POST[Geburtstag]; $Geburtsmonat= $_POST[Geburtsmonat]; $Geburtsjahr= $_POST[Geburtsjahr]; $Vorstand= $_POST[Vorstand]; $Ausbilder= $_POST[Ausbilder]; $id=mysql_fetch_object(mysql_query("SELECT MAX(ID) as max FROM Telefonbuch;")); $Geburt=$Geburtsjahr."-".$Geburtsmonat."-".$Geburtstag; $id=$id+1; ///JETZT ruft eine andere Person aus dem Internet auch dieses Script auf, BEVOR der Nachfolgnde String zusammengesetzt wird und als Query abgeschickt wird. Dann bekommt er als MAX(ID) exakt den gleichen Wert. mysql_query("INSERT INTO Telefonbuch VALUES ( $id, $Name, $Vorname, $Telefon, $Mobil, $Fax, $Plz, $Wohnort, $Strasse, $Hausnummer, $Email, $Icq, $Geburt, $Vorstand, $Ausbilder );"); ?> |
Zu 1. Das sagte mir mein Ausbilder, das man sich besser nicht auf Auto-Increment stellen solltest, sondern dies durch die Software machen solltest.1. Verlässt du dich bei hundertausend anderen Dingen auch schon auf die Datenbank. Wenn die nicht geht, geht bei deinem Script auch nichts anderes. Wenn die funktioniert, funktioniert auch auto_increment.
2. Verletzt du das Transaktionskonzept auf ziemlich mieseste Weise: Wenn zwischen deinem SELECT MAX (ID) und dem INSERT INTO auch nur eine Millisekeunde liegt, funktioniert dein Schmuh ab tausend Eintragungen pro Sekunde garantiert nicht mehr, und ansonsten ist es Glücksache. Das selber machen ist absolutes Gebastel und nicht mehrbenutzerfähig. Du müsstest die Datenbank zumindest für Schreibende Zugriffe sperren, zwischen dem Select und dem Insert. Und wenn das machst und dann das Script aus irgendwelchen Gründen abraucht, trägt niemand mehr irgendetwas ein.
3. Verletzt deine Datenbank wirklich jede Normalform, sogar die Erste (und die gibts eigentlich bei relationealen Datebanken geschenkt![]()
That's right. Nur da ich Hilfe von meinem Ausbilder bekommen wolte musste ich es so machen. Sobald der Auto_Increment sieht, sieht der schwarz.Die schöpfer von datenbanken haben sich meist etwas dabei gedacht.
Ein WAAS??enn damit ließe sich deine anwendung nicht auf einem master master replikationsproblem installieren.
Also laufen tuts mittlerweile. Und wieso nicht mit Excelsheet?
Weils mir aufn Sack geht das der komplette Vorstand un die Ausbilder meines Vereins (wirklicher Verein...e.V.) dauernd meckert das die scheiß listen nicht aktuell sind.....weil die nicht die aktuellsten sind.....zumindest net die die aufn rechner von dennen sind. Deswegen will ich die Liste abschaffen und die sollen sich das Online angucken könne in einem internen privaten Bereich durch die oberste Instanz der Vereinsstruktur (wir sind nur eine Og) abgesegnete Sicherheitsstufe.
Die Formulare und die Datenbank exisitieren, damit ich oder mein Nachkömmling dies sehr einfach haben.
Ich habe in mühevoller Kleinarbeit bereits die komplette Homepage auf ne Click'i'Bunti-GUI umgestellt. Mit FCK-Editor, CMS und Co...
Also wäre es sinnig eine GUI dafür zu haben und dies nicht direkt im Quelltext machen zu müssen/einfach Änderungen zu realisieren.
MfG maxbrauner
P.S.: Bin FIAE in Ausbildung
Richtig!!!Jaja, das Problem ist hier ein organisatorisches.
Wir sprechen vom typischen DAU, also fällt diese Option raus.Alternativ könntest auch ein Excel-Sheet erstellen,dass in einem freigegeben Ordner auf einem Server liegt und allen Benutzern Leseberechtigungen und dir selber Vollberechtigungen erteilen und anschließend den Link zur Datei kommunizieren.
Wäre korrekt....Die Vorteile liegen ja auf der Hand: Deutlich geringerer Aufwand,
Stellt die oberste Stelle, also sowieso vorhanden und bereits in Benutzung.du benötigst kein Apache+PHP+MySQL-Server,
War ideal um meine PHP-Kenntnisse mal wieder aufzufrischen, was auch irgendwo der Sinn war für das Projekt.keine Website basteln,
Dafür stellt ein Verwaltungsprogramm von ganz oben die Listen bereit, welche nicht von mir, sondern von der "Kasse" bezogen werden.die User könnten die Listen sogar in andere Formate exportieren oder als Datenquelle für Serienbriefe o.ä. verwenden.
FIAE, jop das ist richtig.FIAE = Fachinformatiker Anwendungsentwicklung? Und dein Ausbilder? Ist der etwa auch Informatiker?
Ich glaub eine passendere Bezeichnung gibt es für diese Spezies nichtUnser Ausbilder ist gelernter Strippenzieher von der Telekom...keine Ahnung wie man den Beruf schimpft.

Das ist halt die Sache, genau so funktioniert auto_increment eben nicht, weswegen du hier massiv Gegenwind bekommen hast. Wahrscheinlich wirst du Datenbanken in deiner Ausbildung ja noch kennenlernen, inklusive Transaktionskonzept - ich denke dann wird dir die Tragweite des Problems eher bewusst.Der hat auch was aufn Kasten...kein Thema, er weiß es zu vermitteln, aber leider besteht das Problem darin das wir die "Technik" lernen sollen, und somit sozusagen wie Auto-Increment funkt.