Daten auslesen und einfügen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Daten auslesen und einfügen

    Hallo,

    mein Wunsch ist es ein Select-Feld mit Werten aus einer Tabelle zu füllen und anschließend einen Wert aus diesen Select-Feld auswählen, wobei der ausgewählte Wert in einer anderen Tabelle gespeichert werden soll. Mein Code (läuft natürlich nicht) dazu sieht wie folgt aus:

    PHP Code:
    <?php
    mysql_connect
    ("localhost","root","") or die ("Keine Verbindung moeglich");
    mysql_select_db("t3dbcontrolling") or die ("Die Datenbank existiert nicht");

    $abfrage "Select * from tabelle_projekte";
    $temp mysql_query($abfrage);

    $i 1;
    while(
    $row mysql_fetch_object($temp)){
      
    $proj[$i] = $row->proj_nr;
      
    $i++;
    }

    // Funktion print_status_options, fuer Uebergabe der Werte an das Select-Feld in HTML
    function print_status_options($wert=0$proj) {
      for (
    $i=1;$i<=count($proj);$i++) {
        
    printf("<option value=\"%d\"%s>%s</option>\n", ($i+1),($wert==($i+1) ? " selected" ""), htmlentities($proj[$i]));
      }
    }
    ?>

    <html>
    <form action method="post">
      <fileset>
        <body>
          <select name="projnr">
            <option value="0"
              <?php echo (!isset($wert) ? "selected" ""); ?>
                >--- Bitte Projektnummer w&auml;hlen ---</option>
              <?php
                print_status_options
    ($wert$proj);
              
    ?>
          </select>

          <?php
            
    // Ausgewaehlte Projektnummer soll in einer Hilfstabelle gespeichert werden
            
    $test[1] = $_POST["projnr"];
                   
      
    // einfuegen des ausgewaehlten Wertes
            
    $einfuegen "INSERT INTO hilfstabelle (hilfswert) VALUES ('$test[1]')";
            
            
    $ergebnis mysql_query($einfuegen);
          
    ?>

            <input type="submit" value="testseite &ouml;ffnen" />
        </body>
        
      </fileset>
    </form>
    </html>
    Zur Erklärung:
    im ersten Schritt wird die Verbindung zur Datenbank aufgebaut und die Werte der Tabelle "tabelle_projekte" Spalte "proj_nr" ausgelesen und im Array $proj[] gespeichert

    anschließend wird in ein Selector-Feld die ausgelesen Werte geschrieben (bis hierhin klappt alles super)

    Im letzten Schritt sollten der angeklickte Wert (aus dem Selector-Feld) in eine Hilfstabelle geschrieben werden.

    Dieser Schritt klappt nicht, jedenfalls wird nicht der ausgewählte Wert in die Tabelle geschrieben sondern nur eine Ziffer (welchen in keinen Bezug zu den eigentlichen Werten steht)

    Hat jemand zufällig eine einfach Lösung?
    Muss ich auf Ajax zurückgreifen?

    lieben Gruß

  • #2
    erst mal ein paar grundsätzliche dinge:
    PHP Code:
    $i 1;
    while(
    $row mysql_fetch_object($temp)){
      
    $proj[$i] = $row->proj_nr;
      
    $i++;

    braucht man nicht. da reicht ein:
    PHP Code:
    while($row mysql_fetch_object($temp)){
      
    $proj[] = $row->proj_nr;

    und dann
    PHP Code:
    for ($i=0;$i<=count($proj);$i++) 
    das ist auch tinnef
    PHP Code:
    $test[1] = $_POST["projnr"]; 
    da reicht ein
    PHP Code:
    $test $_POST["projnr"]; 
    und das hier ist kein valides html:
    PHP Code:
    <html>
    <
    form action method="post">
      <
    fileset>
        <
    body
    sondern
    PHP Code:
    <html>
      <
    body>
        <
    form ...>
          <
    fieldset>... 
    nun zu deinem problem. $test wird erst nach(!) dem absenden des formulars gefüllt. in deinem fall ist sie also leer. was dann in die db geschrieben wird, hängt vom datentyp der spalte ab. tipp:
    überprüfe vorher, ob das formular schon abgesendet wurde:
    PHP Code:
    if ($_POST
    oder genauer:
    PHP Code:
    if (!empty($_POST['projnr']) 
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Comment


    • #3
      PHP Code:
      function print_status_options($wert=0$proj) {
        for (
      $i=1;$i<=count($proj);$i++) {
          
      printf("<option value=\"%d\"%s>%s</option>\n";
      }

      verstehe dein print_f() nich,
      PHP Code:
      function print_status_options($wert=0$proj) {
        for (
      $i=1;$i<=count($proj);$i++) {
          echo 
      "<option value=\"".$proj[$i]['proid']."">".$proj[$i]['proname']."</option>\n";
        }

      müsste doch reichen
      "I don't want to belong to any club that would accept me as a member."

      Groucho Marx

      Comment


      • #4
        also wenn, dann richtig
        PHP Code:
        echo '<option value="'.$proj[$i]['proid'].'">'.$proj[$i]['proname'].'</option>'."\n"
        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Comment


        • #5
          Original geschrieben von Kropff
          nun zu deinem problem. $test wird erst nach(!) dem absenden des formulars gefüllt. in deinem fall ist sie also leer.
          Dies habe ich mir auch gedacht, ist nur die Frage wie man $test füllen kann. Angeblich wäre Ajax für solche Fälle eine Lösung, hab aber jetzt nicht die Zeit mich da auch noch rein zu lesen.
          Gibt es denn keine Möglichkeit das Formular zu reloaden, so dass die Variable $test gefüllt wird?

          Comment


          • #6
            leg zum beispiel auf das select-feld ein
            PHP Code:
            onchange="document.forms[0].submit();" 
            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Comment


            • #7
              Ich hab mir mal erlaubt da etwas Ordnung rein zu bringen...

              PHP Code:
              <?php
              mysql_connect
              ("localhost","root","") or die ("Keine Verbindung moeglich");
              mysql_select_db("t3dbcontrolling") or die ("Die Datenbank existiert nicht");


              if (isset(
              $_POST["submit"])) {
                  
              // Ausgewaehlte Projektnummer soll in einer Hilfstabelle gespeichert werden
                  
              $projnr min(0intval($_POST["projnr"]));

                  
              $einfuegen "INSERT INTO hilfstabelle (hilfswert) VALUES ($projnr)";
                  
              $ergebnis mysql_query($einfuegen);
                  
                  echo 
              "Eingefügt";
              }

              $abfrage "Select * from tabelle_projekte";
              $temp mysql_query($abfrage);

              while(
              $row mysql_fetch_object($temp)){
                  
              $proj[] = $row->proj_nr;
              }

              // Funktion print_status_options, fuer Uebergabe der Werte an das Select-Feld in HTML
              function print_status_options($wert$proj) {
                  for (
              $i 1$count count($proj); $i <= $count$i++) {
                      
              printf("<option value=\"%d\"%s>%s</option>\n", ($i+1),($wert==($i+1) ? " selected" ""),
              htmlentities($proj[$i]));
                  }
              }
              ?>

              <html>
              <body>
              <form method="post">
                <fileset>
                    <select name="projnr">
                      <option value="0"
                        <?php echo (!isset($wert) ? "selected" ""); ?>
                          >--- Bitte Projektnummer w&auml;hlen ---</option>
                        <?php
                        print_status_options
              ($wert$proj);
                        
              ?>
                    </select>
                      <input name="submit" type="submit" value="testseite &ouml;ffnen" />
                </fileset>
              </form>
              </body>
              </html>

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Comment


              • #8
                und was ist das?
                PHP Code:
                <fileset
                ts, ts.

                peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Comment


                • #9
                  Original geschrieben von Kropff
                  PHP Code:
                  echo '<option value="'.$proj[$i]['proid'].'">'.$proj[$i]['proname'].'</option>'."\n"
                  Ich habe meinen Code durch den oberen ersetzt, was sich jetzt bei mir ergibt ist, dass nur noch das erste Zeichen meiner Projektnummer im Selectfeld angezeigt wird (was nicht so schön ist) dafür dieser Wert in die Hilftabelle geschrieben wird, wenn ich ihn anklicke (schon mal ganz gut)

                  Zusätzlich habe ich das onchange-Event reingenommen.

                  Sollte ich es noch so hinbekommen wie ich es gerne hätte poste ich mal den Code

                  Schon mal vielen Dank für die Hilfe

                  Comment


                  • #10
                    echo '<option value="'.$proj[$i].'">'.$proj[$i].'</option>'."\n";

                    so ist meinen Fall natürlich richtig

                    Comment


                    • #11
                      PHP Code:
                      <?php
                      mysql_connect
                      ("localhost","root","") or die ("Keine Verbindung moeglich");
                      mysql_select_db("t3dbcontrolling") or die ("Die Datenbank existiert nicht");

                      $abfrage "Select * from tabelle_projekte";
                      $temp mysql_query($abfrage);

                      $i 1;
                      while(
                      $row mysql_fetch_object($temp)){
                        
                      $proj[$i] = $row->proj_nr;
                        
                      $i++;
                      }

                      // Funktion print_status_options, fuer Uebergabe der Werte an das Select-Feld in HTML
                      function print_status_options($wert=0$proj) {
                        for (
                      $i=1;$i<=count($proj);$i++) {
                               echo 
                      '<option value="'.$proj[$i].'">'.$proj[$i].'</option>'."\n";
                        }
                      }
                      ?>

                      <html>
                      <form action method="post">
                        <fileset>
                          <body>
                            <select name="projnr" onchange="document.forms[0].submit;">
                              <option value="0"
                                <?php echo (!isset($wert) ? "selected" ""); ?>
                                  >--- Bitte Projektnummer w&auml;hlen ---</option>
                                <?php
                                  print_status_options
                      ($wert$proj);
                                
                      ?>
                            </select>

                            <?php
                              
                      // Ausgewaehlte Projektnummer soll in einer Hilfstabelle gespeichert werden
                              
                      $test[1] = $_POST["projnr"];
                                     
                        
                      // einfuegen des ausgewaehlten Wertes
                              
                      $einfuegen "INSERT INTO hilfstabelle (hilfswert) VALUES ('$test[1]')";
                              
                              
                      $ergebnis mysql_query($einfuegen);
                            
                      ?>

                              <input type="submit" value="Werte in Hilfs-db schreiben" />
                          </body>
                          
                        </fileset>
                      </form>
                      </html>
                      nicht schön aber läuft

                      Comment


                      • #12
                        Das ist mit das dümmste Stück Code was ich heute gesehen habe.

                        Guck dir mal meinen Post an, versuch ihn zu verstehen und übernimm die Struktur.
                        Das aktuell ist ja furchtbar!

                        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                        Wie man Fragen richtig stellt

                        Comment


                        • #13
                          deinen Code habe ich getestet, er speichert aber keine Werte in der Hilfstabelle

                          Comment


                          • #14
                            Ja, weil da max statt min stehen sollte.
                            Aber um solche Kleinigkeiten geht es gar nicht.
                            Es geht darum, dass die Struktur des Codes von dir überhaupt keinen Sinn macht. Und die Lösung per onselect=submit ist nur eine Lösung für den schlechten Code. Theoretisch funktioniert das alles ohne JavaScript und deutlich schöner dann noch dazu.

                            Wenn du wirklich etwas lernen willst, lies meinen Code, *verstehe ihn*, bei Fragen frag halt, und dann guck noch mal kritisch auf deinen Code und überleg mal warum ich das was ich geändert habe geändert habe.
                            Ansonsten verwende halt den Murks und gut ist, mir ist es egal.

                            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                            Wie man Fragen richtig stellt

                            Comment

                            Working...
                            X