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)

Connecten met de database gaat ook al:


<?php 
mysql_connect("localhost", "gebruikersnaam", "wachtwoord"); 
mysql_select_db("naam van database"); 

$res = mysql_query("SELECT Voornaam,vv, Achternaam, email FROM Personen"); 
while ($obj = mysql_fetch_object($res)) { 
  echo $obj->Voornaam." "; 
  echo $obj->vv." ";
  echo $obj->Achternaam."<br />"; 
  echo $obj->email."<br />;
} 
mysql_free_result($res); 
?> 


Hiermee toon ik dus de inhoud van de velden uit de database.

Wat ik nu graag zou willen realiseren is om de velden Voornaam en vv en Achternaam samenvoegen en stoppen in een keuzebox die te vergelijken is met:


<strong>Naam Ontvanger</strong>
     <select name="to">
	<option value="">Maak uw keuze</option>
	<option value="emailadres">Naam</option>
	<option value="emailadres">Naam</option>
     </select>


De gemaakte naam keuze zou dus gekoppeld moeten worden aan $tonaam en het daarbij horende e-mailadres aan $tomail.

Vraag is dus welke code moet ik nu gebruiken om dit werkende te krijgen?

Is dit wel mogelijk of zou ik beter eerst een tabel in mijn database moeten maken met de komplete namen en e-mailadressen?
Piet Marisael op 26/09/2010 16:03:50


<?php 
mysql_connect("localhost", "gebruikersnaam", "wachtwoord"); 
mysql_select_db("naam van database"); 

$res = mysql_query("SELECT Voornaam,vv, Achternaam, email FROM Personen"); 
?>

Dus dat betekende dat ik wel verbinding had met de database.


Dat weet je dus niet want je hebt er geen enkele contrĂ´le in staan. Je neemt nu slechts aan dat het goed gaat.
Gooi de eerste 10 a 15 van het originele script dan eens over het muurtje
@StanThe: dat bedoel ik nou met wat je vind als voorbeelden op internet.

@noppes:

de listing heb ik op een andere site staan alwaar nog steeds geen hulp vandaan komt, maar goed als je dan toch graag wil helpen:

http://www.plaatscode.be/140031

nou maarhopen dat hij goed doorlinkt.
Je hebt last van headers already sent

Je dient je scriptlogica aan te passen, output naar de browser komt altijd op de laatste plaats
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>';

?>

Reageren