query dynamisieren

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

  • query dynamisieren

    hallo =)
    ich bin das erste mal hier und suche etwas hilfe =)

    sorry fuer manch ueberlaenge =)

    ich hab hier etwas zusammen gestellt in kurzfassung:
    diese abfrage checkt ob daten in der tabele vorhanden sind und
    wenn keine daten enthalten sind gibt das query nomalerweise
    einen bool(false) aus, das heisst meine weiteren scripte wie zB
    ein script der automatisch aus den vorhandenen feldern in
    der tabele -> inputs erstellt falls mal die tabele mit ferldern
    erweitert werden sollte "anders gesagt"(wenn ich ein feld mehr in die tabele
    einfuege, wird automatisch im admin bereich zB ein input mehr erstellt)
    habe das problem mit dem bool(false) in der query mit "mysql_field_name()"
    umgangen, danach um die daten vernuenftig verwenden zu
    koennen noch ein "array_flip()" und
    das laeuft alles soweit gut,
    jetzt kommt leider der part wo ich nicht weiter weiss da ich leider
    nicht so erfahren bin:

    der script muss seine arrays printen damit ich mit denen was anfangen kann weil
    ausserhalb while() function bekommeich mit $rowenta nu einen wert raus also printe ich in der while() noch drin,
    hier ist ein array und alles soweit gut abe rich denke das dort durch das printen der fehler
    "You have an error in your SQL syntax;
    check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1"
    sich ergibt, kann das sein ?
    oder wie koennte ich jetzt anstatt zu printen den wert "$rowenta" von der zeile:
    PHP-Code:
    print("$rowenta");  // wurm drin ?? 
    sammt seinen arrays in die zeile:
    PHP-Code:
    $nol_b print_this(); 
    bekommen falls es keinen anderen weg gibt als meine hier zusammen gestellte methode?

    habt ihr eventuell einen besseren tipp ?

    code:
    PHP-Code:
    <?
    if ((isset($_POST["passed"])) && ($_POST["passed"] == "true"))
        {
        $hostname_localhost = "host";
        $database_localhost = "db";
        $username_localhost = "user";
        $password_localhost = "pw";
        $localhost = mysql_pconnect($hostname_localhost, $username_localhost, $password_localhost) or
    trigger_error(mysql_error(),E_USER_ERROR);
        function print_this()
                    {
                    global $hostname_localhost, $database_localhost, $username_localhost, $password_localhost, $localhost;
                    mysql_select_db($database_localhost, $localhost);
                    $query_CONEX_ADD = "SELECT * FROM test_links2";
                    $CONEX_ADD = mysql_query($query_CONEX_ADD, $localhost) or die(mysql_error());
                    $row_CONEX_ADD = mysql_fetch_assoc($CONEX_ADD);
                    $totalRows_CONEX_ADD = mysql_num_rows($CONEX_ADD);
                    $a0 = 0;
                    while ($a0 <= $a0)
                            {
                            if (@mysql_field_name($CONEX_ADD,$a0)==false)
    // checkt ob daten enthalten sind, wenn nicht (also FALSE) dann Stop
                                {
                                break;
                                }
                            $b = array(mysql_field_name($CONEX_ADD,$a0)); // field_name als array reinholen
                            $b = array_flip($b); // schlüssel und werte des arrays vertauschen
                            #var_dump($b);
                            
                            foreach($b as $k => $v) // arrays zuweisen
                                    {
                                    $v2 = $_POST[$k]; // "Sie haben Post" ^^ inputs nach $_POST checken
                                    $aa = "`$k` = '$v2'"; // Feldnamen und POSTwert zuweisen
                                    }
            
                            #var_dump(@mysql_field_name($CONEX_ADD,$a0+1));
                            if (@mysql_field_name($CONEX_ADD,$a0+1)!=false) // checkt ob mehrere Felder vorhanden sind -
                                {
                                $ab = ", "; // wenn JA dann Komma und SPACE zuweisen
                                }
                            if (@mysql_field_name($CONEX_ADD,$a0+1)!=false) // checkt ob mehrere Felder vorhanden sind -
                                {
                                $rowenta = $aa.$ab; // wenn JA und nicht letztes Feld dann Pro Feld "NAME=WERT, " erstellen -
                                }
                                else // sonst (falls letztes Feld)
                                {
                                $rowenta = $aa;  // das letze Komma automatisch NICHT mit einfügen
                                }
                            #var_dump($rowenta);
                            print("$rowenta");  // wurm drin ??
            
                            $a0++;                    
                            }
                        }
                        // zu Test Zwecken ab hier komentieren
                        $nol_a = print("INSERT INTO `test_links2` SET ");
                        $nol_b = print_this();
                        $nol = $nol_a.$nol_b;
                        // bis hier
                        
                        // zum testen
                        #$nol = "INSERT INTO `test_links2` SET `feld_1` = '555', `feld_2` = '2000'";
            
                        mysql_select_db($database_localhost, $localhost);
                        $Result1 = mysql_query($nol, $localhost) or die(mysql_error());
                        #var_dump($nol);
                        #print_r($nol);
        }                
        // !inportant; Fehler nur wo genau ?? = You have an error in your SQL syntax;
        // check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1
    ?>
    <form name="form1" method="post" action="a.php">
      <input type="text" name="feld_1">
      <br>
      <br>
      <input type="text" name="feld_2">
      <br>
      <br>
      <input type="hidden" name="passed" value="true">
      <input type="submit" name="Submit" value="Senden">
      <br>
    </form>
    thx und seit net so hart mit commis ich bin nur ein maedchen ;P

    ps: der script ist ausfuehr fertig es muss nur falls jemand ihn testen will SQL login daten aendern und diesen SQL befehl ausfuehren
    PHP-Code:
    CREATE TABLE `test_links2` (
    `
    idINT11 NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `
    feld_1VARCHAR255 NULL ,
    `
    feld_2VARCHAR255 NULL
    ENGINE MYISAM 
    pps: es lesen anscheined auch viele leute hier die noch nicht so
    gut in SQL und PHP sind, also deswegen die hilfen,
    ist nur gut gemeint falls der script bei jemanden verwendung finden sollte ;P
    Zuletzt geändert von Ricola; 14.04.2007, 11:08.
    -wissen was mann weiss und wissen was mann nicht weiss, das allein ist wissen...und eine stärke der FRAUEN!!! ;P- </n(R)icola>

  • #2
    Erweitere die Zeile mal folgendermassen
    PHP-Code:
    $Result1 mysql_query($nol$localhost) or die(mysql_error().'<br />'.$nol); 
    und schau dir die Ausgabe der Query an. Falls du dann den Fehler nicht siehst dann poste den Print der Query mal hier.

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      meldung:
      PHP-Code:
      INSERT INTO `test_links2SET `id` = '', `feld_1` = '111', `feld_2` = '222'You have an error in your SQL syntax;
      check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1

      diese ist eins zu eins rauskopiert

      kann es sein das durch das printen von >>INSERT INTO `test_links2` SET `id` = '', `feld_1` = '111', `feld_2` = '222'<<
      in zeile:
      PHP-Code:
      print("$rowenta");  // wurm drin ?? 
      der fehler entsteht ?
      weil wenn ich das jetzt so mach und diese kommentier
      PHP-Code:
      // zu Test Zwecken ab hier kommentieren
      #$nol_a = print("INSERT INTO `test_links2` SET ");
      #$nol_b = print_this();
      #$nol = $nol_a.$nol_b;
      // bis hier 
      und diese un-komnentier
      PHP-Code:
      // zum testen
      $nol "INSERT INTO `test_links2` SET `feld_1` = '555', `feld_2` = '2000'"
      ist der test positiv nur leider un dynamisch =(
      Zuletzt geändert von Ricola; 11.04.2007, 14:57.
      -wissen was mann weiss und wissen was mann nicht weiss, das allein ist wissen...und eine stärke der FRAUEN!!! ;P- </n(R)icola>

      Kommentar


      • #4
        In der dynamischen Query versuchst du id zu setzen und im Test nicht. Ist das so gewollt ? Ist denn id als autoincrement Feld definiert ?

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          @Ricola: Bitte Regeln lesen, und Code umbrechen.
          Für bisherige Postings in diesem Thread bitte über Edit-Funktion nachholen.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Original geschrieben von jahlives
            In der dynamischen Query versuchst du id zu setzen und im Test nicht. Ist das so gewollt ?
            also das war leider ungewollt

            Original geschrieben von jahlives
            Ist denn id als autoincrement Feld definiert ?
            ja


            habe mal das probiert
            PHP-Code:
            $nol "INSERT INTO `test_links2` SET `id` = '', `feld_1` = '555', `feld_2` = '2000'"
            und tatsache es hat nichts eigefuegt.
            nun habe ich dazu das versucht:
            PHP-Code:
                                                                    foreach($b as $k => $v// arrays zuweisen
                                            
            {
                                            
            $v2 $_POST[$k]; // "Sie haben Post" ^^ inputs nach $_POST checken
                                            
            if ($k!='id'// added
                                                
            // added
                                                
            $aa "`$k` = '$v2'"// Feldnamen und POSTwert zuweisen
                                                
            // added
                                            

            resultat:
            PHP-Code:
            INSERT INTO `test_links2SET , `feld_1` = '111'`feld_2` = '222'You have an error...... 
            das bloede komma nach SET ist noch da und ich bekomm es nicht
            weg xD muss ich die if() anweisung anders machen bzw eine
            weitere ? ich versuch gerade was zu aendern nur es klappt leider nicht.
            -wissen was mann weiss und wissen was mann nicht weiss, das allein ist wissen...und eine stärke der FRAUEN!!! ;P- </n(R)icola>

            Kommentar


            • #7
              und tatsache es hat nichts eigefuegt
              Wundert dich nicht wirklich wenn es ein Integer mit autoincrement ist, oder doch ?
              Mehr gibt's erst wenn du
              @Ricola: Bitte Regeln lesen, und Code umbrechen.
              Für bisherige Postings in diesem Thread bitte über Edit-Funktion nachholen.
              Gemacht hast. Würde ich dir empfehlen sonst trashed dich ein Mod relativ schnell

              Gruss

              tobi
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                @wahsaga
                ok ich halt mich dran, aber ich versteh da mit dem edit nicht ganz >.<
                soll das heissen dass wenn ich code nachtraeglich verbesser anstatt
                "[PHP*][/PHP*]" >> "[EDIT*][/EDIT*]" nutzen soll? oder ist das auch nicht so
                Zuletzt geändert von Ricola; 11.04.2007, 14:58.
                -wissen was mann weiss und wissen was mann nicht weiss, das allein ist wissen...und eine stärke der FRAUEN!!! ;P- </n(R)icola>

                Kommentar


                • #9
                  OffTopic:
                  Nein, ich meinte mit Edit lediglich die Funktionalität, ein Posting im Nachhinein zu ändern - über den Button mit eben dieser Aufschrift "ändern".
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    o.O ohh wie peinlich >.<

                    ist es nicht schlimm wenn beim umbruch syntax fehler entstehen wenn
                    ich es editieren soll, weil wie soll man dann fehler beheben wenn
                    alleine der umbruch einen erzeugt.
                    sorry das ich so frage aber ich moechte gerne sicher gehen nicht dass
                    keiner antwortet weil die fehler suche dadurch erschwert wird.
                    -wissen was mann weiss und wissen was mann nicht weiss, das allein ist wissen...und eine stärke der FRAUEN!!! ;P- </n(R)icola>

                    Kommentar


                    • #11
                      Also geht es jetzt nur noch um das , nach SET ? --> str_replace('SET ,','SET',$deineQuery);

                      Gruss

                      tobi
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #12
                        ich habe erstmal das komma problem geloest
                        PHP-Code:
                        foreach($b as $k => $v// arrays zuweisen
                                    
                        {
                                    
                        $v2 $_POST[$k]; // "Sie haben Post" ^^ inputs nach $_POST checken
                                    
                        $aa "`$k` = '$v2'"// Feldnamen und POSTwert zuweisen
                                    

                        das wieder zurueck geaendert wie zum topic start

                        dafuer aber hier die if() eigesetzt
                        PHP-Code:
                                                if (@mysql_field_name($CONEX_ADD,$a0+1)!=false// checkt ob mehrere Felder vorhanden sind -
                                
                        {
                                if (
                        $k!='id'// added
                                    
                        // added
                                    
                        $rowenta $aa.$ab// wenn JA und nicht letztes Feld dann Pro Feld "NAME=WERT, " erstellen -
                                    
                        // added
                                
                        }
                                else 
                        // sonst (falls letztes Feld)
                                
                        {
                                
                        $rowenta $aa;  // das letze Komma automatisch NICHT mit einfügen
                                

                        -wissen was mann weiss und wissen was mann nicht weiss, das allein ist wissen...und eine stärke der FRAUEN!!! ;P- </n(R)icola>

                        Kommentar


                        • #13
                          ich habe erstmal das komma problem geloest
                          Dann funzt es jetzt oder wat ?

                          Gruss

                          tobi
                          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                          Kommentar


                          • #14
                            ohhh deine loesung ist auch gut =) @jahlives,

                            kann da was dran sein dass
                            PHP-Code:
                            print("$rowenta");  // wurm drin ?? 
                            durch das printen den fehler verursacht?

                            EDIT:

                            Original geschrieben von jahlives
                            Dann funzt es jetzt oder wat ?

                            Gruss

                            tobi


                            nein leider nicht +(
                            PHP-Code:
                            INSERT INTO `test_links2SET `feld_1` = '111', `feld_2` = '222'You have an error in your SQL syntax;
                            check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1

                            Zuletzt geändert von Ricola; 11.04.2007, 15:43.
                            -wissen was mann weiss und wissen was mann nicht weiss, das allein ist wissen...und eine stärke der FRAUEN!!! ;P- </n(R)icola>

                            Kommentar


                            • #15
                              PHP-Code:
                                          $rowenta $aa;  // das letze Komma automatisch NICHT mit einfügen
                                          
                              }
                                      
                              #var_dump($rowenta);
                                      
                              print("$rowenta"); // output= INSERT INTO `test_links2` SET `feld_1` = '111', `feld_2` = '222'
                              /* #1 koennte ich diesen wert von $rowenta von hier aus
                              irgendwie globalisieren, dass die ganzen array werte ausserhalb erhalten bleiben?? */
                                      
                                      
                              $a0++;                    
                                      }
                                  }
                                  print(
                              "$rowenta"); // output= INSERT INTO `test_links2` SET `feld_2` = '222'
                              /* #2  weil ab hier ist $rowenta nur mit den letzten werten der array
                              vorhanden die davoer sind weg, wenn es gehen koennte von #1  nach #2
                              mit den ganzen arrays zu uebertragen dan waere das prob maybe geloest
                               */
                                  // zu Test Zwecken ab hier komentieren
                                  
                              $nol_a = print("INSERT INTO `test_links2` SET ");
                                  
                              $nol_b print_this();
                                  
                              $nol $nol_a.$nol_b;
                                  
                              // bis hier 
                              -wissen was mann weiss und wissen was mann nicht weiss, das allein ist wissen...und eine stärke der FRAUEN!!! ;P- </n(R)icola>

                              Kommentar

                              Lädt...
                              X