Ik moet voor school een PM systeem maken. Ik heb hierover nihil uitleg gekregen dus ik kan zelf beginnen klooien. Het probleem zit hem erin dat ik de id uit mijn select option maar niet weergegeven krijg, maar deze is wel noodzakelijk voor de rest :s iemand een oplossing ?
de tabel ziet er zo uit:
CREATE TABLE PmInbox (
PmInboxId INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
PmInboxVerzenderId INT FOREIGN KEY REFERENCES Gebruikers(GebruikerId),
PmInboxOntvangerId INT FOREIGN KEY REFERENCES Gebruikers(GebruikerId),
PmInboxOnderwerp VARCHAR(64),
PmInboxTekst VARCHAR(4096),
PmInboxDatum DATETIME,
PmInboxGelezen INT,
);
mijn code die niet werkt:
<table cellpadding="1" cellspacing="1" width="230" align="center">
<form action="?" method="post">
<?php
// dropdown met nicknames
$sql = "SELECT GebruikerId, GebruikerNickname from Gebruikers ORDER BY GebruikerNickname ASC";
$result = mssql_query($sql) or die('Kan geen categorieën selecteren');
while($line = mssql_fetch_array($result, MSSQL_NUM)) {
$lijst .= '<option value="'.$line[0].'">'.$line[1].'</option>';
}
if($lijst != '') {
echo '<tr>'.'<td align="left">';
echo 'Aan:';
echo $ontvanger;
echo '</td>';
echo '<td align="left">';
echo '<select name="ontvangers" class="field">'.$lijst.'</select>';
echo '</td>';
echo '</tr>';
}
?>
<?php
###############################
# versturen van berichtje #
###############################
$GebruikerId; //opgehaald uit tbl gebruikers
echo $GebruikerId;
// bepalen van id van ontvanger
$ontvanger = $_POST['ontvangers'];
/*$onderwerp = $_POST['onderwerp'];
$boodschap = $_POST['boodschap'];
$datum = date('Y-m-d, H-i-s');
if (isset($_POST['verzenden'])) {
$sql = "INSERT INTO PmInbox (PmInboxVerzenderId,PMInboxOntvangerId,PmInboxOnderwerp,PmInboxTekst,PmInboxDatum) VALUES
('$verstuurder','$ontvanger','$onderwerp','$boodschap','$datum')";
$uitvoeren = mssql_query($sql) or die ('kan niet wegschrijven');
}*/
?>
<tr>
<td align="right">Onderwerp:</td><td><input type="text" name="onderwerp"/></td>
</tr>
<tr>
<td valign="right">MSG:</td><td><textarea name="boodschap" rows=8 cols=40 WRAP="soft"></textarea></td>
</tr>
<tr>
<td> </td><td><input type="submit" name="verzenden" class="button" value="verzenden" /></td>
</tr>
</form>
</table>
euhm mja dat van $gebruikerid is nogal ingewikkeld. De site is zo opgebouwd dat deze pagina via den index geladen wordt en da ik aan bepaalde variabelen aankan.
dus dat werkt daar ligt het probleem niet. dat heb ik getest met die echo.
maar hoe krijg ik nu die id van die variabele lijst te zien? hoe kan ik die echoen ? of iets anders, ik heb die id's echt nodig
Tja, je zet ze nu in een selectbox in een formulier. Je kunt dus niet eerder over (een van) die waarden beschikken totdat je het formulier gepost hebt.
He je het gepost, dan kun je het daarna ophalen met de bijbehorende $_POST variabele, in dit geval $_POST['ontvangers'].
Tja ik weet niet waar in je script je die variabele nodig hebt. Als je ze direct op de plaats nodig hebt waar je ze uit de database haalt, dan zou ik ze gewoon in die while-loop die je nu gebruikt in een array plaatsen.
<?php
while(....)
{
$id[] = $line[0];
}
?>
Maar als jij eerst binnen het formulier een keuze wilt maken uit 1 van de gebruikers, dan doe je het op de manier die je nu gebruikt. Als je het formulier dan verzonden heb kun je met $_POST['ontvangers'] het gekozen ID ophalen.
Als je meerdere ontvangers wilt selecteren, dan kun je je <select> tag ook het 'multiple' attribuut meegeven.
het is de bedoeling dat je een ontvanger selecteert, je de boodschap intikt met bijhorende titel. Als je dan op verzenden drukt dan moet hij de ontvangerid wegschrijven in de DB
Als je alles binnen dezelfde pagina houdt, dus als je het action attribuut van de <form> tag naar deze pagina laat verwijzen zou je het volgende kunnen doen:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$sql = "
INSERT INTO tabel (gebruikerID)
VALUES ('".$_POST['ontvangers']."')
";
// Uitvoeren etc...
}
?>
Precies zoals ik al zei eigenlijk. Zodra je het formulier gepost hebt, staat het id van de ontvanger in $_POST['ontvangers'].
eerst en vooral sorry voor al de vragen, ben echt nieuw in PHP heb al login, recovery en registratie geschreven dat ging wel maar dat PM gedoe :s. alvast bedankt voor de moeite dat je doet.
ik heb er nu dit van gemaakt maar hij doet echt NIKS meer nu :s
<?php
###############################
# versturen van berichtje #
###############################
$sql = "INSERT INTO PmInbox (PmInboxVerzenderId,PmInboxOntvangerId,PmInboxOnderwerp,PmInboxTekst,PmInboxDatum)
VALUES ('$GebruikerId','$ontvanger','$onderwerp','$boodschap','$datum')";
$uitvoeren = mssql_query($sql) or die ('kan niet wegschrijven');*/
Is dit je totale script? Waar is het formulier gebleven? Je zult een structuur moeten hebben die er ongeveer als volgt uit ziet:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Verwerken van het formulier:
// Beveiligen van user-input met mysql_real_escape_string()
// Insert in de database.
}
else
{
// Tonen van het formulier:
// Benodigde gegevens ophalen uit database
// Formulier genereren.
}
?>
// Verwerken van het formulier
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(isset($_POST['verzenden']))
{
// Insert in de database.
$sql = "INSERT INTO PmInbox (PmInboxVerzenderId,PmInboxOntvangerId,PmInboxOnderwerp,PmInboxTekst,PmInboxDatum)
VALUES ('$GebruikerId','$ontvanger','$onderwerp','$boodschap','$datum')";
$uitvoeren = mssql_query($sql) or die ('kan niet wegschrijven');
}
}
else
{
// Tonen van het formulier:
echo '<table cellpadding="1" cellspacing="1" width="230" align="center">';
echo '<form action="?" method="post">';
// Benodigde gegevens ophalen uit database voor selectionbox
$sql = "SELECT GebruikerId, GebruikerNickname from Gebruikers ORDER BY GebruikerNickname ASC";
$result = mssql_query($sql) or die('Kan geen categorieën selecteren');
while($line = mssql_fetch_array($result, MSSQL_NUM)) {
$lijst .= '<option value="'.$line[0].'">'.$line[1].'</option>';
}