Autor |
Nachricht |
Sulak10
Threadersteller
Dabei seit: 08.04.2010
Ort: -
Alter: 33
Geschlecht:
|
Verfasst Do 08.04.2010 13:37
Titel PHP MYSQL Signaturenformular |
|
|
Hallo zusammen
Ich bin Neueinsteiger in PHP und MYSQL
Ich bin grade dabei als Projekt für meine Firma ein Tool über PHP und Mysql zu basteln, welches Emailsignaturen generiert.
Soweit habe ich schon alles und es klappt auch alles.
-Eintragen in die Datenbank
-Auslesen der Stammdaten
-Auslesen des Signaturenquelltextes (welcher auch in der Datenbank hinterlegt ist) mit den Stammdaten an der richtigen Stelle.
PROBLEM IST:
Nicht jede Signatur sieht gleich aus, manche Leute haben ihre private Festnetz/Faxnummer oder Handynummer hinterlegt, manche nicht.
Ich will gerne, dass das PHP Script die Datenbank auf die Einträge prüft und so entscheidet, welcher Quellcode ausgegeben wird.
Beim Anlegen der Benutzer füllt man ein Formular aus, das für alle gleich aussieht. Wer keine Handy/Festnetz/Faxnummer besitzt bekommt die Bezeichnung "NEIN" o.ä. eingetragen.
Beim Auslesen des Quellcodes mit den Stammdaten fülle ich wieder ein Formular aus, indem ich die eindeutige Identifikation des Mitarbeiters (bei mir die Emailadresse) angebe.
Das Formular überprüft die Datenbank auf die Mailadresse und gibt den Quellcode mit den Stammdaten aus.
form5.php
Code: | <html>
<head>
<title>Notessignatur</title>
<LINK REL="SHORTCUT ICON" HREF="/Images/Favicon.ico">
<link rel="stylesheet" type="text/css" href="css/Style.css">
</head>
<body>
<?php
$con = mysql_connect("localhost","Benutzer","Passwort");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("Datenbank", $con);
$result = mysql_query("SELECT * FROM Tabelle
WHERE Email='$_POST[Email]'");
while($row = mysql_fetch_array($result))
{
echo " " . $row['Abschnitt1'] . "" . $row['TelDW'] . "<br> " . $row['Abschnitt2'] . "" . $row['HeimTel'] . "<br> " . $row['Abschnitt3'] . "" . $row['Mobil'] . "<br> " . $row['Abschnitt4'] . "" . $row['FaxDW'] . "<br> " . $row['Abschnitt5'] . "" . $row['HeimFax'] . "<br>" . $row['Abschnitt6'] . "" . $row['Email'] . "" . $row['Abschnitt7'] . "" . $row['Email'] . "<br> " . $row['Abschnitt8'] . "</b>";
echo "<br />";
}
?>
</body>
</html>
|
(Abschnitt1 z.B. gibt jeweils die Passage aus dem Quellcode aus, TelDW z.B. gibt die Stammdate Telefon-Durchwahl aus)
Wie muss ich diesen Code erweitern, dass das Script aussucht, welchen Quellcode es braucht?
Es ist ein bisschen schwer es zu erklären, ich hoffe ihr versteht trotzdem wie ich es meine.
Ich würde mich auf eure Antworten freuen, bei Fragen, fragt mich
Lg Sulak10
|
|
|
|
|
Kash
Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 41
Geschlecht:
|
Verfasst Do 08.04.2010 13:55
Titel
|
|
|
Frag doch ab ob bestimmte Tabellenfelder den Default Wert haben oder nicht.
|
|
|
|
|
Anzeige
|
|
|
Sulak10
Threadersteller
Dabei seit: 08.04.2010
Ort: -
Alter: 33
Geschlecht:
|
Verfasst Do 08.04.2010 15:28
Titel
|
|
|
Leider hab ich nicht so viel Ahnung, weil ich erst neu in der Materie bin .. ich konnte das ganze auch nur mit Hilfe von Foren etc. programmieren und mir viele Sachen denken.
Aber wie man das macht, da bin ich überfragt.
Hab auch schon viel gesucht, bin leider zu keiner Antwort gekommen
Kannst du mir vllt für einen Anfänger () erklären, wie ich das machen kann?
Edit: Bzw kannst du mir erstmal sagen, was der Default Wert ist Hab es schon oft gehört, aber ich kann mir nicht viel drunter vorstellen.
Hab nachgelesen, dass man den Defaultwert mit PHPmyAdmin editieren kann .. hilft mir aber nicht viel weiter, weil ich auch dann nicht wüsste, was ich da mache ..
Zuletzt bearbeitet von Sulak10 am Do 08.04.2010 15:32, insgesamt 1-mal bearbeitet
|
|
|
|
|
safer-print
Dabei seit: 11.03.2010
Ort: -
Alter: -
Geschlecht:
|
Verfasst Do 08.04.2010 20:12
Titel
|
|
|
Wenn der Default-Wert, also der Vorgabewert aus der Datenbank (bei MySQL mit Standard bezeichnet) kannst du einfach prüfen ob z.B. $row['TelDW'] einen leeren String enthält.
Code: | while($row = mysql_fetch_array($result)) {
if ($row['TelDW'] != '') { echo " " . $row['Abschnitt1'] . "" . $row['TelDW'] . "<br> ";}
...
|
Das gehst du für alle Elemente durch, die eventuell leer sind.
Ein Hinweis noch:
Code: | $result = mysql_query("SELECT * FROM Tabelle
WHERE Email='$_POST[Email]'"); |
diese Art der Abfrage öffnet Angreifern Tür und Tor. Verwende die Funktion mysql_real_escape_string um Angriffe zu vereiteln z.B. so:
Code: | $result = mysql_query(sprintf ("SELECT * FROM `Tabelle`
WHERE `Email`='%s'",mysql_real_escape_string($_POST['Email'])); |
Und Feldnamen ab MySQL 5 immer in Backticks setzen.
|
|
|
|
|
Sulak10
Threadersteller
Dabei seit: 08.04.2010
Ort: -
Alter: 33
Geschlecht:
|
Verfasst Fr 09.04.2010 07:16
Titel
|
|
|
PERFEKT!
Vielen Dank!
PS: Dieses Tool wird nur intern von mir und 2 Kollegen verwendet, es wird dort eigl. keinen Angriffen ausgesetzt sein, aber ist trotzdem gut zu wissen
Zitat: | diese Art der Abfrage öffnet Angreifern Tür und Tor. Verwende die Funktion mysql_real_escape_string um Angriffe zu vereiteln z.B. so:
Code:
Code: | $result = mysql_query(sprintf ("SELECT * FROM `Tabelle`
WHERE `Email`='%s'",mysql_real_escape_string($_POST['Email'])); |
|
|
|
|
|
|
Sulak10
Threadersteller
Dabei seit: 08.04.2010
Ort: -
Alter: 33
Geschlecht:
|
Verfasst Fr 09.04.2010 10:09
Titel
|
|
|
Hm ich bekomme es leider nicht hin
Kann mir da vllt noch einmal jemand helfen?
Wenn ich das Formular ausfülle trägt die es die Daten in die Datenbank ein.
Code: | <form action="form1.php" method="POST">
<input type="text" name="Vorname" /> Vorname<br>
<input type="text" name="Nachname" /> Nachname<br>
<input type="text" name="TelDW" /> Telefon Durchwahl<br>
<input type="text" name="FaxDW" /> Fax Durchwahl<br>
<input type="text" name="Mobil" /> Mobilnummer<br>
<input type="text" name="HeimTel" /> Heim-Telefon<br>
<input type="text" name="HeimFax" /> Heim-Fax<br>
<input type="text" name="Email" /> Email<br><br>
usw.. es folgt noch die textarea mit den Abschnitten mit dem Quellcode für die Signatur.. |
Diese Datei ließt alles aus und gibt den Quellcode mit den Stammdaten aus dem Formular aus:
Code: | <html>
<head>
<title>Notessignatur</title>
<LINK REL="SHORTCUT ICON" HREF="/Images/Favicon.ico">
<link rel="stylesheet" type="text/css" href="css/Style.css">
</head>
<body>
<?php
$con = mysql_connect("localhost","********","*********");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("signaturen", $con);
$result = mysql_query("SELECT * FROM geruest
WHERE Email='$_POST[Email]'");
while($row = mysql_fetch_array($result))
{
echo " " . $row['Abschnitt1'] . "" . $row['TelDW'] . "" . $row['Abschnitt2'] . "" . $row['Abschnitt3'] . "" . $row['HeimTel'] . "" . $row['Abschnitt4'] . "" . $row['Abschnitt5'] . "" . $row['Mobil'] . "" . $row['Abschnitt6'] . "" . $row['Abschnitt7'] . "" . $row['FaxDW'] . "" . $row['Abschnitt8'] . "" . $row['Abschnitt9'] . "" . $row['HeimFax'] . "" . $row['Abschnitt10'] . "" . $row['Abschnitt11'] . "" . $row['Email'] . "" . $row['Abschnitt12'] . "" . $row['Email'] . "" . $row['Abschnitt13'] . "" . $row['Abschnitt14'] . "";
echo "<br />";
}
?>
</body>
</html>
|
Wenn ich in dem Formular z.B. bei HeimTel nichts angebe, wie bekomm ich es hin, dass die if/else-Funktion mir den richtigen Quellcode ausgibt (also z.B. ohne HeimTel oder ohne Mobil ..)
Oben die Ansätze haben mich zum nachdenken angeregt, lassen mich aber leider doch nicht auf die Lösung kommen, weil ich nicht weiß, wie ich es richtig einsetze oder umschreibe.
- Wenn ich bei HeimTel ein "N" eingebe, soll mir der Quellcode ohne HeimTel ausgegeben werden.
- Wenn ich bei HeimFax ein "N" eingebe, soll mir der Quellcode ohne HeimFax ausgegeben werden.
- Wenn ich bei Mobil ein "N" eingebe, soll mir der Quellcode ohne Mobil ausgegeben werden.
- Wenn ich bei HeimTel und HeimFax ein "N" eingebe, soll mir der Quellcode ohne HeimTel und ohne HeimFax ausgegeben werden.
- usw..
Vllt bin ich zu blöd, aber ich komm trotz den Threads oben nicht darauf was ich machen muss, damit es klappt.
|
|
|
|
|
escaPe
Dabei seit: 10.09.2007
Ort: <? include("home.htm") ?>
Alter: 112
Geschlecht:
|
Verfasst Fr 09.04.2010 11:55
Titel
|
|
|
Wie folgt würde ich an die Sache dran gehen (ist nicht allgemeingültig)
Du hast ja nicht das Problem das leere Variablen dir dein Layout zerhaun sondern,
das du ein allgemeines Layout, unabhängig von den Variablen, per echo Ausgibst.
Das Layout soll aber sich je nach Variable verändern
Also logisch;
Wenn variable nicht leer dann gib mir eine formatierung mit Variable aus.
Als einfachstes Beispiel.
Code: | if ($row['Abschnitt2'] != "")
{ $abschnitt2 = "<td>" . $row['Abschnitt2'] . "<td>"; }
echo $abschnitt2; |
Ausgabe wäre dann fall Variable Inhalt hat
: Zelle mit Inhalt der Variable
falls nicht wird garnichts ausgegeben.
Das nur mal als kleinen Denkanstoss.
Zuletzt bearbeitet von escaPe am Fr 09.04.2010 12:11, insgesamt 1-mal bearbeitet
|
|
|
|
|
Sulak10
Threadersteller
Dabei seit: 08.04.2010
Ort: -
Alter: 33
Geschlecht:
|
Verfasst Fr 09.04.2010 12:56
Titel
|
|
|
Ich stell mich glaub ich grade ein bisschen zu dumm an
Tut mir leid.
Kannst du mir das vllt mal in meinen Quellcode einbauen?
Ich weiß nicht wirklich, wie und wo ich das einbauen soll
Ich bekomm dann die ganze Zeit nen Fehler angezeigt.
|
|
|
|
|
|
|
|
Ähnliche Themen |
[PHP + mySQL] Kann Fehler in einer mySQL-Phrase nicht finden
[PHP/MySQL] MySQL Error: 1054, falsche Tabelle ausgewählt?
[MySql]Lost connection to MySQL server during query
(php-mysql) übergabe von formulardaten und abfrage m. mysql
[PHP / MySQL] MySQL-Funktion gesucht: letzteÄnderungTabelle
[php / mysql] Mysql Daten in php als Link ausgeben
|
|