automatisch invoervelden bij maken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bas van gils

Bas van gils

20/06/2012 16:51:17
Quote Anchor link
Ik heb een klein vraagje m.b.t. een html formulier met php en hoop dat jullie mij wat informatie hierover kan geven.

Ik wil een pagina hebben waar ik een X aantal invoervelden heb die ik van
te voren niet weet.

Voorbeeldje.
ik kom op de pagina.
ik zie 1 invoerveld zodra ik hier op klik om deze in te voeren moet er een
tweede bij komen wanneer ik hier op klik moet er een 3de bij komen. wanneer
ik klaar ben met in voeren klik ik op submit en worden de invoerwaardes (
bijv ) naar bewerk.php verstuurd op bewerk.php worden de invoerwaarde verwerkt.
de invoerwaardes moeten dan dus ook een naam krijgen. dit kan bijvoorbeeld 1,2,4,5,6 etc. zijn.

Het kan goed zijn dat ik de ene keer maar 2 waardes heb die ik moet voeren
maar de andere keer 50 waardes in moet voeren.
Dit weet ik niet van te voeren.

Ik hoop dat jullie me hierbij kunnen en willen helpen.
Dit lijkt mij niet zo heel
moeilijk namelijk echter weet ik niet echt hoe ik dit aan moet pakken.
 
PHP hulp

PHP hulp

24/12/2024 03:50:16
 
Rolf -

Rolf -

20/06/2012 17:01:25
Quote Anchor link
Ten eerste moet je door middel van een javascript velden toe laten voegen. Deze geef je allemaal een naam bijvoorbeeld tekstveld.

Deze worden dan in een array gezet en kan je dan door middel van een for each uitlezen.
 
Bas van gils

Bas van gils

20/06/2012 17:08:35
Quote Anchor link
Oke, dit snap ik maar hoe word dit genoemd zodat ik zelf op internet kan zoeken hoe deze code er ongeveer uit moet komen te zien.
 
Erwin H

Erwin H

20/06/2012 17:11:27
Quote Anchor link
Of je het zo makkelijk kan vinden weet ik niet. Maar met welk stuk loop je vast? Wat lukt je wel, wat niet? Een heel script tikken ga ik niet doen, maar als je gerichte vragen heb dan kan je daar natuurlijk bij geholpen worden.
 
Rolf -

Rolf -

20/06/2012 17:12:26
 
Marco ----

Marco ----

20/06/2012 17:15:36
Quote Anchor link
Ik heb toevallig pas zoiets gemaakt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<script language="javascript">
 
var teller = 0;
function nieuwBestand(veldnaam)
{
    teller++;
    
        var parent = document.getElementById(veldnaam);
        var child = document.createElement('div');
        
        child.setAttribute('id', teller);
        child.setAttribute('name', teller);
        child.innerHTML = '<input type="button" onclick="verwijderVeld(\'' + teller + '\',\''+veldnaam+'\')" value="X" /><label for="'+veldnaam+'['+teller+']">'+veldnaam+'</label><input type="file" id="'+veldnaam+'['+teller+']" name="'+veldnaam+'['+teller+']" /><br />'
        parent.appendChild(child);    
}
 
 
/* Veld verwijderen */
function verwijderVeld(teller, veldnaam) {
var parent = document.getElementById(veldnaam);
var verwijder = document.getElementById(teller);
parent.removeChild(verwijder);
}
</script>

<html>
<div class="labels">Bestanden uploaden</div><br />        
<div id="afbeelding">
<label for="afbeelding"><a href="javascript:nieuwBestand('afbeelding')">[+]</a> Afbeelding</label>  
<input type="file" name="afbeelding[]" id="afbeelding" <?=$width?>>
</div><br />
</html>


Iets doen met de ingevoerde waarden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$i
= 0;
while (!empty($_FILES["afbeelding"]["name"][$i]))
{

  //doe je ding
$i++
}

?>


Zelf even aanpassen naar je eigen situatie. Ik heb dit gebruikt voor het uploaden van afbeeldingen.
Gewijzigd op 20/06/2012 17:16:23 door Marco ----
 
Marco ----

Marco ----

22/06/2012 11:52:29
Quote Anchor link
Is het nog gelukt met de code die ik je heb gegeven?
 
Bas van gils

Bas van gils

02/08/2012 18:52:55
Quote Anchor link
het is me nu voor een grotendeels gelukt ( na een lekkere lange tijd zitten te prutsen (A) )
Echter kom ik nu met het volgende in de knoop.

Ik heb het op de manier gedaan die marco heeft voorgedaan.
Ik heb 3 invoervelden "aantal" "omschrijving" "prijs_ps".
Nu kan ik deze weer geven met het volgende lusje.

for ( &i = 0 < count($_POST['aantal']); $i++ ) {

$prijs_totaal_ps = $_POST["aantal"][$i] * $_POST["prijs_ps"][$i];

echo ("<tr><td width='50'><center>". $_POST["aantal"][$i]."</td>" );

echo ("<td width='500'>". $_POST["omschrijving"][$i]."</td>" );

echo ("<td width='100'>&euro; ". $_POST["prijs_ps"][$i]."</td>" );

echo ("<td width='100'>&euro; $prijs_totaal_ps </td></tr>" );
}

Nu is het de bedoeling dat $prijs_totaal_ps heel de reeks bijelkaar op gaat tellen.
echter heb ik niet echt een idee hoe ik dit voor elkaar moet krijgen.
Zouden jullie mij nog 1 keer kunnen helpen ?
P.S.
Let even niet op de manier van scripten en het gebruikt van de variabelen.
Ik wil eerst hebben dat ik het werkend heb en dan word het netjes opgemaakt ;)

Toevoeging op 02/08/2012 19:03:30:

heb het gevonden, met de functie $totaal += $prijs_totaal_ps;
Gewijzigd op 02/08/2012 18:53:29 door Bas van gils
 
Eddy E

Eddy E

02/08/2012 19:58:04
Quote Anchor link
Prijs moet je niet per $_POST versturen... want dan kom ik even gratis winkelen... 1000 artikelen voor de prijs van 0.00000001 ? Lekker goedkoop. Zoiets gaat opvallen. Ook met $_POST.
Stuur het ID van het product mee en haal de prijs op uit de database.
Netjes opmaken direct doen: scheelt een hoop gezeur en gezoek later.
Daarbij vind ik het raar dat $_POST['aantal'] een array is.
Ik zou eerder een array $_POST[productid] verwachten met daarin (eventueel prijs) en aantal.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$prijs_totaal
= 0;
for ( $i = 0; $i < count($_POST['aantal']); $i++ )
    {

    // get price by this product-id
    $price_res = mysqli_query($link, "SELECT price FROM tabel WHERE id = '".$_POST['id'][$i]."';");
    $price_fetch = mysql_fetch_row($price_res);
    $price_single = $price_fetch['price'];
    
    // calculate price*aantal
    $price_multiplied = $_POST["aantal"][$i] * $price_single;
    
    // get total_sum of all prices
    $prijs_totaal += $price_multiplied;
    
    // show in table (prima hoor, 't is ook data)
    echo '    <tr>
                <td>'
. $_POST["aantal"][$i].'</td>
                <td>'
. $_POST["omschrijving"][$i].' á '.$price.'</td>
                <td>&euro; '
. $price_multiplied.'</td>
            </tr>'
;
    }

echo '    <tr>
            <td colspan="2">Totaal</td>
            <td>'
.$prijs_totaal.'</td>
        </tr>'
;

?>
 
Bas van gils

Bas van gils

02/08/2012 20:04:06
Quote Anchor link
Dankje voor de tip's
echter is dit niet voor een winkel systeem ;)
Het is om facturen te gaan genereren die ik zelf in voer.
Dus simpel weg:
bij de klant heb ik 2 stopcontacten gebruikt van 4 euro per stuk.
dus de invoer word dan

aantal "2"
omschrijving "stopcontact"
prijs_ps "4"

op de bewerkpagina krijg je dan de berekeningen.
dat hij aantal * prijs_ps = totaalprijs
met number_format(totaalprijs,2,',','.') gebruik ik de nette notatie
en bereken ik nog de btw.
en ben nu aan het prutsen hoe ik die for lus in een variable kan krijgen.
 
Eddy E

Eddy E

02/08/2012 20:43:04
Quote Anchor link
O, in dat geval is het prima via $_POST te doen.

Kijk even wat ik doe met $price_totaal. Die staat in de for-lus en wordt dus elke keer (voor elk ding dat je hebt gebruikt) verhoogt.

Maar waarom doe je dit niet in Excel dan?
 
Bas van gils

Bas van gils

02/08/2012 20:49:58
Quote Anchor link
Dat doe ik al, maar aangezien ik een klantenbestand heb waar ik meerdere bij meerdere klanten meer werkzaamheden voor uitvoer wil ik het een beetje proberen te automatiseren.

klantenbestand
reparatie bestand
facturering
voorraad

klantenbestand heb ik al
reparatie ook
facturering mee bezich
voorraad is klaar

dit al is nu allemaal gekoppelt.

voorbeeldje:
ik heb bij klaas 10 stopcontacten geplaatst.
nu staat klaas al in het bestand dus zijn klantnummer en adres gegevens heb ik dus hoef ik alleen maar aan te klikken.
dan vul ik bij aantal 10 in omschrijving busch Jeager WCD+RA SI Cremé en bij prijs p.s 4.50
ík vink, als de klant dat ook wilt, mail aan.
dan op factuur en het pdfje word gemailt naar de klant, 1 exemplaar ligt in de printer voor de boekhouding en het pdfje word op geslagen in de map factuur 2012

snappie ?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.