Login Retreive lost passwordRegister
Search

Forum Index / NL Forum / selectField vullen uit Bdb

[ This topic is solved ]

  klaasjan 28 May 09 / 22:57  
Hoi,

Ik wil twee selectfields vullen uit de DB wat prima gaat. echter ik wil geen gebruik maken van FormHandler voor de verwerking van de $_POST data omdat dit een redelijk complex geheel is met foreign keys ed.
Hoe kan ik nu de $_POST data gewoon gebruiken als had ik geen Formhandler gebruikt?

alvast bedankt

  Johan Wiegel (Admin) 29 May 09 / 08:00  
Hoi,

De $_POST array is gewoon beschikbaar.
Je kunt deze net als anders gewoon gebruiken.

  klaasjan 29 May 09 / 08:56  
Johan,

Bedankt voor de snelle reply. Als ik echter opsla gaat FormHandler zelf al met de data aan de slag. Weet je hier ook een oplossing voor?

Het gaat om de volgende code:

$form =& new dbFormHandler();

// set the database info
$cfg = array(
"path" => $dir,
"type" => "pdf PDF",
"name" => "", // <-- keep the original name
"required" => true,
"exists" => "rename"
);

// upload field

$form -> dbInfo ( "XXXXXX", "gebruikers" );
$form -> dbConnect( "XXXXXX", "XXXXXXX", "XXXXXXX" );
$form -> dbSelectField('soort bestand', 'soort_bestand','soort_bestand', array('id','naam'));
$form -> dbSelectField('gebruiker', 'gebruiker','gebruikers', array('id','email'));
$form -> textField( "bestandsnaam", "bestandsnaam", FH_STRING,20,50 );
$form -> uploadField("bestand", "bestand", $cfg);
$form -> submitButton( "Opslaan" );
$form -> oncorrect('doRun');

// laat het form zien
$form -> flush();

function doRun($data){
if($_SERVER['REQUEST_METHOD'] == 'POST'){

echo '<pre>';
print_r($_POST);
echo '</pre>';
$naam = $_FILES['bestand']['name'];

if(isset($_POST['bestandsnaam'])){// kijken of er hernoemd moet worden

$bestandsnaam = $_POST['bestandsnaam'];
$hernoemen = true;
}

if(!isset($_POST['medewerker'])){

$errors[] = '<p>Je moet een werknemer selecteren</p>';
}

if(!is_uploaded_file($_FILES['bestand']['tmp_name'])){

$errors[] = '<p>Er is geen bestand opgegeven</p>';
}

if($_FILES['bestand']['size'] > $maxsize){

$errors[] = '<p>Het bestand is te groot</p>';
}

if(!move_uploaded_file($_FILES['bestand']['tmp_name'], $dir.$naam)){

$errors[] = '<p>Het uploaden is mislukt</p>';
}

$pathinfo = pathinfo($_FILES['bestand']['name']);


// kijken of er hernoemt moet worden
$hernoemen ? $echte_naam = $bestandsnaam.'.pdf' : $echte_naam = $naam.'.pdf';

// nu gaan we de gegevens in de DB zetten
$sql = "INSERT into gebruiker_bestand (gebruiker_id, bestandsnaam)
VALUES(:medewerker,'".$echte_naam."')";
$stmt = $db ->prepare($sql);
$stmt -> bindParam(':medewerker', $_POST['medewerker'], PDO::PARAM_STR);
$result = $stmt ->execute();

$insert_id = $db->lastInsertId();


if(!$result){

$errors[] = '<p>Het invoegen in de database is mislukt</p>';
}

$sql = "UPDATE gebruiker_bestand
SET fake_naam = 'bestand".$insert_id."'
WHERE id = '".$insert_id."'";
$result = $db -> exec($sql);


if(!$result){

$errors[] = '<p>het bijwerken van de naam is mislukt</p>';
}

rename($dir.$naam ,$dir.'bestand'.$insert_id.'.pdf');

if(empty($errors)){

$content[] = '<p>Het bestand: '.$echte_naam.' is succesvol geupload.</p>';
}

} }


Alvast bedankt

  Johan Wiegel (Admin) 29 May 09 / 09:06  
de checks die ik in je code zie zijn allemaal standaard in FH aanwezig.
FH_NOT_EMPTY voor de medewerker, het uploaden wordt door een upload field geregeld.

eigenlijk zie ik niet wat je met de post array op zou moeten lossen

  klaasjan 29 May 09 / 09:18  
Ok, stel dat ik de checks door FH laat regelen dan nog moeten de SQLLETJES handmatig lijkt me....

En hoe krijg ik nu de waarden uit de $_POST array in mijn sqlletjes

  Johan Wiegel (Admin) 29 May 09 / 09:43  
heb je helemaal niet nodig, alles zit in het data array.

doe maar eens een print_r( $data ) in de dorun functie.

  klaasjan 29 May 09 / 10:45  
Hoi Johan,

Ik begin me nu dom te voelen:
- ik heb de twee selectboxen nu werkend met selectField

Het form ziet er nu zo uit:

<?php
                $form    
->    selectField('soort bestand''soort_bestandje',$soort_bestand);
                
$form    ->    selectField('gebruikers''gebruikers',$gebruiker_email);
                
$form     ->     textField"bestandsnaam""bestandsnaam"FH_STRING,20,50 );
                
$form     ->     uploadField("bestand""bestand"$cfg);
                
$form     ->     submitButton"Opslaan" );
                
                    
$form->onCorrect('doRun');
                
                
$form->flush();
                
            
                
                function 
doRun$data 
                {
                     
print_r($data);
                } 
                
?>


Als ik echter op opslaan druk krijg ik
"Error class.FormHandler.php at 2276 Error, the onCorrect function "doRun" does not exists!"

Wat doe ik nu fout??

Groeten
Klaasjan

  Johan Wiegel (Admin) 29 May 09 / 11:03  
dit is niet je hele forumlier, maar hier zit zo te zien geen fout in

  klaasjan 29 May 09 / 11:09  
dit is mijn hele form

<?php

// voor selectfield soort_bestand    
                
$sql     =    "SELECT id, naam FROM soort_bestand";
                
$stmt     =    $db -> prepare($sql);
                
$stmt    ->    execute(); 
            
                while( 
$row $stmt ->fetch(PDO::FETCH_ASSOC)) { 
                    
                      
$soort_bestand[] = $row['naam'];
                } 
                
                
// voor selectfield gebruiker
                
$sql     "SELECT DISTINCT(id), email FROM gebruikers";
                
$stmt    $db    ->prepare($sql);
                
$stmt    ->    execute();
                
                            
                while( 
$row $stmt ->fetch(PDO::FETCH_ASSOC)) {
                    
                      
$gebruiker_email[] = $row['email'];
                }

                
                
$form =& new FormHandler();
                
                
//voor het uploadgedeelte
                
$cfg = array(
                  
"path"       => $dir,  
                  
"type"       => "pdf PDF"
                  
"name"       => ""// <-- keep the original name
                  
"required"   => true,
                  
"exists"     => "rename"
                
);

                
                
$form    ->    selectField('soort bestand''soort_bestandje',$soort_bestand);
                
$form    ->    selectField('gebruikers''gebruikers',$gebruiker_email);
                
$form     ->     textField"bestandsnaam""bestandsnaam"FH_STRING,20,50 );
                
$form     ->     uploadField("bestand""bestand"$cfg);
                
$form     ->     submitButton();
                
                
$form->onCorrect('doRun');
                
                
$form->flush();
                
            
                
                function 
doRun$data 
                {
                     
print_r($data);
                } 
?>

  Johan Wiegel (Admin) 29 May 09 / 11:26  
gezien je inspringen staat dit ergens binnen een if else constructie?

haal de dorun functie eens buiten die constructie

  klaasjan 29 May 09 / 15:02  
Opgelost,

de functie mocht niet hetzelfde script staan.

Bedankt en groeten
Klaasjan

  Top


powered by PHP-GLOBE   © 2004 - 2012 FormHandler. All rights reserved.   -   Open source license