Empfehlungen: Erweiterte Suche

Datenbankfeld in einem Formular automatisch ausfüllen

Ausgabedaten formatieren und darstellen

Datenbankfeld in einem Formular automatisch ausfüllen

Beitragvon Luckie » Mi 10. Jun 2009, 13:11

Ich habe eine Tabelle posts:
- id,
- user_id
- titel
- text
- ...

und einer Tabelle users:
- id
- username

Und ein Eingabeformular:
Code: Alles auswählen
<h2>Neuer Eintrag</h2>
  <br>
  <?php echo $form->create('Post');?>
    <p>
      Titel des Blog Eintrages:<br>
      <?php
        // unsichtbares Feld mit User_id...?
        echo $form->input('titel',                 
          array
          (
            'div' => false,
            'style' => 'width: 800px;',
            'label' => '',
            'error'=> array
            (
              'required'=>'Bitte dieses Feld ausfüllen',
              'length'=>'Das Feld darf nicht mehr als 100 Zeichen enthalten'
            )
          )      
        );
      ?>
    </p>
 
    <p>
      Text:<br>
      <?php
        echo $form->input('inhalt',
          array
          (
            'div' => false,
            'style' => 'width: 800px; height: 400px',
            'label' => '',
            'error' => array
            (
              'required'=>'Bitte dieses Feld ausfüllen'
            )
          )
        );
      ?>
    </p>
 
    <p>
      <?php echo $form->submit('Speichern');?>
    </p>
 
  <?php echo $form->end();?>

Zu dem Eingabeformular gelangt man über ein Login:
Code: Alles auswählen
    function login()
    {
        if(!empty($this->data))
        {
            $this->User->set($this->data);
            if ($this->User->validates())
            {
              if(($user = $this->User->validateLogin($this->data['User'])))
              {
                $this->Session->write('User', $user);                                              
                $this->flash('Eingeloggt', '/admin/posts', 2);
              }
              else
              {                
                $this->flash('Zugriff verweigert', '/users/login', 2);
              }
            }          
        }
    }

Jetzt dachte ich mir, ich könnte das Feld user_id in der Tabelle posts mit Hilfe eines unsichtbaren Eingabefeldes im Formular füllen. Nur weiß ich da jetzt nicht weiter. Ich weiß nicht, wie der Code für das Feld aussehen müsste, wie ich an die UserID des eingeloggten Benutzers dran komme und wie ich die UserID, dann in die Tabelle posts schreiben kann.
Luckie
 
Beiträge: 115
Registriert: Fr 22. Mai 2009, 12:16
OS: Windows XP

Re: Datenbankfeld in einem Formular automatisch ausfüllen

Beitragvon Mathias » Mi 10. Jun 2009, 14:18

In dein Formular dieses hidden input einfügen:
Code: Alles auswählen
echo $form->hidden('user_id', array('value' => $session->read('User.id')));


Funzt?
cheers
Benutzeravatar
Mathias
 
Beiträge: 225
Registriert: Mi 4. Jun 2008, 22:30
Wohnort: Berlin
CakePHP-Version: 1.3.x
OS: OS X 10.6.x

Re: Datenbankfeld in einem Formular automatisch ausfüllen

Beitragvon Luckie » Mi 10. Jun 2009, 14:30

Leider nein. :(

SQL Error: 1048: Column 'user_id' cannot be null

Query: INSERT INTO `posts` (`user_id`, `titel`, `inhalt`, `modified`, `created`) VALUES (NULL, 'ASDFdas', ...

das sagt mir, dass die Session irgendwie nicht gültig ist oder so.
Luckie
 
Beiträge: 115
Registriert: Fr 22. Mai 2009, 12:16
OS: Windows XP

Re: Datenbankfeld in einem Formular automatisch ausfüllen

Beitragvon Mathias » Mi 10. Jun 2009, 16:18

Also du schreibst mit $this->Session->write('User', $user); die Daten deines Users in die Session. Was schreibst du alles rein? Nur den Usernamen?

Was gibt die Funktion eigentlich zurück? $this->User->validateLogin($this->data['User'])
Weil genau den Wert speicherst du nämlich in der Variable, die in der Session gespeichert wird.

Lass dir doch einfach mal die Session ausgeben.
Code: Alles auswählen
debug($session->read('User'));


SQL Error: 1048: Column 'user_id' cannot be null

Heißt eher, dass in dem abgefragten Feld kein Wert steht, um genau zu sein, ist User.id null.
Das sollte dir sagen, dass du zuvor User.id keinen Wert zugenordnet hast.
cheers
Benutzeravatar
Mathias
 
Beiträge: 225
Registriert: Mi 4. Jun 2008, 22:30
Wohnort: Berlin
CakePHP-Version: 1.3.x
OS: OS X 10.6.x


Zurück zu Views

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast