ID probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kristof s

Kristof s

24/11/2006 17:28:00
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<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&euml;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>&nbsp;</td><td><input type="submit" name="verzenden" class="button" value="verzenden" /></td>
    </tr>
    </form>
</table>

Edit:
codetags toegevoegd
Gewijzigd op 01/01/1970 01:00:00 door Kristof s
 
PHP hulp

PHP hulp

19/11/2024 03:20:26
 
Joren de Wit

Joren de Wit

24/11/2006 17:40:00
Quote Anchor link
Je hebt in je script als commentaar wel staan dat $GebruikerId opgehaald wordt uit de tabel gebruikers, maar waar doe je dat dan?

Het enige waar het id in verwerkt zit is de variabele $lijst die alle <option>'s van je <select> box bevat. Maar verder nergens.
 
Kristof s

Kristof s

24/11/2006 17:58:00
Quote Anchor link
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
 
Joren de Wit

Joren de Wit

24/11/2006 18:04:00
Quote Anchor link
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'].
 
Kristof s

Kristof s

24/11/2006 18:05:00
Quote Anchor link
wat stel je dan voor dat ik doe ?
 
Joren de Wit

Joren de Wit

24/11/2006 18:12:00
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?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.
 
Kristof s

Kristof s

25/11/2006 14:08:00
Quote Anchor link
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
 
Joren de Wit

Joren de Wit

25/11/2006 14:12:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?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'].
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Kristof s

Kristof s

25/11/2006 15:09:00
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php

    ###############################
    #   versturen van berichtje      #
    ###############################


    $GebruikerId;
    echo $GebruikerId;

    $ontvanger = $_POST['ontvangers'];
    $onderwerp = $_POST['onderwerp'];
    $boodschap = $_POST['boodschap'];
    $datum = date('Y-m-d, H-i-s');

            if($_SERVER['REQUEST_METHOD'] == 'POST')
                    {


                        $sql = "INSERT INTO PmInbox (PmInboxVerzenderId,PmInboxOntvangerId,PmInboxOnderwerp,PmInboxTekst,PmInboxDatum)
                        VALUES ('$GebruikerId','$ontvanger','$onderwerp','$boodschap','$datum')"
;
                        $uitvoeren = mssql_query($sql) or die ('kan niet wegschrijven');*/

                    }

    ?>
 
Joren de Wit

Joren de Wit

25/11/2006 15:17:00
Quote Anchor link
Is dit je totale script? Waar is het formulier gebleven? Je zult een structuur moeten hebben die er ongeveer als volgt uit ziet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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.

}
?>
 
Kristof s

Kristof s

25/11/2006 15:29:00
Quote Anchor link
bedoel je dan iets in deze aard ?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php

    $GebruikerId
;
    echo $GebruikerId;

    $ontvanger = $_POST['ontvangers'];
    $onderwerp = $_POST['onderwerp'];
    $boodschap = $_POST['boodschap'];
    $datum = date('Y-m-d, H-i-s');

// 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&euml;n selecteren');
                while($line = mssql_fetch_array($result, MSSQL_NUM)) {
                    $lijst .= '<option value="'.$line[0].'">'.$line[1].'</option>';
                }


    // Formulier genereren.

                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>';

                }



    ?>


<tr>
<td align="left">Onderwerp:</td><td><input type="text" name="onderwerp"/></td>
</tr>
<tr>
<td valign="left">MSG:</td><td><textarea name="boodschap" rows=8 cols=40 WRAP="soft"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td><td><input type="submit" name="verzenden" class="button" value="verzenden" /></td>
</tr>
</form>
</table>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?}?>
 
Joren de Wit

Joren de Wit

25/11/2006 15:31:00
Quote Anchor link
Ja zo ongeveer. Maar dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
    $ontvanger
= $_POST['ontvangers'];
    $onderwerp = $_POST['onderwerp'];
    $boodschap = $_POST['boodschap'];
    $datum = date('Y-m-d, H-i-s');
?>

Hoort thuis in het eerste if-statement. En dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(isset($_POST['verzenden']))
?>

Is overbodig aangezien je dat al controleert met if($_SERVER['REQUEST_METHOD'] == 'POST')
 
Kristof s

Kristof s

25/11/2006 15:40:00
Quote Anchor link
zucht schrijft nog altijd niks weg :s
 
Kristof s

Kristof s

25/11/2006 15:45:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
// Verwerken van het formulier
if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    $GebruikerId;
    echo $GebruikerId;

    $ontvanger = $_POST['ontvangers'];
    $onderwerp = $_POST['onderwerp'];
    $boodschap = $_POST['boodschap'];
    $datum = date('Y-m-d, H-i-s');

                        // 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 bericht 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 gebruiker selecteren');
                while($line = mssql_fetch_array($result, MSSQL_NUM)) {
                    $lijst .= '<option value="'.$line[0].'">'.$line[1].'</option>';
                }


    // Formulier genereren.
                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>';
                }

    ?>

<tr>
<td align="left">Onderwerp:</td><td><input type="text" name="onderwerp"/></td>
</tr>
<tr>
<td valign="left">MSG:</td><td><textarea name="boodschap" rows=8 cols=40 WRAP="soft"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td><td><input type="submit" name="verzenden" class="button" value="verzenden" /></td>
</tr>
</form>
</table>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?}?>




dit is het ganse script, het vult momenteel niets in in de DB :s
 
Kristof s

Kristof s

27/11/2006 19:51:00
Quote Anchor link
dit werkt al helemaal, ben ondertussen al pak opgeschoten. bedankt blache voor je hulp. TOpic mag dicht
 
Frank -

Frank -

27/11/2006 21:58:00
Quote Anchor link
$datum = date('Y-m-d, H-i-s'); gaat fout! dit is geen datum en gaat problemen opleveren. In een DATETIME (het enige juiste datatype om een datum met tijd op te slaan) mag geen komma komen te staan.

Tevens is het handiger om met de database-functie NOW() de datum en tijd van het heden in te vullen. Daar komt geen letter php-code aan te pas.

Zie verder hoofdstuk 11 voor de datatypes en 12.5 voor de vele handige datum- en tijdfuncties.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.