Kann jemand mir helfen PHP-MySQL Funktion?

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

  • Kann jemand mir helfen PHP-MySQL Funktion?

    Hi all,

    Ich habe folgendes Problem und bisher noch nicht rausgekriegt.

    MySQL Table:

    CREATE TABLE karlo_users_form (
    user_form_id int(2) NOT NULL auto_increment,
    user_form_db_field_name varchar(50) NOT NULL default '',
    user_form_appear_name varchar(100) NOT NULL default '',
    user_form_appear_field_name varchar(50) NOT NULL default '',
    user_form_extra int(1) NOT NULL default 0,
    field_type_id int(2) NOT NULL default 0,
    user_form_field_value_cid int(5) default NULL,
    user_form_field_position_pointer int(5) default 0,
    PRIMARY KEY (user_form_id)
    )TyPE =MyISAM;

    Und Funktion:

    function _RearrangeUsersProfile(){

    //GET NEW ADDED FIELDS WITH DESC ORDER
    $sql="SELECT * FROM karlo_users_form WHERE user_form_field_position_pointer != '' GROUP BY user_form_field_position_pointer DESC";

    if(DB::isError($rsTmp = $this->_oConn->query($sql))){
    catchExc($rsTmp->getMessage());
    return false;
    }

    //ASSIGN RESULTS TO AN ARRAY
    $i=0;
    while($row=$rsTmp->fetchRow(DB_FETCHMODE_ASSOC)){
    $aResults[$i] = $row;
    $i++;
    }

    $numRows = count($aResults);

    if($numRows > 0){

    //LOOP THROUGH ALL THE RESULTS NEED TO BE CHANGE

    for($i=0;$i<$numRows;$i++){
    //LOOP FROM RESULT ID TO THE ROW AFTER THE POSTION POINTER FOUND

    for($j=($aResults[$i]["user_form_id"]-1);$j > $aResults[$i]["user_form_field_position_pointer"];$j--){

    //GET THE ROW BEFORE THE ROW NEEDED TO BE CHANGED
    $sql= "SELECT * FROM karlo_users_form WHERE user_form_id = $j";

    if(DB::isError($rsTmp = $this->_oConn->query($sql))){
    catchExc($rsTmp->getMessage());
    return false;
    }//END IF

    $result= $rsTmp->fetchRow(DB_FETCHMODE_ASSOC);


    //EXCHANGE TWO NEIBOUGH ROWS

    $sql="UPDATE karlo_users_form SET user_form_db_field_name = ".$aResults[$i]['user_form_db_field_name'].",user_form_appear_name = ".$aResults[$i]['user_form_appear_name'].",user_form_appear_field_name= ".$aResults[$i]['user_form_appear_field_name'].",user_form_extra = ".$aResults[$i]['user_form_extra'].",field_type_id = ".$aResults[$i]['field_type_id'].",user_form_field_value_cid = ".$aResults[$i]['user_form_field_value_cid'].",user_form_field_position_pointer= 0 WHERE user_form_id = $j";


    if (DB::isError($rsTmp = $this->_oConn->query($sql))) {

    catchExc($rsTmp->getMessage());
    return false;
    }//END IF



    $sql="UPDATE karlo_users_form SET user_form_db_field_name = ".$result['user_form_db_field_name'].",user_form_appear_name = ".$result['user_form_appear_name'].",user_form_appear_field_name= ".$result['user_form_appear_field_name'].",user_form_extra = ".$result['user_form_extra'].",field_type_id = ".$result['field_type_id'].",user_form_field_value_cid = ".$result['user_form_field_value_cid'].",user_form_field_position_pointer= 0 WHERE user_form_id = ($j+1)";

    if (DB::isError($rsTmp = $this->_oConn->query($sql))) {

    catchExc($rsTmp->getMessage());
    return false;
    }//END IF

    }//END FOR

    }//END FOR

    return true;
    }//END IF
    }


    Es ist ziemlich lang aber der Algorithmus ist so:

    Ich nehme alle Einträge in karlo_users_form raus, die mit user_form_field_position_pointer !=0 (user_form_field_position_pointer soll id von einem Eintrag sein und kleiner id von diesem Eintrag) beendet.Nennen wir eine z.B.: $id_change. Danach tausche ich dieser Eintrag zur Position ($id_change-1).

    Ich benutzer PHP 5.1.1,MySQL 5, OS: Windows.
    Variable $_oConn ist Objekt zur Verbindung mit Datenbank und funktioniert richtig!

    Das Endergebnis ist immer true aber es gibt in Datenbank tatsächlich keine Änderungen. Ich freue mich sehr, von euch einen Rat zu warten.

    (Nach meiner Meinung, Fehler kann die Unterschiede von Feldertypen sein)

    Danke im Vorraus!
    Zuletzt geändert von dungvuhong; 22.04.2006, 08:44.

  • #2
    php-Tags des Forums benutzen!

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

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

    Kommentar


    • #3
      Hmm. Anführungszeichen um die Feldwerte rum ausprobiert?

      Code:
      UPDATE karlo_users_form SET user_form_db_field_name = 
      [COLOR=red][B]'[/B][/COLOR]".$aResults[$i]['user_form_db_field_name']."[b][color=red]'[/color][/b], ...
      EDIT:

      Öhm... umgebrochen

      Zuletzt geändert von pekka; 22.04.2006, 13:06.

      Kommentar


      • #4
        @pekka
        und Zeile umbrechen *hust*

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

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

        Kommentar


        • #5
          Original geschrieben von pekka
          Code:
          UPDATE karlo_users_form SET user_form_db_field_name = 
          [COLOR=red][B]'Hmm. Anführungszeichen um die Feldwerte rum ausprobiert? 
          
          [/COLOR]".$aResults[$i]['user_form_db_field_name']."[b][color=red]'[/color][/b], ...
          EDIT:

          Öhm... umgebrochen

          [/B]
          Danke dir, aber leider. Diesen Fall hab' ich ausprobiert und

          So ist PHP, bin ich manchmal nerv

          Kommentar


          • #6
            dann kleb ein
            PHP-Code:
            echo mysql_error(); 
            hinter

            und zur Hölle:
            Original geschrieben von ghostgambler
            php-Tags des Forums benutzen!


            alle zu dumm zum Lesen oder was?
            Zuletzt geändert von ghostgambler; 22.04.2006, 13:56.

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

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

            Kommentar


            • #7
              [QUOTE]Original geschrieben von ghostgambler
              [B]dann kleb ein
              PHP-Code:
              echo mysql_error(); 
              hinter

              Danke sehr, jetzt existieren einige Fehlermeldungen auf den Browser. Ich versuche zu lösen und meldet euch bald.

              Viele Grüße,

              Kommentar

              Lädt...
              X