eine Anfangsfrage PHP mit Datenbank

PHP - alles Rund um die Programmierung von PHP und MySQL

Ist die geniale Programmiersprache, da sowohl für Einsteiger geeignet wie auch für Profis.

Moderator: lauras

Beiträge bitte im neuen Forum

Re: eine Anfangsfrage PHP mit Datenbank

Beitragvon Marcus77 » Dienstag 15. November 2011, 21:10

Basiii hat geschrieben:Ich habe jetzt mal alle Beiträge hier genau durchgelesen und: Ich habe absolut keine Ahnung was genau du haben willst, also wäre es sehr hilfreich wenn du noch mal kurz und auf den Punkt dein Ziel aufschreiben könntest, dann werde ich dir auch gerne helfen ;)



Grob gesagt ein

einfaches Formular
das Rechnen kann !

und seine Daten in eine Datenbank schreibt, welche ausgelesen werden kann !

es ist schwer das genau zu beschreiben... bzw es verständlich rüberzubrigen
Marcus77
HTML-Newbie
 
Beiträge: 36
Registriert: Mittwoch 9. November 2011, 13:23

Re: eine Anfangsfrage PHP mit Datenbank

Beitragvon Basiii » Mittwoch 16. November 2011, 07:41

Und da haben wir es gelöst, ich habe 2 Dateien erstellt, ein mal projects.txt:
Code: Alles auswählen
1|Projekt 1|Info über Projekt 1
2|Projekt 2|Info über Projekt 2
3|Projekt 3|Info über Projekt 3
4|Projekt 4|Info über Projekt 4
5|Projekt 5|Info über Projekt 5
6|Projekt 6|Info über Projekt 6

Kommentar: In dieser Datei einfach für jedes Projekt eine neue Zeile erstellen und so aufbauen wie die vorherigen ;)
id|Projektname|Projektinfo
Vor dem ausprobieren natürlich diese 3 Zeilen hier löschen :P


Und ein mal die Datei zur Verarbeitung, sie ist sicher nicht perfekt, aber ein Anreiz um weiter zu experimentieren:

Code: Alles auswählen
<?php

  function getProjects
($file)
  {
    if(!isset($file))
      return false;

    $handler = fopen($file, 'rb');
    while($line = fgets($handler))
    {
      $a = $line;
      $return[] = explode('|', $a);
    }
    /* debug: */ # print_r($return);
    return $return;
  }

  $projects = getProjects('projects.txt');

?>
<!DOCTYPE html>
<head>
  <title>Spendenformular</title>

  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
  <meta name="description" content="" />
  <meta name="author" content="" />
  <meta name="keywords" content="" />

<script>

  function changeStyle(id, style, value)
  {
    if(document.getElementById)
      document.getElementById(id).setAttribute('style', style+': '+value);
    else
      document.all.id.setAttribute('style', style+': '+value);
    return true;
  }

</script>
</head>

<body>
  <h1>Unser Spendenformular</h1>
<?php
    if
(isset($_POST['submit']))
    {
      $success = true;
      if(isset($_POST['reference']))         $formData['reference']         = trim(htmlentities($_POST['reference']));
       else $success = false;
      if(isset($_POST['referenceProjects'])) $formData['referenceProjects'] = $_POST['referenceProjects'];
       else $success = false;
      if(isset($_POST['amount']))            $formData['amount']            = trim(htmlentities($_POST['amount']));
       else $success = false;
      if(isset($_POST['mail']))              $formData['mail']              = trim(htmlentities($_POST['hiddenField']));
       else $success = false;
      if(isset($_POST['cardOwner']))         $formData['cardOwner']         = trim(htmlentities($_POST['cardOwner']));
       else $success = false;
      if(isset($_POST['cardNumber']))        $formData['cardNumber']        = trim(htmlentities($_POST['cardNumber']));
       else $success = false;
      if(isset($_POST['expireMonth']))       $formData['expireMonth']       = trim(htmlentities($_POST['expireMonth']));
       else $success = false;
      if(isset($_POST['expireYear']))        $formData['expireYear']        = trim(htmlentities($_POST['expireYear']));
       else $success = false;
      if(isset($_POST['verification']))      $formData['verification']      = trim(htmlentities($_POST['verification']));
       else $success = false;
      if(isset($_POST['submit']))            $formData['submit']            = trim(htmlentities($_POST['submit']));
       else $success = false;

      // hier werden die daten geprüft, das habe ich mir mal erspart, ist ja nicht so schwer ;)

      // ausrechnen wie viel pro projekt gespendet werden soll:
      if(isset($formData['referenceProjects']))
        $formdata['donationPerProject'] = round($formData['amount']/sizeof($formData['referenceProjects']), 2);

      // datensätze erstellen:
      foreach($formData['referenceProjects'] as $f)
      {
        $sql[] = "INSERT INTO ..."; // hier dann $formData['referenceProjects'] und $formdata['donationPerProject'] eintragen (und natürlich den rest)
      }

      print_r($sql);
    }
    else
    
{
?>
  <form action="" method="post">
    <fieldset>
      <legend>Wof&uuml;r m&ouml;chten sie spenden?</legend>
      <label>
        <input type="radio" name="reference" value="priority_a" onclick="changeStyle('projects', 'display', 'none');" /> Verwenden sie meine Spende wo sie am dringensten ben&ouml;tigt wird
      </label>
      <label>
        <input type="radio" name="reference" value="priority_b" onclick="changeStyle('projects', 'display', 'block');" /> Verwenden sie meine Spende f&uuml;r folgende Projekte:
      </label>
    </fieldset>
    <fieldset id="projects" style="display: none;">
      <legend>W&auml;hlen sie die Projekte aus</legend>
<?php

  foreach
($projects as $f)
  {
    print '<label><input type="checkbox" name="referenceProjects[]" value="project_'. $f[0] .'" /> '. $f[1] .', <em>'. $f[2] .'</em></label>';
  }

?>
    </fieldset>
    <fieldset>
      <legend>Wie viel m&ouml;chten sie spenden?</legend>
      <label>
        &euro; <input type="number" name="amount" /> (Bitte nur ganze Zahlen)
      </label>
    </fieldset>
    <fieldset>
      <legend>Ihre Daten</legend>
      <label>
        E-Mailadresse <input type="text" name="hiddenField" />
      </label>
      <label>
        Karteninhaber <input type="text" name="cardOwner" />
      </label>
      <label>
        Kartennummer <input type="text" name="cardNumber" />
      </label>
      <p>
        Ablaufdatum der Kreditkarte (Monat/Jahr)
        <select name="expireMonth">
          <option value="1">Januar</option>
          <option value="2">Februar</option>
          <option value="3">M&auml;rz</option>
          <option value="4">April</option>
          <option value="5">Mai</option>
          <option value="6">Juni</option>
          <option value="7">Juli</option>
          <option value="8">August</option>
          <option value="9">September</option>
          <option value="10">Oktober</option>
          <option value="11">November</option>
          <option value="12">Dezember</option>
        </select>
        <input type="number" name="expireYear" min="2012" max="3000" value="2012" />
      </p>
      <label>
        CVC/CVV <input type="text" name="verification" />
      </label>
    </fieldset>
    <fieldset>
      <input type="submit" value="Spenden" name="submit" />
    </fieldset>
  </form>
<?php } ?>
</body>
</html>


Ich hoffe es hilft weiter, bei weiteren Problemen melde dich doch gerne wieder ;)

Insgesamt berechne ich für diese Arbeit 0,00€! Spaß zur Seite, wir sind alle freiwillig hier angemeldet und als Lohn reicht es wenn wir helfen konnten, ein Danke ist natürlich immer gerne gesehen ;)
Benutzeravatar
Basiii
HTML-Acrobat
 
Beiträge: 1139
Registriert: Dienstag 12. Januar 2010, 13:57

Re: eine Anfangsfrage PHP mit Datenbank

Beitragvon Marcus77 » Mittwoch 16. November 2011, 12:29

Hallo

Also ich sage nur WOW !

Danke, und das gebe ich einfach auf meinen Webspave ??

Also die TXT datei ist mir klar *g*

Aber die weitere ?

Eine formular.php erstellen und deinen Code reingeben !?

bei "// datensätze erstellen"

muß ich ja noch die DB verbindung einrichten: Oder `??

und wie kann ich die Datensätze auslesen bzw bearbeitet (ausser per PHPAdmin)

besten Danke !

glg Marcus

PS.: Kann ich wenigstens als DANK für dieses Forum SPENDEN ??
Marcus77
HTML-Newbie
 
Beiträge: 36
Registriert: Mittwoch 9. November 2011, 13:23

Re: eine Anfangsfrage PHP mit Datenbank

Beitragvon Basiii » Mittwoch 16. November 2011, 12:48

Ja, du erstellst einfach eine neue Datei und fügst dort den von mir geschriebenen Quelltext ein, ich habe einen Kommentar geschrieben der besagt das an der Stelle unbedingt noch die Daten geprüft werden müssen, das solltest du noch tun, wenn du das nicht hin bekommst helfe ich gerne noch weiter.

Du musst auch noch die "INSERT INTO..." Befehle noch fertig ausfüllen, auch wenn du da nicht weiter kommst helfe ich gerne noch mal.

Die Datenbankverbindung richtest du am Besten ganz am Anfang der Seite ein.

Die Datensätze auslesen, darum kümmern wir uns wenn der Rest funktioniert, ja? :)

Du kannst für das HTML-Seminar spenden, dazu gehst du auf diese Seite und klickst auf das PayPal Symbol, das Forum gehört ja zum HTML-Seminar ;)
Benutzeravatar
Basiii
HTML-Acrobat
 
Beiträge: 1139
Registriert: Dienstag 12. Januar 2010, 13:57

Re: eine Anfangsfrage PHP mit Datenbank

Beitragvon Marcus77 » Mittwoch 16. November 2011, 12:54

Danke

du meinst das:

"// hier werden die daten geprüft, das habe ich mir mal erspart, ist ja nicht so schwer ;)"

Welche Befehle muß ich da eintragen ""INSERT INTO"

und wie erstelle ich die DB Verbindung

Sorry ich bin auf dem Sektor was Neuschreiben betrifft eine 0 (Null)
Marcus77
HTML-Newbie
 
Beiträge: 36
Registriert: Mittwoch 9. November 2011, 13:23

Re: eine Anfangsfrage PHP mit Datenbank

Beitragvon Basiii » Mittwoch 16. November 2011, 12:55

Also gut, dann werde ich das mal eben machen, dauert aber kurz ;)

Hast du schon eine Datenbank? Wie sieht die aus? Wie ist die strukturiert?
Benutzeravatar
Basiii
HTML-Acrobat
 
Beiträge: 1139
Registriert: Dienstag 12. Januar 2010, 13:57

Re: eine Anfangsfrage PHP mit Datenbank

Beitragvon Marcus77 » Mittwoch 16. November 2011, 13:09

Hallo

danke

eien DB würde ich in meinem Admin erstellen und dann dem System zuordnen

oder per eigenem präfix

zb: sp_

THX4help !!!!!!

PS: kann ich das ganze auch 2 Sprachig verwenden ?? Normal schon, ich brauche ja nur das ganze ein 2tes mal in eine formular_sprache2.php geben und nur die Texte entsprechend ändern, das Formular bleibt ja gleich !

Nur ev eine eigene Projekte-Sprache2 TXT schreiben und das in der PHP Datei ändern
Marcus77
HTML-Newbie
 
Beiträge: 36
Registriert: Mittwoch 9. November 2011, 13:23

Re: eine Anfangsfrage PHP mit Datenbank

Beitragvon Basiii » Mittwoch 16. November 2011, 13:10

Das mit der dualen Sprache kann ich auch mal andeuten in der Datei, ich mach mich mal ran ;)
Benutzeravatar
Basiii
HTML-Acrobat
 
Beiträge: 1139
Registriert: Dienstag 12. Januar 2010, 13:57

Re: eine Anfangsfrage PHP mit Datenbank

Beitragvon Marcus77 » Mittwoch 16. November 2011, 13:11

Erneut besten Dank !
Marcus77
HTML-Newbie
 
Beiträge: 36
Registriert: Mittwoch 9. November 2011, 13:23

Re: eine Anfangsfrage PHP mit Datenbank

Beitragvon Basiii » Mittwoch 16. November 2011, 13:35

Zuerst habe ich mich mal um die Sprachen gekümmert, dazu habe ich eine lang.ini Datei erstellt in der sämtliche Texte und die gewünschte Sprache definiert werden:

Code: Alles auswählen
; Hier einfach "en" für Englisch, oder "de" für Deutsch, du kannst auch z.B. "jp" für Japanisch einfügen,
; dann musst du ganz unten aber alle Elemente noch mal aufführen!
[cnfg]
lang = de

[de]
title = Spendenformular
headline = Unser Spendenformular
legendForWhat = Wofür möchten sie spenden?
referencePriority_a = Verwenden sie meine Spende wo sie am dringensten benötigt wird
referencePriority_b = Verwenden sie meine Spende für folgende Projekte:
legendChooseProjects = Wählen sie die Projekte aus
donationHowMuch = Wie viel möchten sie spenden?
currency = €
donationHowMuchInfo = (Bitte nur ganze Zahlen)

[en]
title =
headline =
legendForWhat =


Diese wird in der Hauptdatei so eingebunden: (ganz am Anfang)
Code: Alles auswählen
<?php
  
// language script
  $lang = parse_ini_file("lang.ini", true);
  $language = $lang['cnfg']['lang'];
?>


Dann musst du in der Datei alle Textstellen ersetzen, ein Beispiel:
Code: Alles auswählen
  <title><?php print $lang[$language]['title']; ?></title>


Ändern tust du nur das letzte Array Element, das was hier ['title'] heißt, heißt in der Überschrift natürlich ['headline'], so wie es in der lang.ini benannt ist (headline = Unser Spendenformular).

Ich habe mal nicht alle benannt damit du auch noch was zu tun hast ;)

Hier nun deine Datei:
Code: Alles auswählen

<?php

  
// language script
  $lang = parse_ini_file("lang.ini", true);
  $language = $lang['cnfg']['lang'];

  $dbCon = mysql_connect("127.0.0.1", "BENUTZER!", "PASSWORT!");
  $dbSel = mysql_select_db("!TABELLENNAME");

  function getProjects($file)
  {
    if(!isset($file))
      return false;

    $handler = fopen($file, 'rb');
    while($line = fgets($handler))
    {
      $a = $line;
      $return[] = explode('|', $a);
    }
    /* debug: */ # print_r($return);
    return $return;
  }

  $projects = getProjects('projects.txt');

?>
<!DOCTYPE html>
<head>
  <title><?php print $lang[$language]['title']; ?></title>

  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
  <meta name="description" content="" />
  <meta name="author" content="" />
  <meta name="keywords" content="" />

<script>

  function changeStyle(id, style, value)
  {
    if(document.getElementById)
      document.getElementById(id).setAttribute('style', style+': '+value);
    else
      document.all.id.setAttribute('style', style+': '+value);
    return true;
  }

</script>
</head>

<body>
  <h1><?php print $lang[$language]['headline'] ?></h1>
<?php
    if
(isset($_POST['submit']))
    {
      $success = true;
      if(isset($_POST['reference']))         $formData['reference']         = trim(htmlentities($_POST['reference']));
       else $success = false;
      if(isset($_POST['referenceProjects'])) $formData['referenceProjects'] = $_POST['referenceProjects'];
      if(isset($_POST['amount']))            $formData['amount']            = trim(htmlentities($_POST['amount']));
       else $success = false;
      if(isset($_POST['hiddenField']))       $formData['mail']              = trim(htmlentities($_POST['hiddenField']));
        else $success = false;
      if(isset($_POST['cardOwner']))         $formData['cardOwner']         = trim(htmlentities($_POST['cardOwner']));
       else $success = false;
      if(isset($_POST['cardNumber']))        $formData['cardNumber']        = trim(htmlentities($_POST['cardNumber']));
       else $success = false;
      if(isset($_POST['expireMonth']))       $formData['expireMonth']       = trim(htmlentities($_POST['expireMonth']));
       else $success = false;
      if(isset($_POST['expireYear']))        $formData['expireYear']        = trim(htmlentities($_POST['expireYear']));
       else $success = false;
      if(isset($_POST['verification']))      $formData['verification']      = trim(htmlentities($_POST['verification']));
       else $success = false;
      if(isset($_POST['submit']))            $formData['submit']            = trim(htmlentities($_POST['submit']));
       else $success = false;

      if
      
(
        'priority_a' != $formData['reference'] AND
        
'priority_b' != $formData['reference'] OR
        
!is_numeric($formData['amount'])       OR
        
!filter_var($formData['mail'], FILTER_VALIDATE_EMAIL) OR
        
!is_numeric($formData['cardNumber']) OR
        
!is_numeric($formData['expireMonth']) OR
        
!is_numeric($formData['expireYear']) OR
        
!is_numeric($formData['verification'])
      )
        $success = false;

      foreach($formData['referenceProjects'] as $f)
      {
        if(!preg_match('/project_[1-'. sizeof(getProjects('projects.txt')) .']/', $f))
          $success = false;
      }

      // ausrechnen wie viel pro projekt gespendet werden soll:
      if(isset($formData['referenceProjects']))
        $formdata['donationPerProject'] = round($formData['amount']/sizeof($formData['referenceProjects']), 2);

      if($success)
      {
        if('priority_b' == $formData['reference'])
        {
          // datensätze erstellen:
          foreach($formData['referenceProjects'] as $f)
          {
            $sql = mysql_query("INSERT INTO `!TABELLENNAME`
            (
              `id`, `cardNumber`, `cardOwner`, `expire`, `cardVerification`, `project`
            )
            VALUES
            (
              NULL, '"
. $formData['cardNumber'] ."', '". $formData['cardOwner'] ."', '". $formData['expireMonth'] ." / ". $formData['expireYear'] ."', '". $formData['verification'] ."', '". $f ."'
            );"
);
          }
        }
        else
        
{
          $sql = mysql_query("INSERT INTO `TABELLENNAME`
          (
            `id`, `cardNumber`, `cardOwner`, `expire`, `cardVerification`, `project`
          )
          VALUES
          (
            NULL, '"
. $formData['cardNumber'] ."', '". $formData['cardOwner'] ."', '". $formData['expireMonth'] ." / ". $formData['expireYear'] ."', '". $formData['verification'] ."', 'nach bedarf'
          );"
);
        }
        if(!$sql)
          print mysql_error(); // ausgabe wenn das Ganze nicht geklappt hat
      }
    }
    else
    
{
?>
  <form action="" method="post">
    <fieldset>
      <legend><?php print $lang[$language]['legendForWhat'] ?></legend>
      <label>
        <input type="radio" name="reference" value="priority_a" onclick="changeStyle('projects', 'display', 'none');" /> Verwenden sie meine Spende wo sie am dringensten ben&ouml;tigt wird
      </label>
      <label>
        <input type="radio" name="reference" value="priority_b" onclick="changeStyle('projects', 'display', 'block');" /> Verwenden sie meine Spende f&uuml;r folgende Projekte:
      </label>
    </fieldset>
    <fieldset id="projects" style="display: none;">
      <legend>W&auml;hlen sie die Projekte aus</legend>
<?php

  foreach
($projects as $f)
  {
    print '<label><input type="checkbox" name="referenceProjects[]" value="project_'. $f[0] .'" /> '. $f[1] .', <em>'. $f[2] .'</em></label>';
  }

?>
    </fieldset>
    <fieldset>
      <legend>Wie viel m&ouml;chten sie spenden?</legend>
      <label>
        &euro; <input type="number" name="amount" /> (Bitte nur ganze Zahlen)
      </label>
    </fieldset>
    <fieldset>
      <legend>Ihre Daten</legend>
      <label>
        E-Mailadresse <input type="text" name="hiddenField" />
      </label>
      <label>
        Karteninhaber <input type="text" name="cardOwner" />
      </label>
      <label>
        Kartennummer <input type="text" name="cardNumber" />
      </label>
      <p>
        Ablaufdatum der Kreditkarte (Monat/Jahr)
        <select name="expireMonth">
          <option value="1">Januar</option>
          <option value="2">Februar</option>
          <option value="3">M&auml;rz</option>
          <option value="4">April</option>
          <option value="5">Mai</option>
          <option value="6">Juni</option>
          <option value="7">Juli</option>
          <option value="8">August</option>
          <option value="9">September</option>
          <option value="10">Oktober</option>
          <option value="11">November</option>
          <option value="12">Dezember</option>
        </select>
        <input type="number" name="expireYear" min="2012" max="3000" value="2012" />
      </p>
      <label>
        CVC/CVV <input type="text" name="verification" />
      </label>
    </fieldset>
    <fieldset>
      <input type="submit" value="Spenden" name="submit" />
    </fieldset>
  </form>
<?php } ?>
</body>
</html>


Und die SQL Datei die du in deinem PHPMyAdmin eingeben kannst:

Code: Alles auswählen
CREATE TABLE `tabellenName` (
`id` INT( 12 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`cardNumber` INT( 32 ) NOT NULL ,
`cardOwner` VARCHAR( 128 ) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL ,
`expire` VARCHAR( 32 ) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL ,
`cardVerification` INT( 32 ) NOT NULL ,
`project` INT( 32 ) NOT NULL
) ENGINE = INNODB;
Zuletzt geändert von Basiii am Freitag 18. November 2011, 13:25, insgesamt 1-mal geändert.
Benutzeravatar
Basiii
HTML-Acrobat
 
Beiträge: 1139
Registriert: Dienstag 12. Januar 2010, 13:57

Re: eine Anfangsfrage PHP mit Datenbank

Beitragvon webmaster3000 » Mittwoch 16. November 2011, 17:06

Ich misch mich nochmal ein., denn ich hab einen Vorschlag für eine Funktion zum escapen:
Code: Alles auswählen
<?php
function escpaen
($nichtEscaped){
    if (is_array($nichtEscaped)){
        $returnValue = array();
        foreach($nichtEscaped as $index => $wert){
            $returnValue[$index] = nl2br(trim(mysql_real_escape_string(htmlentities($wert))));
        }
    }
    else {
        $returnValue = nl2br(trim(mysql_real_escape_string(htmlentities($wert))));
    }
    return $returnValue;
}
?>

Der Funktion ist es egal, ob ein ganzes Array oder ein einzelner Wert übergeben wird, sodass sowohl
escapen($_GET);
als auch
escpaen($_GET["feldname"]);
funktioniert.

Gruß,
webmaster3000
webmaster3000
HTML-Doctor
 
Beiträge: 257
Registriert: Donnerstag 29. September 2011, 16:32
Wohnort: Irgendwo in Thüringen

Re: eine Anfangsfrage PHP mit Datenbank

Beitragvon Marcus77 » Mittwoch 16. November 2011, 20:03

ok, danke mal

@Basii hast du Skype ??

Dann kann ich das soweit online geben und ev kontakt aufnehmen
Marcus77
HTML-Newbie
 
Beiträge: 36
Registriert: Mittwoch 9. November 2011, 13:23

Re: eine Anfangsfrage PHP mit Datenbank

Beitragvon Marcus77 » Sonntag 11. Dezember 2011, 13:59

ok, also ich habe das nun soweit Anhand von Basii

http://ycth.alfahosting.org/form/

nur sollen gleich die Projekte stehen
also nicht diese if: select 2 else Show projekte

und dann suche ich nun Hilfe für ein Abfrage Tool

thx4help
Marcus77
HTML-Newbie
 
Beiträge: 36
Registriert: Mittwoch 9. November 2011, 13:23

Vorherige

Beiträge bitte im neuen Forum

Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron