php script verkeerd?

Status
Niet open voor verdere reacties.
Beste Olav,
Je code is eigenlijk om te berekenen.

ik probeer namelijk op 3 kolommen alle cursisten te vertonen; de eerste is bij, de tweede is af, en de derde huidige.
hier gaat om de data.

gr.
 
Beste Olav,
Je code is eigenlijk om te berekenen.

ik probeer namelijk op 3 kolommen alle cursisten te vertonen; de eerste is bij, de tweede is af, en de derde huidige.
hier gaat om de data.

gr.

Ok, sorry, dan had ik je verkeerd begrepen.

Wat gebeurt er nu als iemand zich afmeld? Wordt dat in een aparte tabel gezet? Dan moet je of je kinderen weer aanmelden als ze niet meer afgemeld moeten zijn waardoor ze uit de tabel verwijderd worden, of je moet steeds handmatig die tabel legen.

Het is makkelijker om een kolom "status" maken in je tabel met cursisten (aanmeldingen ??), hierin zet je bijvoorbeeld de statussen "aan" en "af" voor aangemeld en afgemeld. Bij een aanmelding laat je die dan vullen met "aan" en bij een afmelding met "af". Die afmelding kan je dan in je afmelding.php doen met UPDATE query; UPDATE aanmeldingen SET status = 'af' WHERE naam = $naam; (die WHERE statement is natuurlijk afhankelijk hoe mensen hun kind selecteren om af te melden.

Voor het maken van je HTML tabel met de huidige cursisten doe je een SELECT * FROM aanmeldingen WHERE status = 'aan';
Hiermee selecteer je dan alleen de cursisten die aangemeld zijn en niet de cursisten die afgemeld zijn.

Groeten
Olav
 
Laatst bewerkt:
Beste Olav,

Bij afmelding ik heb inderdaad een aparte tabel.

Ik zal proberen op je manier te volgen.

Bedankt.
 
Uiteindelijk heb ik op mijn manier gemaakt, sorry.
ik vind op deze manier makelijker om te bewerken. :)
ik heb een dropdown menu gemaakt.
aanmelden
nl9.jpg

bevestigen
nl11.jpg

bij afmelden, een lid id invoeren.
nl10.jpg

bevestigen
nl12.jpg

bij cursisten er zijn 2 kolommen, aanmelden en afmelden
Bij aanmelden kan ik op wis klikken om afgemeld kind te verwijderen
nl13.jpg

en om de huidige en totaal leden te zien
nl14.jpg

op deze manier heb ik dan altijd het zelfde inschrijfnummer, dacht ik.

gr
 
Beste Olav,
Ik heb de tabel talen geupdate met prijzen
PHP:
-- 
-- Table structure for table `taallessen`
-- 

CREATE TABLE `taallessen` (
  `taalid` int(10) NOT NULL auto_increment,
  `taalnaam` varchar(50) NOT NULL default '',
  `taalprijs` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`taalid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 
;
nl15.jpg

hoe kan ik de prijs berekenen op een simpele manier?
gr
 
Hoi Redskin,
Dat ligt er een beetje aan wat je met die berekening wilt doen en waar en wanneer je die wilt tonen.
Kan je me wat meer uitleg hierover geven?
Ik kan je pas zondag antwoorden aangezien ik zaterdag de hele dag weg ben.

Groeten
Olav
 
Beste Olav,
Ik heb de tabel talen geupdate met prijzen.
--
-- Table structure for table `taallessen`
--

CREATE TABLE `taallessen` (
`taalid` int(10) NOT NULL auto_increment,
`taalnaam` varchar(50) NOT NULL default '',
`taalprijs` varchar(50) NOT NULL default '',
PRIMARY KEY (`taalid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1
;

bv er zijn 2 kinderen aangemeld, voor Engels en Frans les, totaal kost 20 + 35,
is het mogelijk zo te berekenen
PHP:
$ord = mysql_query("SELECT taalnaam, taalprijs FROM taallessen WHERE taalnaam, taalprijs"); 
$row = mysql_fetch_row($ord);
$subttl = $row[1]
ik zit nu een beetje in de waar met al de script code...
 
Hoi Redskin,
Op welk moment? Direct na het versturen van de aanmelding en het in de e-mail mee sturen of later op een willekeurig tijdstip?

Groeten
Olav
 
Hoi Olav,
Direct na het versturen van de aanmelding en het in de e-mail mee sturen is het mogelijk hier om de les en de totale kost te vermelden?

of later op een willekeurig tijdstip?
wat bedoel je hiermee?

gr
 
Hoi Olav,
Direct na het versturen van de aanmelding en het in de e-mail mee sturen is het mogelijk hier om de les en de totale kost te vermelden?


wat bedoel je hiermee?

gr
Hoi Redskin
Het hier onderstaande deel van je php code in het aanmeldscript zou het totaal bedrag moeten vermelden in de mail die wordt verstuurd.
Je ziet dat ik een extra kolom "Prijs" heb gemaakt achter de inschrijf gegevens en een extra row heb toegevoegd waarin het totaal prijs komt.
De totaal prijs wordt berekend door in de foreach loop de prijs op te halen van de les waarvoor ingeschreven wordt en die bij het totaal op te tellen.

Wat ik bedoelde met op een later tijd stip was als je bijvoorbeeld mensen een gepersonaliseerde pagina wilt laten zien of achteraf voor een soort eigen administratie alle totaal bedragen per inschrijfnummer wilt laten zien.
Maar door het bij de inschrijving af te handelen kon je gebruik maken van het reeds bestaande script :-)

Groeten
Olav

PHP:
$aan = AANMELDEN; 
$onderwerp = "Aanmelding"; 
$gegevens = "Geachte dhr/mv ". $naam .", <br><br> 
         Hierbij de bevestiging van uw aanmelding.<br> 
         We hebben de onderstaande gegevens in onze database opgenomen (zie hieronder alle gegevens die u heeft ingevuld): <br><br>
         <table> 
            <tr><td width=190>Inschrijfnummer</td><td>:</td><td>". $inschrnr ."</td></tr>
            <tr><td>Naam</td><td>:</td><td>". $naam ."</td></tr>
            <tr><td>Adres</td><td>:</td><td>". $adres ."</td></tr> 
            <tr><td>Postcode</td><td>:</td><td>". $postcode ."</td></tr> 
            <tr><td>Woonplaats</td><td>:</td><td>". $woonplaats ."</td></tr> 
            <tr><td>Telefoon nummer</td><td>:</td><td>". $telefoon ."</td></tr> 
            <tr><td>E-Mail</td><td>:</td><td>". $email ."</td></tr></table>
            <br><table><tr><td>Aangemeld</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
            <tr><td width=150>Kindernaam</td><td width=100>Geb.datum</td><td width=100>Les</td><td width=100>Reg.datum</td><td width=100>Prijs</td></tr></table> ";



$bedrag = 0;
foreach($_POST['kindernaam'] as $row => $value1) 
{ 
    $kindernaam = mysql_real_escape_string($value1); 
    $gebdatum = mysql_real_escape_string($_POST['gebdatum'][$row]); 
    $les = mysql_real_escape_string($_POST['les'][$row]); 
    $regdatum = mysql_real_escape_string($_POST['regdatum'][$row]); 

    //echo $naam.$adres.$postcode.$woonplaats.$telefoon.$email.$kindernaam.$gebdatum.$les.$regdatum. 
    $sql = "INSERT INTO aanmelding VALUES (NULL, '$inschrnr', '$naam', '$adres', '$postcode', '$woonplaats', '$telefoon', '$email', '$kindernaam', '$gebdatum', '$les', '$regdatum')"; 
    $res = mysql_query($sql); 

    $sql2 = "SELECT taalprijs FROM taallessen WHERE taalnaam = '". $_POST['les'][$row] ."'";
    $res2 = mysql_query($sql2); 
    list($prijs) = mysql_fetch_row($res2);

    $bedrag = $bedrag + $prijs;    
    
    if ($res)
    { 
         
            $ord = mysql_query("SELECT aanmldid, inschrnr FROM aanmelding ORDER BY aanmldid, inschrnr DESC LIMIT 1"); 
            $row = mysql_fetch_row($ord); 
             

        $gegevens .=
              "<table><tr><td width=150>". $kindernaam ."</td><td width=100>". $gebdatum ."</td><td width=100>". $les ."</td><td width=100>". $regdatum ."</td><td width=100>". $prijs ."</td></tr>"; 
    }

         
} 

     $gegevens .= "<tr><td>Totaal prijs</td><td colspan=3>&nbsp;</td><td width=100>". $bedrag ."</td></tr></table>"; 


    if (!empty($email))
    { $ontvanger = $email;    } 
        
    $headers = "Van: ".$naam." <".$email.">\r\n";     
        $headers .= "MIME-Version: 1.0\r\n"; 
        $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
        $headers .= "Reply-To: ".$naam." <".$email.">\r\n";  
        @mail($aan, $onderwerp, $gegevens, $headers); 
?>
 
Beste Olav,

Het werkt, maar bij het totaliseren geeft "0" .
zie hieronder bij email ontvangen
nl16.jpg


Ik denk het is een beetje lastig om te laten totaliseren,
dit kom door foreach()

gr
 
Hoi Redskin,
kan ook liggen aan je database denk ik.
'taalprijs' is een VARCHAR in jouw database
Maak daar eens een INT van en probeer het nog eens.
Als dat niet helpt, controleer dan even of deze query wat terug geeft.

PHP:
$sql2 = "SELECT taalprijs FROM taallessen WHERE taalnaam = '". $_POST['les'][$row] ."'"; 
    $res2 = mysql_query($sql2);  
    list($prijs) = mysql_fetch_row($res2);

Groeten
Olav
 
Beste Olav,

Het werkt goed.

wat betekent dit ' list() ' namelijk en wanneer gebruik ik dat ?

gr
 
Beste Olav,

Het werkt goed.

wat betekent dit ' list() ' namelijk en wanneer gebruik ik dat ?

gr

Hoi Redskin,
die list() functie gebruik je normaal als je je resultaat van een query fetched,. Normaal met mysql_fetch_row() haal je het resultaat uit elkaar en wordt deze automatisch in een array gezet als je het resultaat van de mysql_fetch_row in een variabele laadt.
Met de list functie zet hij de waarden die terug komen van de fetch gelijk in variabelen, die zijn makkelijker leesbaar dan een array

voorbeelden:
In jouw script had je ergens staan $row = mysql_fetch_row($ord);
om de waarden te gebruiken die opgehaald zijn, moet je nu row[0], row[1], row[2] etc gerbuiken.Je hebt namelijk het resultaat van de fetch in $row geladen en aangezien er meerdere waarden terug gegeven zijn, wordt $row een array.

Als je list gebruikt --> list($naam,$les,$gebdatum) = mysql_fetch_row($ord);
dan worden de waarden gelijk in de variabelen geladen. Die variabelen zeggen meer dan een array met nummers.
$naam zou dus dezelfde waarde hebben als $row[0],
$les zou dezelfde waarde hebben als $row[1] en
$gebdatum zou dezelfde waarde hebben als $row[2]

Zo houdt je een beetje overzicht in je php scripts en haal je niet zo snel waarden door elkaar. :cool:

Groeten
Olav
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan