Radioboxen, Select, 2 Tabellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Radioboxen, Select, 2 Tabellen

    hab mittlerweile ne dreiviertelstunde zugracht mit der Suchfunktion, wenn ich was übersehen hab tuts mir leid.

    Folgendes Problem:

    Ich möchte Preise für Telefonieren ins Ausland von einem bestimmten Land in einer definierten Währung ausgeben.

    Beispiel:
    User A wohnt in Kroatien und möchte nach USA telefonieren.
    Diese Daten befinden sich in Tabelle [COLOR=blue]rates[/COLOR].

    Um den Preis zu berechnen muss man die Preise, von Deutschland nach Ungarn sowie von Deutschland nach USA addiert werden.
    (Callbacksystem)
    Es entsteht die Zwischensumme1 in Euro.

    Die Ausgabe des Preises soll in verschiedenen, per Radioboxen wählbaren, Währungen ausgeben werden.
    Die Kurse dazu befinden sich in [COLOR=blue]rates_kurse[/COLOR]
    Den Preis in Landeswährung erhält man dann nach Multipliaktion mit dem Kurs und der Zwischensumme1.

    OffTopic:
    Tabelle rates:
    CREATE TABLE `rates` (
    `ID` int(11) NOT NULL auto_increment,
    `name_des landes_in_deutsch` varchar(70) NOT NULL default '',
    `name_des landes_in_ungarisch` varchar(70) NOT NULL default '',
    `name_des landes_in_englisch` varchar(70) NOT NULL default '',
    `preis` varchar(50) NOT NULL default '',
    INSERT INTO `rates` (`ID`, `dest_de`, `dest_hr`, `dest_en`, `deutschl`, `ausland`, `doppel`) VALUES (162, ' Deutschland ', ' Njemačka ', ' Germany ', ' 0,123 ', ' 0,123 '),
    (187, ' Honduras ', ' Honduras ', ' Honduras ', ' 0,123 ', ' 0,123 '),
    (188, ' Honduras Mob ', ' Honduras mobilni ', ' Honduras Mobile ', ' 0,123 ', ' 0,123 '),
    (189, ' Hong Kong ', ' Hong Kong ', ' Hong Kong ', ' 0,123 ', ' 0,123 '),
    (190, ' Hong Kong Mob ', ' Hong Kong mobilni ', ' Hong Kong Mobile ', ' 0,123','0,123'),
    (191, ' Ungarn ', ' Mađarska ', ' Hungary ', ' 0,123 ', ' 0,123 '),
    (192, ' Ungarn Budapest ', ' Mađarska Budimpest ', ' Hungary Budapest ', ' 0,123 ', ' 0,123 '),
    (193, ' Ungarn Mob ', ' Mađarska mobilni ', ' Hungary Mobile ', ' 0,123 ', ' 0,123 '),
    (443, ' USA ', ' SAD ', ' United States ', ' 0,123 ', ' 0,123 ');



    Tabelle rates_kurse
    OffTopic:

    CREATE TABLE `rates_kurse` (
    `ID` int(11) NOT NULL auto_increment,
    `land` varchar(70) NOT NULL default '',
    `currency` varchar(70) NOT NULL default '',
    `short` varchar(70) NOT NULL default '',
    `kurs` varchar(50) NOT NULL default '',
    PRIMARY KEY (`ID`)
    ) TYPE=MyISAM COMMENT='Table with currency values' AUTO_INCREMENT=12 ;

    INSERT INTO `rates_kurse` (`ID`, `land`, `currency`, `short`, `kurs`) VALUES (1, ' Kroatien ', ' Kuna ', ' HRK ', ' 7,32 '),
    (2, ' Bosnien ', ' Marka ', ' BAM ', ' 1,96 '),
    (3, ' Slowenien ', ' Tolar ', ' SIT ', ' 239,57 '),
    (4, ' Yugosl. ', ' Dinar ', ' YUM ', ' 81,94 '),
    (5, ' Slowakei ', ' Krone ', ' SKK ', ' 38,92 '),
    (6, ' Ungarn ', ' Forint ', ' HUF ', ' 251,44 '),
    (7, ' Rumänien ', ' Lei ', ' ROL ', ' 36207,9 '),
    (8, ' Mazdonien ', ' Denar ', ' MKD ', ' 61,39 '),
    (9, ' Albanien ', ' Lek ', ' ALL ', ' 124,89 '),
    (10, ' Bulgarien ', ' Lev ', ' BGL ', ' 1,96 '),
    (11, ' Russland ', ' Rubel ', ' RUB ', ' 35,29 ');


    Eingabe so wie sie angedacht ist

    OffTopic:

    <form action="config_de.php" method="post">
    <p class="tekst" align="center"><span class="test">Wählen Sie bitte Ihr Ziel aus<br>
    <br></span>
    <select name="country">
    <option value="">--- Destination ---</option>

    <option value=" 1 " > Afghanistan </option>
    <option value=" 2 " > Afghanistan Mob </option>
    <option value=" 133 " > Ägypten </option>
    <option value=" 134 " > Ägypten Mob </option>
    <option value=" 3 " > Albanien </option>
    <option value=" 4 " > Albanien Mob </option>
    <option value=" 5 " > Albanien Tirana </option>
    <option value=" 6 " > Algerien </option>
    <option value=" 7 " > Algerien Mob </option>
    <option value=" 8 " > Ameri. Samoa </option>
    <option value=" 9 " > Andorra </option>
    <option value=" 10 " > Andorra Mob </option>
    </select>
    <input type="submit" value="???"></form></p>

    <td class="form_field" valign='top' align='right'>
    <p align="center">Währung</p>

    <p align="center">

    <input type="radio" name="currency" value=" " <?php formChecked( $HTTP_POST_VARS[ "currency" ], "Kuna" ); ?>Kuna <br>

    <input type="radio" name="currency" value=" Frau " <?php formChecked( $HTTP_POST_VARS[ "currency" ], " Forint " ); ?>Forint <br>

    <input type="radio" name="titel" value=" Herr" <?php formChecked( $HTTP_POST_VARS[ "currency" ], "Dinar" ); ?>Dinar<br>




    Für kleine oder auch größere Denkanstöße bin ich dankbar.
    Wissen ist Macht, nichts wissen macht nichts

  • #2
    wo genau hackt's denn?
    [ ] arbeiten mit der db generell?
    [ ] sql-anfragen im speziellen?
    [ ] verarbeiten von formularen?

    Kommentar


    • #3
      Es hakt an sich an 3 Sachen:

      - Implementierung von Radioboxen in PHP (hätte mir bisserl mehr Mühe geben sollen beim Suche, ich weiß ;-) )
      - Zwischenspeicherung der Summe
      - Multiplikation des Zwischenergebnisses mit Daten aus einer 2. Tabelle
      Wissen ist Macht, nichts wissen macht nichts

      Kommentar


      • #4
        1. http://tut.php-q.net/formulare.html#u12

        zu 2. und 3. - erkläre mal kurz und deutlich:
        a) was kann der benutzer wählen?
        b) wie werden seine eingaben bearbeitet?

        Kommentar


        • #5
          Der Besucher sollte wählen können zwischen der dem Land von aus er telefonieren möchte sowie dem Land in das er anrufen möchte. ( 2 Pulldown-Menüs, SELECT)

          Diese Auswahl muss er treffen um überhaupt einen Preis zu bekommen.

          Kurze Info: Callback setzt sich aus der Addition der Standortdestination sowie der Zieldestination zusammen.

          Zusätzlich kann er noch wählen in welcher Währung er die Ausgabe haben möchte. Falls er nichts wählt Erfolgt die Ausgabe in Euro (Zwischensumme multipilziert mit "1").

          Hier, könnte ich mir vorstellen, kommen Radioboxen in Frage.
          Wissen ist Macht, nichts wissen macht nichts

          Kommentar


          • #6
            Also willst du mit deinem Script folgendes machen(?!?):

            - holen der Daten vom Formular mit $_POST in die Variablen $von, $nach und $waehrung
            - $eurosumme = ( aus DB: ) Von-$von-nach-Deutschland-Preis + Von-D-nach-$nach-Preis
            - $preis = $eurosummme * kurs-von-euro-nach-$waehrung (auch aus DB)

            Dis umsetzung ist Grundlagen-Wissen, würd ich sagen.
            Oder wo liegt genau das Problem?
            Es ist nicht deine Schuld, dass die Welt ist, wie sie ist,
            Es wär nur deine Schuld, wenn sie so bleibt

            Kommentar


            • #7
              Na dann sitzen wohl die Grundlagen doch nicht so fest.
              Das "von"-menü
              PHP-Code:
              <form action="datei.php" method="post"> <p align="center">Wählen Sie bitte Ihr Ziel aus<br>
              <
              br>
              <
              select name="von[]">
              <
              option value="    1    "    >    Afghanistan    </option>
              <
              option value="    2    "    >    Afghanistan Mob    </option>
              .
              .

              Das "nach"-Menü
              PHP-Code:
              <form action="datei.php" method="post"> <p align="center">Wählen Sie bitte Ihr Ziel aus<br>
              <
              br>
              <
              select name="nach[]">
              <
              option value="    1    "    >    Afghanistan    </option>
              <
              option value="    2    "    >    Afghanistan Mob    </option
              PHP-Code:
                  include 'inc/config.php';
                  
              // Konfigurationsdatei laden


                  
              $sql 'SELECT dest_from_de,deutschl_from,ausland_from FROM rates_from WHERE ID=$von ORDER BY ID';
                  
              $sql 'SELECT dest_to_de,deutschl_to,ausland_to FROM rates_to WHERE ID=$nach ORDER BY ID';

                  
              $result mysql_query($sql) OR die(mysql_error());

                  echo 
              "Das ist mal ein Test<br />\n";
                  while(
              $row mysql_fetch_assoc($result)) {
                      echo 
              $row['dest_from_de']." &gt; ".$row['deutschl_from']."<br />\n";
                  } 
              Wenns doch schon mal das zur Anzeige bringen könnte ...
              Wissen ist Macht, nichts wissen macht nichts

              Kommentar


              • #8
                Hi,

                erstens würde ich dir empfehlen die Daten aus $_POST zu holen, also $_POST['von'] und $_POST['nach']. Ansonsten benotigst du Register_Globals und das ist seit PHP4.2.0 defaultmäßig auf false.

                Und zweitesn übergibst du einen Array
                PHP-Code:
                <select name="nach[]"
                Da du eine Listbox und keine Checkbox verwendest brauchst du keinen Array, weil du ja im Ergebniss deines FORMs nur einen Wert für "von" und "nach" übergibst.

                Ausserdem führst du nur die zweite query aus.

                PHP-Code:
                $sql 'SELECT dest_from_de,deutschl_from,ausland_from FROM rates_from WHERE ID=$von ORDER BY ID';
                $sql 'SELECT dest_to_de,deutschl_to,ausland_to FROM rates_to WHERE ID=$nach ORDER BY ID';
                //$sql ist jetz "SELECT dest_to_de ..." 

                $result mysql_query($sql) OR die(mysql_error()); //du führst hier also deine zweite query aus. 
                so long, der - p

                Kommentar


                • #9
                  Eckige Klammer im Form ist entfernt.

                  1 1 Unknown column '$von' in 'where clause'
                  ist das Resultat aus:

                  PHP-Code:
                  <form action="datei.php" method="post"> <p align="center">Wählen Sie bitte Ihr Ziel aus<br>
                  <
                  br>
                  <
                  select name="von">
                  <
                  option value="    1    "    >    Afghanistan    </option>
                  option value="    133    "    >    Ägypten    </option>
                  <
                  option value="        "    >    Leerfeld    </option>
                  </
                  select>
                  <
                  br>
                  <
                  select name="nach">
                  <
                  option value="    1    "    >    Afghanistan    </option>
                  <
                  option value="    3    "    >    Albanien    </option>
                  <
                  option value="        "    >    Leerfeld    </option>
                  </
                  select
                  und
                  PHP-Code:
                  echo    $_POST['von']; // Ausgabe je nach Eingabe
                  echo    $_POST['nach'];

                  $sql 'SELECT dest_from_de,deutschl_from,ausland_from FROM rates_from WHERE ID=$von ORDER BY ID'
                  Die beiden 1en vor dieser unknown column sind die values aus dem Form.
                  Frage, wo liegt der Fehler das SQL das -- WHERE ID=$von -- nicht mag.

                  Grüße aus dem Süden
                  Wissen ist Macht, nichts wissen macht nichts

                  Kommentar


                  • #10
                    Original geschrieben von huegus
                    PHP-Code:
                    $sql 'SELECT dest_from_de,deutschl_from,ausland_from FROM rates_from WHERE ID=$von ORDER BY ID'
                    zum einen solltest du doch $_POST['von'] verwenden, und nicht mehr $von.

                    und zum anderen möchtest du http://www.php.net/manual/de/languag...string.parsing lesen.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Nur um dir kurz zu zeigen wie es aussehen muss:
                      PHP-Code:
                      $sql "SELECT dest_from_de,deutschl_from,ausland_from ".
                             
                      "FROM rates_from WHERE ID='".$_POST['von']."' ORDER BY ID"
                      $von wäre nur gültig, wenn die PHP-Option REGISTER_GLOBALS eingeschaltet wäre. Seit PHP 4.2.0 ist das, aus Sicherheitsgründen, defaultmäßig nicht der Fall. Man benutzt also den Array $_POST oder $_GET, je nach methode der Formularübertragung (<form method="post/get">).
                      Im übrigen ist es auch nicht Ratsam $_POST/$_GET Variablen direkt in eine Query zu übernehmen - aus Sicherheitsgründen sollte man sein SQL-Statement vorher preparen.
                      Siehe dazu http://www.unixwiz.net/techtips/sql-injection.html.

                      Um dir den kompletten Inhalt von $_POST anzeigen zu lassen benutze die Funktion print_r();. Zum debuggen ist das immer sehr hilfreich.

                      Bsp:
                      PHP-Code:
                      echo "<pre>".print_r($_POST)."</pre>"
                      Was ich auch nicht verstehe ist, warum du bei deinem Values in <select> Leerzeichen hasst. Meiner Meinung nach sollte es so aussehen:
                      PHP-Code:
                      <select name="von">
                          <
                      option value="1">Afghanistan</option>
                      </
                      select
                      Falls du die Breite deiner Select-Box beeinflussen möchtest, benutze das style Attribut width.
                      PHP-Code:
                      <select name="von" style="width: 150px;">...</select

                      Zu
                      http://www.php.net/manu....string.parsing ist noch hinzuzufügen, das es mit Variablen in Strings nur funktioniert, wenn der String mit Anführungszeichen (") eingeschlossen ist. Falls man das einfache Hochkomma (') benutzt funktioniert das nicht.

                      so long, der-p
                      Zuletzt geändert von prego; 20.05.2005, 14:53.

                      Kommentar


                      • #12
                        auch du darfst dein post erstmal leserlich editieren:
                        http://www.php-resource.de/forum/sho...threadid=50454

                        Kommentar


                        • #13
                          Sorry, hatte nicht an den Umbruch im Code gedacht - hiermit geschehen.
                          so long, der-p

                          Kommentar


                          • #14
                            PHP-Code:
                                $destvon "SELECT dest_from_de,deutschl_from,ausland_from"."FROM rates_from 
                            WHERE ID='"
                            .$_POST['von']."' ORDER BY ID';

                                
                            $result = mysql_query($destvon);

                                while(
                            $row = mysql_fetch_object($result))
                                   {
                                   echo "
                                   
                            <table border=0 width=\"60%\" class=\"table_bottom\"
                            cellspacing=\"0\" cellpadding=\"1\">
                                <tr>
                                         <td>"
                            .$row->dest_from_de."</td>
                                         <td>"
                            .$row->deutschl_from."</td>
                                         <td>"
                            .$row->ausland_from."</td>
                                </tr>
                                </table>

                               "
                            ;} 
                            bringt mir einen Parser Error in Höhe von -- echo --, also höchstwahrscheinlich eine Zeile weiter oben. Tips?

                            Diese Abfrage, fragt nur eine Tabelle ab, parallel dazu sollte aber die Tabelle -- rates_to -- ebenfalls abfragt werden, oder speichert/merkt sich php die Daten aus -- destvon -- bis zu nächsten Abfrage der Tabelle -- rates_to -- ?

                            Was ich auch nicht verstehe ist, warum du bei deinem Values in <select> Leerzeichen hasst. Meiner Meinung nach sollte es so aussehen:
                            bei knapp 500 Ländern und drei Sprachen (im Moment) hab ich die Daten (Dropdown, MySQL) in Excel bearbeitet und dann als txt wieder rauskopiert, der Zwischenraum ist also kein Leerzeichen sondern ein tab. Stört aber nicht den Besucher und beeinflusst das Design nicht, war mich also nur eine Vereinfachung ...
                            Zuletzt geändert von huegus; 21.05.2005, 18:57.
                            Wissen ist Macht, nichts wissen macht nichts

                            Kommentar


                            • #15
                              editiere deinen post und brich den code normal um, bitte.

                              und so eine kleinigkeit, wie syntaxfehler in der ersten zeile darfst du selbst korrigieren.

                              Kommentar

                              Lädt...
                              X