Php script zend teveel gegevens

Status
Niet open voor verdere reacties.

perryL

Gebruiker
Lid geworden
23 okt 2007
Berichten
109
Hallo helpmij-ers,

Ik zit met een klein probleem,

extra info:

Ik werk bij een bedrijf waar ik de website/webshop van onderhoud. Nu begint er een periode aan te komen waaraan de kerstpakketten gepromoot worden. Ik ben hier dus volop mee bezig om ze online te zetten en een aanvraag te maken om ze te bestellen.

Mijn probleem:
(testomgeving voor mij)
www.kreko.pw-webdesign.nl --> kerstpakketten --> ..of bestel hier uw kerstpakket

Als jullie die link even bekijken, kom je in een overzicht met de kerstpakketten, echter is dit pas een kwart van de pakketten die er officieel zijn. Dit gaat dus een aardig lange lijst worden.

Ik heb een standaard PHP-script die de gegevens verzend vanuit het form.
Nu worden alle namen van de pakketten meegestuurd in de mail. Ik had graag dat alleen de namen van de pakketten in mijn mail komen te staan waarvan het aantal is opgegeven.

Ik hoop dat jullie mij een beetje snappen, en dat iemand een oplossing weet.

bijgevoegd mijn script die ik gebruik, tevens heb ik ook een uitgebreid mailform script, maar denk dat deze niet bruikbaar ervoor is. (mijn kennis van php is minimaal)

mvg,
perry
 

Bijlagen

Hi,
ik krijg geen submit-button te zien, maar op je vraag zou ik antwoorden: veld aantal testen op leeg of nul en als dat een true oplevert dan geen bericht .= uitvoeren.

PS. kun je de FORM source ook laten zien.
 
Laatst bewerkt:
Klopt die button was ik vergeten, maar aangezien ik hetzelfde phpscriptje ook gebruikte voor kleine mailforms o.i.d weet ik dat hij alle gegevens meestuurd ook al is er niets ingevuld.

HTML:
<form id="kerstbestel" name="kerstbestel" method="post" action="kerstformulier.php">
  <table width="574" height="398" border="0">
    <tr>
      <td width="206"><font face="Verdana" size="2"><strong>Soort kerstpakket</strong></font></td>
      <td width="74"><strong>Aantal</strong></td>
      <td width="188"><strong>Afbeelding</strong></td>
      <td width="88"><strong>Inhoud</strong></td>
    </tr>
    <tr>
      <td><input name="Helder" type="text" id="Helder" value="#1 - Helder" size="25" /></td>
      <td><input name="aantal" type="text" id="aantal" size="4" /></td>
      <td><a href="Kerst 2010 jpg/helder_gr.jpg"target="top"><img src="Kerst 2010 jpg/Thumbnail/Helder.jpg" width="100" height="82" border="0" /></a></td>
      <td><a href="Kerspakketten inhoud/inhoud helder.html">&gt;&gt; Inhoud</a></td>
    </tr>
    <tr>
      <td><input name="Roadtrip" type="text" id="Roadtrip" value="#2 - Roadtrip" size="25" /></td>
      <td><input name="aantal" type="text" id="aantal" size="4" /></td>
      <td>&nbsp;</td>
      <td>&gt;&gt; Inhoud</td>
    </tr>
    <tr>
      <td><input name="Haar" type="text" id="Haar" value="#3 - Haar" size="25" /></td>
      <td><input name="aantal" type="text" id="aantal" size="4" /></td>
      <td><a href="Kerst 2010 jpg/haar_gr.jpg"target="top"><img src="Kerst 2010 jpg/Thumbnail/Haar.jpg" width="85" height="82" border="0" /></a></td>
      <td>&gt;&gt; Inhoud</td>
    </tr>
    <tr>
      <td><input name="Zijn" type="text" id="Zijn" value="#4 - Zijn" size="25" /></td>
      <td><input name="aantal" type="text" id="aantal" size="4" /></td>
      <td><a href="Kerst 2010 jpg/zijn_gr.jpg"target="top"><img src="Kerst 2010 jpg/Thumbnail/Zijn.jpg"  width="100" height="56" border="0" /></a></td>
      <td>&gt;&gt; Inhoud</td>
    </tr>
    <tr>
      <td><input name="Fixit" type="text" id="Fixit" value="#5 - Fix it" size="25" /></td>
      <td><input name="aantal" type="text" id="aantal" size="4" /></td>
      <td><a href="Kerst 2010 jpg/fixit_gr.jpg"target="top"><img src="Kerst 2010 jpg/Thumbnail/Fix it.jpg"  width="177" height="82" border="0" /></a></td>
      <td>&gt;&gt; Inhoud</td>
    </tr>
    <tr>
      <td><input name="Heerlijk genieten" type="text" id="Heerlijk genieten" value="#6 - (H)eerlijk genieten" size="25" /></td>
      <td><input name="aantal" type="text" id="aantal" size="4" /></td>
      <td><a href="Kerst 2010 jpg/heerlijkgenieten_gr.jpg"target="top"><img src="Kerst 2010 jpg/Thumbnail/(H)eerlijk genieten.jpg" alt="e" width="122" height="82" border="0" /></a></td>
      <td>&gt;&gt; Inhoud</td>
    </tr>
    <tr>
      <td><input name="Goal" type="text" id="Goal" value="#7 - Goal!" size="25" /></td>
      <td><input name="aantal" type="text" id="aantal" size="4" /></td>
      <td><a href="Kerst 2010 jpg/goal_gr.jpg"target="top"><img src="Kerst 2010 jpg/Thumbnail/Goal.jpg" alt="e" width="147" height="82" border="0" /></a></td>
      <td>&gt;&gt; Inhoud</td>
    </tr>
    <tr>
      <td><input name="Tapasymas" type="text" id="Tapasymas" value="#8 - Tapas y Más" size="25" /></td>
      <td><input name="aantal" type="text" id="aantal" size="4" /></td>
      <td><a href="Kerst 2010 jpg/tapasymas_gr.jpg"target="top"><img src="Kerst 2010 jpg/Thumbnail/Tapas y mas.jpg" alt="e" width="132" height="82" border="0" /></a></td>
      <td>&gt;&gt; Inhoud</td>
    </tr>
    <tr>
      <td><input name="Bbq giftset" type="text" id="Bbq giftset" value="#9 - BBQ giftset" size="25" /></td>
      <td><input name="aantal" type="text" id="aantal" size="4" /></td>
      <td>&nbsp;</td>
      <td>&gt;&gt; Inhoud</td>
    </tr>
    <tr>
      <td><input name="Outdoor cooking" type="text" id="Outdoor cooking" value="#10 - Outdoor cooking" size="25" /></td>
      <td><input name="aantal" type="text" id="aantal" size="4" /></td>
      <td><a href="Kerst 2010 jpg/outdoorcooking_gr.jpg"target="top"><img src="Kerst 2010 jpg/Thumbnail/Outdoor cooking.jpg" alt="e" width="106" height="82" border="0" /></a></td>
      <td>&gt;&gt; Inhoud</td>
    </tr>
    <tr>
      <td><input name="werelds" type="text" id="werelds" value="#11 - Werelds" size="25" /></td>
      <td><input name="aantal" type="text" id="aantal" size="4" /></td>
      <td><a href="Kerst 2010 jpg/werelds_gr.jpg"target="top"><img src="Kerst 2010 jpg/Thumbnail/Werelds.jpg" alt="e" width="136" height="82" border="0" /></a></td>
      <td>&gt;&gt; Inhoud</td>
    </tr>
  </table>
  <p>
    <input type="submit" name="Bestel" value="Verzenden" id="Bestel" />
  </p>
  <p>
    <label><br />
      </label>
  </p>
</form>

Dit is mijn tijdelijke HTML code omdat ik er steeds weer mee bezig ben( Aangezien ik alles moet laten controleren voordat het daadwerkelijk online komt te staan), mijn php script heeft als naam kerstformulier.php.

Zoals ik al zei, mijn kennis van php is minimaal, ik ben blij dat ik sommige script kan aanpassen en bewerken. Maar om elementen toe te voegen etc. gaat niet lukken. Ben er overigens wel veel mee bezig laatste tijd, dus wie weet komt dat binnekort.
 
Laatst bewerkt:
Oke, zou ik zeer op prijs stellen!:thumb: Ik ga zelf ook nog even op zoek naar eventuele oplossingen.
Zal het hier ook bijhouden wat mijn bevindingen zijn.
 
Ik heb er even snel naar gekeken, maar het wordt vrij lastig om het op deze manier te doen.
Ik zou het anders doen, want wat er nu gebeurt, is dat je aantal maar 1 keer in de $_POST variabel krijgt. Dit is omdat je hem meerdere keren verstuurd onder dezelfde naam, waardoor je dus vervolgens ook niet weet om welk pakket het gaat!

Wat ik zou doen is het volgende: (ik neem 2 pakketten als voorbeeld!)
HTML:
<tr>
      <td>#1 - Helder</td> <!-- Ik zou hier geen invoerveld nemen, omdat je het waarschijnlijk alleen een naam wilt geven. -->
      <td><input name="HelderAantal" type="text" id="HelderAantal" size="4" /></td><!-- ik heb de naam veranderd weet om welk veld het gaat en heb er een standaardwaarde van 0 van gemaakt -->
      <td><a href="Kerst 2010 jpg/helder_gr.jpg"target="top"><img src="Kerst 2010 jpg/Thumbnail/Helder.jpg" width="100" height="82" border="0" /></a></td>
      <td><a href="Kerspakketten inhoud/inhoud helder.html">&gt;&gt; Inhoud</a></td>
    </tr>
    <tr>
      <td>#2 - Roadtrip</td><!-- Ik zou hier geen invoerveld nemen, omdat je het waarschijnlijk alleen een naam wilt geven. -->
      <td><input name="roadtripAantal" type="text" id="RoadtripAantal" size="4" value="0" /></td><!-- ik heb de naam veranderd weet om welk veld het gaat en heb er een standaardwaarde van 0 van gemaakt -->
      <td>&nbsp;</td>
      <td>&gt;&gt; Inhoud</td>
    </tr>

Nu kan je makkelijk in PHP de aantallen uitlezen en verwerken in de mail!
Zoals hieronder bijvoorbeeld:
PHP:
<?php
if(isset($_POST['verzenden']))
{
	$kerstpakketten = array("helder","roadtrip"); // en alle andere pakketten er bijzetten
	$bericht = "website reactie formulier\n\nIngevulde velden:\n";
        for($i = 0; $i < count($kerstpakketten);$i++) { // we gaan door alle pakketten lopen die bestaan volgens de array hierboven
	    // $_POST[$kerstpakketten[$i]."aantal"] zorgt ervoor dat we $_POST["HelderAantal"] kunnen uitlezen.
	    // $kerstpakketten[$i] staat voor een van de waardes die in $kerstpakketten zit. Als je een array maakt zoals hierboven, wordt hij automatisch genummerd van 0 t/m de laatste waarde van de array
	    if($_POST[$kerstpakketten[$i]."aantal"] != 0 || !empty($_POST[$kerstpakketten[$i]."aantal"])) {
            // Hier kijken we of een pakket iets anders heeft dan 0 en niet leeg is. Als hij leeg is of 0 wordt hij niet in het bericht weergegeven.
	    // Je zou eventueel ook nog kunnen testen of het ingevoerde getal wel echt een getal is, dan moet je  is_numeric($_POST[$kerstpakketten[$i]."aantal"]) gebruiken.
	        $bericht .= $kerstpakketten." ".$_POST[$kerstpakketten[$i]."aantal"];
	    }
	}
	
	$result = mail("uw@emailadres.nl","Website reactie formulier", $bericht, "From: Naam bericht");
	if ($result) {
	  echo '<meta http-equiv="refresh" content="0;url=http://www.mijnwebsite.nl">';
	} else {
	  echo "Contact formulier verzenden is mislukt!";
	}
}
else{
	?>
	
	<?
}
?>

Hopelijk kan je hiermee behoorlijk uit de voeten komen!
Heb de code niet getest, dus ik hoop dat het in 1 keer werkt!

Succes ermee,

T-J
 
Dit werkt maar beperkt:

if(isset($_POST['verzenden']))

Beter is:

if($_SERVER['REQUEST_METHOD'] == 'POST'){ }
 
Hi,
ben een beetje laat, maar antwoord van T-J moet het kunnen doen. (Lijkt op de uitgewerkte versie van mijn eerste antwoord, )

Ik vraag me wel af waarom je de naam van het kerstpakket in een input type="text" houdt. Ik zou denk ik gekozen hebben voor een <label> omdat dan de tekst niet aan te passen is door de klant.
Dus:
HTML:
<label>Roadtrip</label>
etc
 
Maar let wel op mijn post, voor je daarmee problemen krijgt.
 
Oke bedankt voor alle nuttige informatie!
Ga er deze middag meteen mee aan de slag:thumb:

Als ik ergens tegenaan loop, dan laat ik het wel weten

top!:thumb:
 
Hi,
ben een beetje laat, maar antwoord van T-J moet het kunnen doen. (Lijkt op de uitgewerkte versie van mijn eerste antwoord, )

Ik vraag me wel af waarom je de naam van het kerstpakket in een input type="text" houdt. Ik zou denk ik gekozen hebben voor een <label> omdat dan de tekst niet aan te passen is door de klant.
Dus:
HTML:
<label>Roadtrip</label>
etc

Bedankt voor de tip, Wist niet dat bij <label> de tekst niet meer aanpasbaar is. Zo blijf je bijleren zie je maar :D
 
Oke heb net de code getest, maar krijg toch nog een error <unexpected T_ELSE on line 23>.

PHP:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){ 
{
    $kerstpakketten = array("helder","roadtrip","Haar","Zijn","Fix it","(h)eerlijk genieten","Goal!","Tapasymas","BBQ giftset","Outdoor cooking","Werelds"); // en alle andere pakketten er bijzetten
    $bericht = "website reactie formulier\n\nIngevulde velden:\n";
        for($i = 0; $i < count($kerstpakketten);$i++) { // we gaan door alle pakketten lopen die bestaan volgens de array hierboven
        // $_POST[$kerstpakketten[$i]."aantal"] zorgt ervoor dat we $_POST["HelderAantal"] kunnen uitlezen.
        // $kerstpakketten[$i] staat voor een van de waardes die in $kerstpakketten zit. Als je een array maakt zoals hierboven, wordt hij automatisch genummerd van 0 t/m de laatste waarde van de array
        if($_POST[$kerstpakketten[$i]."aantal"] != 0 || !empty($_POST[$kerstpakketten[$i]."aantal"])) {
            // Hier kijken we of een pakket iets anders heeft dan 0 en niet leeg is. Als hij leeg is of 0 wordt hij niet in het bericht weergegeven.
        // Je zou eventueel ook nog kunnen testen of het ingevoerde getal wel echt een getal is, dan moet je  is_numeric($_POST[$kerstpakketten[$i]."aantal"]) gebruiken.
            $bericht .= $kerstpakketten." ".$_POST[$kerstpakketten[$i]."aantal"];
        }
    }
    
    $result = mail("mijnemail@hotmail.com","Website reactie formulier", $bericht, "From: mijnnaam ");
    if ($result) {
      echo '<meta http-equiv="refresh" content="0;url=http://www.kreko.pw-webdesign.nl/bedankt.html">';
    } else {
      echo "Contact formulier verzenden is mislukt!";
    }
}
else{
    ?>
    
    <?
}
?>

Zoals je kunt zien heb ik if(isset($_POST['verzenden']))
veranderd in if($_SERVER['REQUEST_METHOD'] == 'POST'){
ook heb ik de html code aangepast naar behoren. Ik hoop dat iemand weet waar ergens de fout zit

HTML:
<td>#1 - Helder</td>
      <td><input name="HelderAantal" type="text" id="HelderAantal" size="4" /></td>
      <td><a href="Kerst 2010 jpg/helder_gr.jpg"target="top"><img src="Kerst 2010 jpg/Thumbnail/Helder.jpg" width="100" height="82" border="0" /></a></td>
      <td><a href="Kerspakketten inhoud/inhoud helder.html">&gt;&gt; Inhoud</a></td>
    </tr>
    <tr>
      <td>#2 - Roadtrip</td>
      <td><input name="RoadtripAantal" type="text" id="RoadtripAantal" size="4" /></td>
      <td>&nbsp;</td>
      <td>&gt;&gt; Inhoud</td>
    </tr>
    <tr>
      <td>#3 - Haar</td>
      <td><input name="HaarAantal" type="text" id="HaarAantal" size="4" /></td>
      <td><a href="Kerst 2010 jpg/haar_gr.jpg"target="top"><img src="Kerst 2010 jpg/Thumbnail/Haar.jpg" width="85" height="82" border="0" /></a></td>
      <td>&gt;&gt; Inhoud</td>
    </tr>
    <tr>

Dit is een stukje van me html code. Loopt door tot 20 pakketten maar heb even de eerst 3 gepakt i.v.m de grootte
 
Laatst bewerkt:
if($_SERVER['REQUEST_METHOD'] == 'POST'){ }

->

if($_SERVER['REQUEST_METHOD'] == 'POST'){
 
Heb geen zin om je hele code door te gaan lopen, maar ga gewoon accolades tellen. Voor elke openaccolade moet er een gesloten worden. Aantal moet exact gelijk zijn. Het is ook beter om met tabs te werken, dan zie je het heel snel:

PHP:
if(x = y){

	for(){
	
		while(){
		
		
		}
	}
	
}else{

	foreach(){
	
		if(y = a){
			
			of dat
		
		}else{
	
			doe dit
		
		}
	}
}

Zie hier als er een ontbreekt:

PHP:
if(x = y){

	for(){
	
		while(){
		
		
		}
	}
	
}else{

	foreach(){
	
		if(y = a){
			
			of dat
		
		}else{
	
			doe dit
		
		}
	
}
 
Goeie code editors geven ook netjes aan waar ze het niet meer snappen, en geven ook aan waar elke accolade gesloten wordt als je er met je cursor op gaat staan. Dat soort dingen helpen vaak een heleboel.
 
oke bedankt voor de informatie, zal het vanmiddag eens doorlopen met PHPcoder o.i.d
:thumb:
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan