Daten auslesen und einfügen

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

  • 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

    Kommentar


    • #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

      Kommentar


      • #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

        Kommentar


        • #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?

          Kommentar


          • #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

            Kommentar


            • #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

              Kommentar


              • #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

                Kommentar


                • #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

                  Kommentar


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

                    so ist meinen Fall natürlich richtig

                    Kommentar


                    • #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

                      Kommentar


                      • #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

                        Kommentar


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

                          Kommentar


                          • #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

                            Kommentar

                            Lädt...
                            X