Samenvoegen uit database en verwerken in variabele in verzendformulier.
Door
Piet Marisael
op 26-09-2010 13:45
gewijzigd op 26-09-2010 13:47
1.722 views
Ik zou graag velden uit een database samenvoegen en gaan verwerken naar een variabele om dat te gaan gebruiken in een verzendformulier.
De gegevens die al klaar zijn:
het verzendformulier met de variabele:
$tomail (emailadres van de ontvanger)
$tonaam ( naam van de ontvanger)
$from (emailadres van de verzender)
$fromnaam (naam van de verzender)
Dat gaat boven mijn logica om het zo maar even te noemen.
Staat jou code dan op de verkeerde plaats?
Wat en hoe moet ik waar veranderen?
Hoe kan het dat headers al verzonden worden als er nog niet op verzenden is geklikt?
Als ik de <select><option> methode gebruik heb ik daar dan toch ook geen last van.
Ondertussen ga ik stug verder met zoeken naar voorbeelden waar ik kan zien hoe het eventueel zou moeten kunnen.
Als daar ook maar geen fouten is staan.
Of zal ik eerst maar even een nieuwe database-tabel maken waar de namen juist in staan met daarachter enkel de e-mailadressen?
Dan hebben we maar met twee kolommen te maken, zou dus gemakkelijker moeten zijn(?)
Met die uitleg van pfz.nl kom ik ook niet verder.
nergens een spatie teveel waar die niet moet staan.
Nergens een BOM te vinden.
ondertussen heb ik een eenvoudigere tabel in de database gemaakt.
Daar staan alleen nog maar de kolommen [emailadres] en [naam] in, wat de boel eenvoudiger zou moeten maken.
Ik heb het script van die link gewijzigd zodat de eerste fouten er uit zijn. Ik heb uiteraard niet de database en het include-bestand hier. Dus kijk eens wat dit doet.
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// Om sessions te kunnen gebruiken
session_start();
// Het array met de loginnamen met bijbehorende passwords
$secrets = array("naam1" => "wachtwoord1", "naam2" => "wachtwoord2");
// De naam voor de sessie met de waarde voor de sessie
$sessionname = "Secure";
$sessiontekst = md5(date("d-m-Y"));
// Checken of er iets is gepost vanuit een formulier
if($_SERVER['REQUEST_METHOD'] == "POST")
{
// Checken of het inloggen of uitloggen is
$keuze = (isset($_POST['uitloggen'])) ? "uitloggen" : "inloggen";
if($keuze == "inloggen")
{
// Keuze is inloggen
$naam = (isset($_POST['naam'])) ? trim($_POST['naam']) : "";
$paswoord = (isset($_POST['paswoord'])) ? trim($_POST['paswoord']) : "";
// Naam en paswoord checken of het in het array staat
$bool = false;
foreach($secrets as $key => $value)
{
// De $bool wordt true zodra de naam en het paswoord gevonden zijn
$bool = ($bool OR ($key == $naam AND $value == $paswoord));
}
if($bool)
{
// Gebuiker is gevonden dus session aanmaken en naam onthouden
$_SESSION[$sessionname] = $sessiontekst;
$_SESSION['naam'] = $naam;
}
else
{
// Gebruiker is niet gevonden
exit("Foute inloggegevens");
}
}
else
{
// Keuze is uitloggen dus session weggooien
session_destroy();
exit("Je bent nu uitgelogd");
}
}
// Checken of de session (niet) bestaat of (niet) de juiste waarde heeft
if(!isset($_SESSION[$sessionname]) OR $_SESSION[$sessionname] != $sessiontekst)
{
// Session is niet in orde dus een formulier
echo '<form action="" method="POST">
Inlognaam: <input type="text" name="naam"><br/>
Password: <input type="password" name="paswoord"><br/>
<input name="inloggen" type="submit" value="Login (alleen toegankelijk redactie Lief en Leed)">
</form>';
exit();
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<meta name="title" content="www.naamwebsite.nl">
<head>
<SCRIPT LANGUAGE="JavaScript">
function checkEmail(myForm)
{
if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(myForm.to.value))
{
return (true)
}
alert("Invalid E-mail Address! Please re-enter.")
return (false)
}
// End -->
</script>
<link rel="stylesheet" type="text/css" href="css/style.css" />
<!--[if gte IE 5.5]>
<style type="text/css">
#motioncontainer
{
width:expression(Math.min(this.offsetWidth, maxwidth)+'px');
}
</style>
<![endif]-->
<!-- End Conditional Style -->
<script type="text/javascript" src="motiongallery.js">
</script>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#000000" vlink="#669966" alink="#996666">
<font face=" verdana, tahoma" font size="2">
<?php
include('config.php');
?>
<title><?php echo $title; ?></title>
<center>
<h5><?php echo $title; ?></h5>
</center>
<div id="motioncontainer" style="position:relative;overflow:hidden;">
<div id="motiongallery" style="position:absolute;left:0;top:0;white-space: nowrap;">
<form name="myform" action="maile.php" method="POST">
<nobr id="trueContainer">
<img src="<?php echo $img11; ?>" border=1></a><input type="radio" select name="img" option value="<?php echo $img11; ?>">
<img src="<?php echo $img12; ?>" border=1></a><input type="radio" select name="img" option value="<?php echo $img12; ?>">
<img src="<?php echo $img13; ?>" border=1></a><input type="radio" select name="img" option value="<?php echo $img13; ?>">
<img src="<?php echo $img14; ?>" border=1></a><input type="radio" select name="img" option value="<?php echo $img14; ?>">
<img src="<?php echo $img15; ?>" border=1></a><input type="radio" select name="img" option value="<?php echo $img15; ?>">
<img src="<?php echo $img16; ?>" border=1></a><input type="radio" select name="img" option value="<?php echo $img16; ?>">
<img src="<?php echo $img17; ?>" border=1></a><input type="radio" select name="img" option value="<?php echo $img17; ?>">
<img src="<?php echo $img18; ?>" border=1></a><input type="radio" select name="img" option value="<?php echo $img18; ?>">
<img src="<?php echo $img19; ?>" border=1></a><input type="radio" select name="img" option value="<?php echo $img19; ?>">
<img src="<?php echo $img20; ?>" border=1></a><input type="radio" select name="img" option value="<?php echo $img20; ?>">
<img src="<?php echo $img21; ?>" border=1></a><input type="radio" select name="img" option value="<?php echo $img21; ?>">
<img src="<?php echo $img22; ?>" border=1></a><input type="radio" select name="img" option value="<?php echo $img22; ?>">
<img src="<?php echo $img23; ?>" border=1></a><input type="radio" select name="img" option value="<?php echo $img23; ?>">
<img src="<?php echo $img24; ?>" border=1></a><input type="radio" select name="img" option value="<?php echo $img24; ?>">
<img src="<?php echo $img25; ?>" border=1></a><input type="radio" select name="img" option value="<?php echo $img25; ?>">
</nobr>
</div>
</div>
<?php
if ($link = mysql_connect('localhost', 'gebruikersnaam', 'wachtwoord') !== false)
{
if (!mysql_select_db('naam van database'))
{
$link = false;
}
}
if ($link !== false)
{
$sql = "SELECT VOORNAAM
, VV
, ACHTERNAAM
, MAILADRES
, concat_ws(' ',VOORNAAM,VV,ACHTERNAAM) fullname
FROM personen";
if (($result = mysql_query($sql)) !== false)
{
while ($row = mysql_fetch_assoc($res))
{
echo '<option value="'.$row['MAILADRES'].'">'.$row['fullname'].'<option>';
}
}
}
else
{
$mysqlerrorlog .= mysql_error().'<br />'.$sql.'<br />';
file_put_contents('mysqlerrlog.txt',$mysqlerrorlog,FILE_APPEND);
}
?>
<br>
<strong>E-mail afzender</strong>
<input type=text style="font-size: 10px; font-family: tahoma,arial; font-weight: bold; color: #336699; BORDER: #000000 1px line ; BACKGROUND-COLOR: #F8F8F8" name="say" size="60"><br>
<strong>Naam afzender</strong>
<input type=text style="font-size: 10px; font-family: tahoma,arial; font-weight: bold; color: #336699; BORDER: #000000 1px line ; BACKGROUND-COLOR: #F8F8F8" name="zigi" size="60"><br>
<strong>Bericht</strong>
<input type=text style="font-size: 11px; font-family: tahoma,arial; font-weight: bold; color: #336699; BORDER: #000000 1px line ; BACKGROUND-COLOR: #F8F8F8" name="msg" size="60"><br><br>
<strong>Gebruik geen ENTER bij het invullen van het bericht!</strong><br><br>
<input type="hidden" name="image">
<name="text">
<INPUT TYPE="SUBMIT" VALUE=" Verzenden"
STYLE="font-family:verdana;
font-size:12px; font-weight:bold; font-style:none; border-style:solid;
border-color:#0C0D0C; border-width:1px; background:#3AC23A; color:#FFFFFF; width:8em">
<INPUT TYPE="RESET" VALUE=" Wissen"
STYLE="font-family:verdana;
font-size:12px; font-weight:bold; font-style:none; border-style:solid;
border-color:#0C0D0C; border-width:1px; background:#3AC23A; color:#FFFFFF; width:8em">
</form>
<?php
// Alles is in orde dus hieronder komt de pagina met, eventueel, onderstaande uitlogknop
echo '<form action="" method="POST">
<input name="uitloggen" type="submit" value="Logout">
</form>';
?>
</div>
</div>
</body>
</html>
@StanThe:
allereerst ben ik van die ene database afgestapt, puur om te gaan kijken wat er gebeurd.
Ik heb die code van jou momenteel in de laatste listing vanaf regel 124 nog even weg gelaten.
Ik heb even verder op internet gezocht en heb hetvolgende gevonden om eerst de connectie uit te testen:
<?php
include "connect.php"; //verbinding maken
$query = "SELECT * FROM `nieuwsbrief` ";
//query is aangemaakt
$sql = mysql_query($query) or die ( mysql_error( ) );
//query is uitgevoerd
while($record = mysql_fetch_object($sql)){
echo"".$record->naam."<br>";
}
?>
In connect.php staan puur alleen maar de vebinding.
Nu laat ik dit draaien bovenaan de eigenlijke listing.
Resultaat is dat ik als output de namen krijg uit de tabel 'Nieuwsbrief'.
Deze tabel bestaat dus enkel alleen uit 2 kolommen: 'emailadres' en 'naam'
Ik heb dus wel degelijk nu verbinding met de juiste tabel uit de database.
Volgens mij hoef ik nu alleen maar de gegevens uit kolom emailadres te koppelen aan $tomailadres in de te maken selectiebox en kolom naam aan $tonaam
Moet nog even opletten dat ik die$variabelen juist ga noemen, nu staan ze dus nog anders.
[aanvulling antwoord op StanThe:]
Ik heb je bovenstaande code ge-upload.
Geen enkele foutmelding, proficiat.
Maar ik zie nergens een keuze mogelijkheid met namen en of emailadressen.
Ik krijg meteen onder keuze optie van de plaatjes het invulveld voor de afzender van de e-mail.
Daar gaat dus iets fout, geen database gegevens te zien.
Is het samenvoegen niet beter te vergeten en met die andere database te werken met alleen de kolommen 'emailadressen' en 'naam'??
[vervolg]
Ik heb nu de code van StanThe vervangen door:
<?php
$query = "SELECT * FROM `nieuwsbrief` ";
//query is aangemaakt
$sql = mysql_query($query) or die ( mysql_error( ) );
//query is uitgevoerd
while($record = mysql_fetch_object($sql)){
echo '<option value="'.$row['emailadres'].'">'.$row['naam'].'<option>';
}
?>
verbinding met de database heb ik helemaal bovenaan de listing gemaakt met:
<?php
include "connect.php"; //verbinding maken
?>
Nu krijg ik het aantal records lengte dezelfde foutmelding:
PHP Notice: Undefined variable: row in D:\www\websitenaam\www\test\cards\indextestd.php on line 135 PHP Notice: Undefined variable: row in D:\www\websitenaam\www\test\cards\indextestd.php on line 135
Aangezien het aantal meldingen klopt met het aantal records, heb ik dus wel verbinding met de database-tabel nieuwsbrief.
[aanvulling probleem opgelost]
na een paar dagen zoeken en uitproberen ben ik er uiteindelijk bij de oplossing gekomen:
<?php
$query = "SELECT naam, emailadres FROM nieuwsbrief";
//query is aangemaakt
$sql = mysql_query($query) or die ( mysql_error( ) );
//query is uitgevoerd
echo 'selecteer naam ontvanger: ' . '<select name="to">';
while($record = mysql_fetch_assoc($sql)){
echo '<option value="'.$record['emailadres'].'">'.$record['naam'].'<option>';
}
echo '</select>';
?>