na submit pagina niet goed.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior, Medior and Junior SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Veldhoven Vacature ID: 12696 Introductie Our client is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. Wat verwachten we van jou? SAP Certified Application Associate - SAP HANA Cloud Modeling (training and/or certification) Bachelor degree or higher Excellent understanding of SAP HANA (2.0 / Cloud), Data Modelling and writing

Bekijk vacature »

Pagina: 1 2 volgende »

Frits van Leeuwen

Frits van Leeuwen

25/07/2017 00:01:53
Quote Anchor link
Hallo alemaal,

Ik heb op mijn pagina index.php de volgende code staan.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
                    <?php
                    if (file_exists($filename))
                        print "Bestand is wel aanwezig!";
                    else
                        include 'createdb.php';
                    ?>


Dat werkt goed bij het opstarten krijg ik het formulier dat ik in creatdb.php geplaatst had.

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
<p>Vul op deze pagina de gevraagde gegevens in.</p>
<form action="createdb.php" method="post">
    <table>
        <tr class="form1"><td>
        <div class="pf">Database-naam</div></td><td><input type="text" id="Inp_Database" name="Inp_Database" tabindex="1">
        
        <tr class="form1"><td>
        <div class="pf">Gebruiker  </div></td><td><input type="text" id="Inp_User" name="Inp_User" tabindex="2">
        
        <tr class="form1"><td>
        <div class="pf">Wachtwoord </div></td><td><input type="password" id="Inp_Password" name="Inp_Password" tabindex="3">
        
        <tr class="form1"><td>
        <div class="pf">Host-adres </div></td><td><input type="text" id="Inp_Host" name="Inp_Host" tabindex="4">
        
        <tr><td>
        <input type="reset" value="Velden legen" id="Inp_reset" name="Inp_reset" alt="Alle velden legen" tabindex="5">
        </td><td>
        <input type="submit" value="Installeren" id="Inp_nstall" name="Inp_nstall" alt="Installatie starten" tabindex="6">
        <?php
            if($_POST['Inp_nstall'])
            {

            echo "<p>Er is op installeren geklikt!</P>";
            }

        ?>

    </table>
</form>


Zodra ik op submit klik, verschijnt de pagina creatdb.php zonder opmaak.
Dit is niet wat ik wil. Ik wil index.php met eventueel een ander formulier. (Dat heb ik alleen nog niet)
Maar na de submit lijkt de pagina index.php er onder uit geschopt te zijn.

Wie heeft hier een oplossing voor me?

Alvast bedankt.
Frits van Leeuwen
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 25/07/2017 00:25:15 door - Ariën -
 
PHP hulp

PHP hulp

20/04/2024 07:22:42
 
Thomas van den Heuvel

Thomas van den Heuvel

25/07/2017 00:05:36
Quote Anchor link
Een lege (?) pagina duidt meestal op foutmeldingen.

Zet het volgende eens helemaal bovenaan in je code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'stdout');
?>

En volg het kruimelpad.

En ja:
als bestand bestaat
> toon boodschap
anders
> toon volledige HTML pagina

Da's in principe niet zo raar dan he :).
 
Ben van Velzen

Ben van Velzen

25/07/2017 00:25:19
Quote Anchor link
Als je naar index.php wil zul je niet naar createdb.php moeten posten.
 
Thomas van den Heuvel

Thomas van den Heuvel

25/07/2017 01:28:18
Quote Anchor link
En dat ja. Op een heel elementair niveau zou je een soort pagina include systeem kunnen maken via een querystring-variabele: index.php?page=createDb. Dit is dan tevens je form-action.

Maar dan zul je ook wat aanvullende dingen moeten programmeren. Het heeft namelijk weinig zin om een hele HTML-pagina uit te draaien wanneer je een formulier aan het verwerken bent.

Ook loont het de moeite om de pagina te scheiden in acties:
?page=createdb (denk hier een default actie bij, zoals het weergeven van het formulier)
?page=createDb&action=processForm (voor het verwerken van het formulier)
?page=createDb&errors=1 (terug bij het formulier indien er foutmeldingen waren)
?page=createDb&action=feedback (nadat een formulier successvol is verwerkt)

Het kan handig zijn om alles in aparte acties te stoppen en dit op een fatsoenlijke manier te compartimenteren anders wordt je code al snel één grote brei (spaghetti-code).

Kijk anders eens naar het POST/redirect/GET principe.
Gewijzigd op 25/07/2017 01:28:41 door Thomas van den Heuvel
 
Frits van Leeuwen

Frits van Leeuwen

25/07/2017 08:29:12
Quote Anchor link
Wow...!!! wat een reacties. En snel!
Bedankt voor zo ver. Vooral die laatste reactie lijkt me een goed keuze. Ik ga ze vanavond op mijn gemak doornemen en uitproberen waar mogelijk.

Ik denk dat jullie me goed geholpen hebben. Ik laat mijn bevindingen vanavond weten als ik bezig geweest ben.

Toevoeging op 25/07/2017 20:38:42:

Het probleem bleek redelijk simpel opgelost te zijn door de volgende mutatie te doen.
In ceatdb.php in de 2 regel staat:

<form action="createdb.php" method="post">

Dit moest zijn:

<form action="index.php" method="post">
 
Frank Nietbelangrijk

Frank Nietbelangrijk

25/07/2017 22:00:12
Quote Anchor link
Hetgeen je schrijft klopt omdat de landings pagina het index.php bestand is dat op zijn beurt createdb.php gaat "invoegen". Echter is dit wel een lelijke manier om je probleem op te lossen.

Overweeg om

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if (file_exists($filename))
    print "Bestand is wel aanwezig!";
else
    include 'createdb.php';
?>


te wijzigen in iets als:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
if (file_exists($filename)) {
    print "Bestand is wel aanwezig!";
}
else {
    header('Location: createdb.php');
    exit;
}

?>


En dan gewoon een heel nieuw script/pagina maken in createdb.php...
 
Frits van Leeuwen

Frits van Leeuwen

26/07/2017 18:03:58
Quote Anchor link
Als ik dat zo vervang start index.php niet meer.
Dus daar moet iets in staan wat niet goed is.
 
- Ariën  -
Beheerder

- Ariën -

26/07/2017 18:13:31
Quote Anchor link
Laat je relevante code eens zien?
 
Frits van Leeuwen

Frits van Leeuwen

26/07/2017 18:23:13
Quote Anchor link
Die staat al in mijn eerste bericht.
 
Ben van Velzen

Ben van Velzen

26/07/2017 18:59:47
Quote Anchor link
Frank doelt erop dat het niet heel handig is om includes op deze manier te misbruiken, en geeft daarom een alternatieve methode.
 
Frits van Leeuwen

Frits van Leeuwen

26/07/2017 19:59:55
Quote Anchor link
Bedankt Ben. Toch had ik dat al wel door. Maar ik vrees dat ik dan dat stukje code eerst nog wat meer moet analyseren voor ik het echt goed begrijp. Ik ging er even van uit dat de code zo te vervangen was.
 
Ben van Velzen

Ben van Velzen

26/07/2017 20:21:52
Quote Anchor link
De code is ook wel zo te vervangen, je moet dan alleen wel weer alles naar createdb.php laten verwijzen, en deze afzonderlijk een layout geven.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/07/2017 20:46:16
Quote Anchor link
Frits,

Een script die een installatie uitvoert (dat is waar het om gaat volgens mij?) hoort mij inziens niet op een index.php thuis. Al zou het wel zo kunnen zijn dat deze index.php in een subdirectory staat van de documentroot. Maar dan stel ik me zo voor dat je eerst een introductie geeft en een keuze menu of een knop waarmee de gebruiker verder gaat? (zo niet dan moet alles uit createdb.php gewoon in index.php). stel de gebruiker drukt op een knop "Installeren" dan stuur je die gewoon door naar createdb.php (of geef hem een andere naam). in createdb.php maak je het formulier, controleer je de ingevoerde gegevens op onjuistheden en verwerk je dit formulier indien alles lijkt te kloppen. Nadat alles gedaan is wat gedaan moet worden stuur je de gebruiker wederom door naar een andere pagina. Dat doe je overigens altijd om dubbele POSTs te voorkomen.
 
Frits van Leeuwen

Frits van Leeuwen

26/07/2017 20:46:48
Quote Anchor link
Hoe bedoel je een afzondelijke layout? (Sorry hoor maar ik ben vrij nieuw in PHP)
Ik heb de volledige code van createdb.php in mijn eerste bericht staan.
 
- Ariën  -
Beheerder

- Ariën -

26/07/2017 20:49:09
Quote Anchor link
Ter informatie: includeren is invoegen in een website. Je laadt de inhoud van het ene bestand in die van de andere. Met een location-header stuur je iemand door naar een andere URL.
 
Frits van Leeuwen

Frits van Leeuwen

26/07/2017 21:23:48
Quote Anchor link
Waar ik naar toe wil, is dat ik op de index.php check of dat mijn applicatie al is geïnstalleerd. Zo niet, dan is createdb.php het formulier dat even aan moet. om daar de benodigde gegevens in te geven. Daarvandaan wil ik een database aanmaken en opzetten.
Als dat klaar is, dan kan er mee gewerkt worden.
De hele applicatie lijkt me niet zo moeilijk, maar ik moet een begin hebben.
 
- Ariën  -
Beheerder

- Ariën -

26/07/2017 21:26:18
Quote Anchor link
Dan zou ik voor location-header kiezen, welke je naar je installatiescript verwijst. Dus de tweede code van Frank.
Gewijzigd op 26/07/2017 21:27:01 door - Ariën -
 
Frits van Leeuwen

Frits van Leeuwen

26/07/2017 21:30:37
Quote Anchor link
Ariën, bedankt voor de uitleg. Ik begon dat al te vermoeden.
Dus createdb.php moet net als index.php opgebouwd worden? Ik had juist gehoopt dat ik de pagina in een andere pagina kon plaatsen en het daar te kunnen laten wisselen. Maar ik ga nu denken dat dat niet zo slim is.

Toevoeging op 26/07/2017 21:34:46:

Variabele die ik in index.php gebruik, gaan die mee naar creatdb.php?
 
- Ariën  -
Beheerder

- Ariën -

26/07/2017 21:35:19
Quote Anchor link
Je bedoelt dat je de layout weer over moet nemen?

Je zou natuurlijk de inhoud van al je pagina's met includes in elkaar kunnen zetten, zoals je een header en footer hebt, waarna je die weer in je createdb.php kan invoegen.

En variabelen gaan niet mee bij een redirect. Tenzij je het met GET of SESSIONS doet, maar waar komen die variabelen dan vandaan?
Gewijzigd op 26/07/2017 21:36:10 door - Ariën -
 
Frits van Leeuwen

Frits van Leeuwen

26/07/2017 21:44:20
Quote Anchor link
Ik heb bijvoorbeeld

$programmanaam = "programma";

gebruikt. En uiteraard meer van die dingen op deze manier.

Toevoeging op 26/07/2017 21:44:58:
Gewijzigd op 26/07/2017 23:30:28 door Frits van Leeuwen
 
- Ariën  -
Beheerder

- Ariën -

26/07/2017 21:50:55
Quote Anchor link
Je kan je bericht ook aanpassen ;-)

Waar komt die variabele vandaan? Index.php? Kan je hem niet met GET meegeven in de URL dan? En waarom heb je hem nodig in de createdb.php ?
 

Pagina: 1 2 volgende »



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.