Kann jemand mir helfen PHP-MySQL Funktion?

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

  • 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!
    Last edited by dungvuhong; 22-04-2006, 07: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

    Comment


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

      Last edited by pekka; 22-04-2006, 12:06.

      Comment


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

        Comment


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

          Comment


          • #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?
            Last edited by ghostgambler; 22-04-2006, 12:56.

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

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

            Comment


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

              Comment

              Working...
              X