Login Retreive lost passwordRegister
Search

Forum Index / NL Forum / Velden vullen vanuit database

[ This topic is solved ]

  Marcel 12 February 05 / 14:42  
Hoe kan ik velden vullen vanuit mysql. En dan liefst niet onder elkaar maar naast elkaar, zie vorige topic.

Onderstaande gedeeltelijke code werkt natuurlijk niet. omdat de velden niet gevuld worden maar nu de naam krijgen van de variabele.

$result = $connector->query('SELECT * FROM tblgroups');
while ($row = $connector->fetchArray($result))
{
$form->textField("ID", $row['GroupID'], FH_INTEGER, 3, 3);
$form->textField("Group", $row['GroupName'], FH_STRING, 20, 20);
echo 'id= '.$row['GroupID'].' GroupName= '.$row['GroupName'].'<br>';
}
$form->flush();

  Teye Heimans (Founder) 12 February 05 / 14:59  
 Quote: Marcel
 
Hoe kan ik velden vullen vanuit mysql. En dan liefst niet onder elkaar maar naast elkaar, zie vorige topic.

Onderstaande gedeeltelijke code werkt natuurlijk niet. omdat de velden niet gevuld worden maar nu de naam krijgen van de variabele.

$result = $connector->query('SELECT * FROM tblgroups');
while ($row = $connector->fetchArray($result))
{
$form->textField("ID", $row['GroupID'], FH_INTEGER, 3, 3);
$form->textField("Group", $row['GroupName'], FH_STRING, 20, 20);
echo 'id= '.$row['GroupID'].' GroupName= '.$row['GroupName'].'<br>';
}
$form->flush();


Nee, Je probeerd nu de velden zelf te vullen. Dat is omslachtig en niet de bedoeling ;-)

Het klopt dat het database gedeelte nog niet geod beschreven is in de handleiding, hier ga ik nog mee bezig.

Iig, Je kunt er als volgt gebruik van maken:


<?php 

// include the class 
include('class.FormHandler.php'); 

// create new formhandler object 
$form =& new FormHandler(); 

// set the database info and connect! 
$form->DBInfo"localhost""myDB""myTable" ); 
$form->DBConnect"username""password" );  

// ... Hier je velden en de rest.....

?>



Als je dan vervolgens een record wilt wijzigen, hoef je alleen maar het id mee te geven in de URL:


// wijzig record met id 1
index.php?id=1


NOTE: Dit werkt alleen als je een primaire sleutel in je tabel hebt staan (een id-veld, heb je meestal wel :D )

Succes!

--Teye

  Mels van Kooten 12 February 05 / 16:27  
Changed at 12 February 05 / 16:28
Ik denk dat je bedoelt dat je een waarde in een veld wilt hebben.
Kijk eens naar SetValue ;)

  Marcel 13 February 05 / 13:42  
Ja Mels, ik wilde inderdaad een waarde in mijn veld
hebben.

Maar eigelijk... wil ik een tabel ophalen vanuit mysql
deze gegevens weergeven in een formulier en deze gegevens kunnen aanpassen/wijzigen op basis van hun groupID.

Met de huidige DBInfo en DBConnect voorbeelden kan ik alleen gegevens opslaan en niet ophalen,wijzigen, verwijderen.

Ik heb bijvoorbeeld een tabel
tblgroups met 2 velden,
GroupID(int) GroupName(varchar(15) GroupActive(tniyint)

Hier heb ik 10 waarden instaan
Deze waarden wil ik weergegeven in kolomvorm.
De groupActive een checkbox met waarde 0 of 1.

en... kunnen wijzigen in de velden zelf met erachter een opslaan/wijzig knop ofzo, of onderaan het formulier een knop om alle gewijzigde gegevens in 1 keer op te slaan.

Ik hoop dat jullie me kunnen helpen, alvast bedankt voor het goede werk. groet marcel.

  Teye Heimans (Founder) 15 February 05 / 19:22  
Changed at 15 February 05 / 19:24
[edit] Note: code is niet getest![/edit]

 Quote: Marcel
 

Met de huidige DBInfo en DBConnect voorbeelden kan ik alleen gegevens opslaan en niet ophalen,wijzigen, verwijderen.


Je kunt met FormHandler zeker wel records wijzigen...

index.php?id=<record-id>


Ik snap je "probleem". Je wilt eigenlijk meerdere records tegelijk wijzigen. Dit kun je doen, alleen moet je dan zelf de gegevens in het formulier zetten en bij opslaan zelf de database vullen.

Je zult sowieso een keuze moeten maken in alles opslaan in 1 keer of elk veld appart opslaan. Het zou wel kunnen zoals jij het wilt, alleen is erg ingewikkeld om te maken.

Voorbeeld:

<?php

// include FH
include("FH3/class.FormHandler.php");

// haal de records op
$sql mysql_query("SELECT * FROM tblgroups"
  or die(
mysql_error());

// wel records gevonden?
if(mysql_num_rows($sql) == 0) {
    echo 
"Geen records gevonden!";
} else {
    
// maak new formhandler object
    
$form =& new FromHandler();

    
// zet een masker voor 2 velden per rij
    
$form->setMask
      
"  <tr>\n"
      
"    <td>%title%</td>\n"
      
"    <td>%seperator%</td>\n"
      
"    <td>%field% %error%</td>\n"
      
"    <td>  </td>\n"
      
"    <td>%title%</td>\n"
      
"    <td>%seperator%</td>\n"
      
"    <td>%field% %error%</td>\n"
      
"  </tr>\n"
      
true # repeat this mask! 
    
); 

    
// genereer de velden 
    
$data = array();
    while(
$row mysql_fetch_assoc($sql)) {
        
$id $row["GroupID"];
        
// sla de gegevens op voor later
        
$data[$id] = array(
          
$row["GroupName"], 
          
$row["GroupActive"]
        );
        
        
$form->setValue("name_".$id$row["GroupName"]);
        
$form->setValue("active_".$id$row["GroupActive"]); 
        
$form->textField("GroupName""name_".$idFH_STRING2050);
        
$form->checkBox("GroupActive""active_".$id1);
    }

    
// button om het formulier te submitten
    
$form->submitButton("Opslaan");

    
// zet de data handler
    
$form->onCorrect('doSave');

   
// geef het formulier weer..
   
$form->flush();
}

// de data handler
function doSave$posted ) {
    global 
$data;

    
// loop alle originele waarden langs
    
foreach( $data as $id => $inf ) {
        list(
$name$active) = $inf;

        
// kijk of de waarden veranderd zijn
        
if($name != $posted['name_'.$id] ||
           
$active != $posted['active_'.$id])
        {
            
// update record
            
$sql mysql_query("
              UPDATE tblgroups SET
              GroupName   = '"
.$posted['name_'.$id]."',
              GroupActive = '"
.$posted['active_'.$id."'
              WHERE GroupID = '"
.$id."'"
            
) or die(mysql_error());
        }                        
    }
    
    
// note voor de gebruiker
    
echo "De gegevens zijn opgeslagen!!";
}

?>



Succes,

--Teye

  Marcel 16 February 05 / 13:00  
Teye Bedankt!

Nu ben ik weer een stuk verder!!

na wijzigen van
GroepActief = '".$posted['active_'.$id."'
in
GroepActief = '".$posted['active_'.$id]."'

en
$form =& new FromHandler();
$form =& new FormHandler();

En toevoegen bovenaan
// create new formhandler object
$form =& new FormHandler();
$form->DBInfo( "localhost", "dbcms", "tblgroepen" );
$form->DBConnect( "naam", "wachtwoord" );

Bedankt keep op the goed work!

  Marcel 16 February 05 / 13:17  
Changed at 16 February 05 / 13:20
aleen...
$form->submitButton("Opslaan");
moet ik boven $setmask weergeven, anders laat hij hem niet zien. Hoe krijg ik die onder mijn formulier?

  Teye Heimans (Founder) 16 February 05 / 13:24  
Changed at 16 February 05 / 13:25
 Quote: Marcel
 
aleen...
$form->submitButton("Opslaan");
moet ik boven $setmask weergeven, anders laat hij hem niet zien. Hoe krijg ik die onder mijn formulier?


Je moet ff de huidige versie downloaden. Er zat een bug in setmask; de niet compleet gevulde masks geeft ie niet weer.

  Top


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