Naar andere pagina of huidige leegmaken

Status
Niet open voor verdere reacties.

pkuipers

Gebruiker
Lid geworden
8 jul 2014
Berichten
97
Hallo, ik heb het volgende probleem: ik heb een php pagina met ook html code waarin de gegevens van een database worden getoond. Daar onder heb ik een input field gemaakt waar je 'n nummer kan invoeren van een row die worden weergegeven. Dit input field staat in een
Code:
<form action="klant.php" method="GET">
, alles werkt goed. De row wordt netjes weer gegeven alleen op dezelfde pagina onder de regels van alle row's van de database. Nu zou ik graag deze op een aparte pagina willen laten zien maar dit krijg ik niet voor elkaar? Heeft iemand hier een oplossing voor?

Met vriendelijke groet,

Peter
 
Je wilt dus een nieuw venster openen? Persoonlijk lijkt mij dat juist verwarrend.
Want wat is precies je bedoeling? Je formulier in beeld houden, met daaronder alle data uit je database?
 
Hallo Aar,
het is de bedoeling dat wanneer de keuze van de regel gemaakt is je alleen dan alle gegevens van die keuze te zien krijgt. Verder niets, dit komt omdat het aantal regels zo groot is dat het op dezelfde pagina zetten 'n beetje onduidelijk wordt, ook als de gegevens uitgeprint moeten worden krijg je ipv een pagina bijna een boekwerk.
 
Dus je klikt in een grote lijst met verschillende klanten dus bijv. op Slagerij van Kampen, en je ziet de detailpagina van die klant?
Dat bedoel je?

Laat anders eens een paar screenshots zien met hoe het eruit ziet. A.u.b. met fictieve data of geblurde data.
Want een stukje HTML met een aanroep naar een bestand voor de uitvoer van een formulier zegt echt niks.
 
Laatst bewerkt:
Deze code staat in een php file:
Code:
<table id="customers">
        <thead>
            <tr>
                <th>ID</th>
                <th>Hond</th>
                <th>Naam</th>
                <th>Adres</th>
                <th>Postcode</th>
                <th>Plaats</th>
                <th>Telefoon</th>
                <th>Mobiel</th>
                <th>Email</th>
                <th>Inschrijfdatum</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach ( $results as $result ) : ?>
                <tr>
                    <td><?php _e($result->ID); ?></td>
                    <td><?php _e($result->post_hond); ?></td>
                    <td><?php _e($result->post_naam); ?></td>
                    <td><?php _e($result->post_adres); ?></td>
                    <td><?php _e($result->post_postcode); ?></td>
                    <td><?php _e($result->post_plaats); ?></td>
                    <td><?php _e($result->post_telefoon); ?></td>
                    <td><?php _e($result->post_mobiel); ?></td>
                    <td><?php _e($result->post_email); ?></td>
                    <td><?php _e($result->post_inschrdatum); ?></td>
                </tr>
            <?php endforeach; ?>
        </tbody>
    </table>
    <table class="knop">
        <tr>
            <td><?php ah_print_button();?></td>
            <td>
                <form action="klant.php" method="get">
                <label for="quantity">Vul het ID in van de klant die je wilt zien.:</label>
                <input type="number" id="quantity" name="quantity" min="1" max="<?php _e($result->ID) ; ?>">
                <a href="http://localhost/testphpdatabase/hond.php" target="_top" >
                <input type="submit" value="Submit" ></a>
                </form>
            </td>
        </tr>
    </table>
en dit staat in klant.php
Code:
 if ($_SERVER['REQUEST_METHOD'] == "GET")
    {
        /* Controleer of de waarde bestaat */
        if (isset($_GET['quantity']))
        {
            /* Controleer of het een getal is */
            if (is_numeric($_GET['quantity']))
            {
                $nummer = $_GET['quantity'];
            }
        }
        if (isset($nummer)) {
            // Select data
            $sql="INSERT INTO hond ( ID,post_hondnaam,post_ras,post_geslacht,post_memo,post_gebdatum,post_behdatum) SELECT id,post_hondnaam,post_ras,post_geslacht,post_memo,post_gebdatum,post_behdatum FROM honden WHERE ID = $nummer";

            if ($mysqli->query($sql) == FALSE) {
                echo "Gegevens niet ingevoerd";
            }
           $sql1= $mysqli->query("SELECT * FROM hond");

            //if ($mysqli->query($sql1) == FALSE) {
            //    echo "Gegevens niet gedownload";
           // }
               // Loop and fetch
                 while($row = $sql1->fetch_object()) {
                     $results[] = $row;
                     
                 }
        }
    }
<table id="customers1">
        <thead>
            <tr>
                <th>ID</th>
                <th>Hond</th>
                <th>Ras</th>
                <th>Geslacht</th>
                <th>Memo</th>
                <th>Geb.datum</th>
                <th>Beh.datum</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach ( $results as $result ) : ?>
                <tr>
                    <td><?php $sql1->ID; ?></td>
                    <td><?php $result->post_hondnaam; ?></td>
                    <td><?php $result->post_ras; ?></td>
                    <td><?php $result->post_geslacht; ?></td>
                    <td><?php $result->post_memo; ?></td>
                    <td><?php $result->post_gebdatum; ?></td>
                    <td><?php $result->post_behdatum; ?></td>
                </tr>
                <?php endforeach; ?>
        </tbody>
    </table>
    <table class="knop">
        <tr>
            <td><?php ah_print_button();?></td>
        </tr>
    </table>

dit alles wordt dus onder elkaar gezet op 1 pagina.
 
Ik heb niet de hele code bekeken maar dit viel mij op
Code:
if (isset($nummer)) {
    // Select data
    $sql="INSERT INTO hond (ID, ... ,post_behdatum)
          SELECT id,  ... ,post_behdatum FROM honden WHERE ID = $nummer";

In je commentaar regel staat "Select data" maar je doet ook een INSERT
 
Is het niet een beetje raar dat je het ID nummer moet invullen, terwijl je die al ziet?
Het is al een verwijzing van het formulier via GET, dus wat houdt je tegen om gewoon een normale link te plaatsen. Dat lijkt me veel sneller dan:
Zoeken in de lijst, naar beneden scrollen, onthouden, invullen en versturen.

Zoeken in de lijst, en dan klikken op bekijk/beheer is veel sneller, en logischer.

Misschien kan je je database en opbouw ook verder uitkristaliseren tot huisdieren. Nu heb je een tabel met hond, maar wat als het straks ook om katten draait?
Dan is het tegen de normalisatie-regels in om een tabel 'katten' te maken.
 
Laatst bewerkt:
Ik heb niet de hele code bekeken maar dit viel mij op
Code:
if (isset($nummer)) {
    // Select data
    $sql="INSERT INTO hond (ID, ... ,post_behdatum)
          SELECT id,  ... ,post_behdatum FROM honden WHERE ID = $nummer";

In je commentaar regel staat "Select data" maar je doet ook een INSERT

Hallo bron, de data haal ik uit de database honden en ik plaats deze in hond en deze waarde wil ik op een andere pagina zien.
 
Is het niet een beetje raar dat je het ID nummer moet invullen, terwijl je die al ziet?
Het is al een verwijzing van het formulier via GET, dus wat houdt je tegen om gewoon een normale link te plaatsen. Dat lijkt me veel sneller dan:
Zoeken in de lijst, naar beneden scrollen, onthouden, invullen en versturen.

Zoeken in de lijst, en dan klikken op bekijk/beheer is veel sneller, en logischer.

Misschien kan je je database en opbouw ook verder uitkristaliseren tot huisdieren. Nu heb je een tabel met hond, maar wat als het straks ook om katten draait?
Dan is het tegen de normalisatie-regels in om een tabel 'katten' te maken.

Hallo Aar, ik gebruik alleen <form ....> om de input te verkrijgen. Als hier een andere manier voor is hoor ik dat graag. Met betrekking tot "katten" dit programma wat ik aan het bouwen ben is voor een hondentrimsalon, vandaar ;-)
 
Tip. Controleer niet met is_numeric() want ID=1.2 en ID=2e5 zijn ook geldige nummers.
Met de code hieronder worden alleen hele getallen zonder letters erin toegelaten.
PHP:
// Controleer of de waarde bestaat
if (isset($_GET['quantity']))
{
    // Controleer of $nummer een getal is
    $nummer = $_GET['quantity'];
    if (preg_match('/^[0-9]+$/', $nummer) !== 1) {
        $nummer = null;
    }

    if (!is_null($nummer)) {
        // Select data
        $sql = "......";
 
Laatst bewerkt:
Hallo Aar, ik gebruik alleen <form ....> om de input te verkrijgen. Als hier een andere manier voor is hoor ik dat graag. Met betrekking tot "katten" dit programma wat ik aan het bouwen ben is voor een hondentrimsalon, vandaar ;-)

Vanwaar is het formulier nodig?
Je kan toch ook gewoon een link maken naar de specifieke detailpagina?

Zorg tevens voor goede escaping in je query op je $_GET variabele.
 
Laatst bewerkt:
Dit is vreemd in een formulier
Code:
<a href="http://localhost/testphpdatabase/hond.php" target="_top">
<input type="submit" value="Submit" >
</a>

Je kan de action="..." veranderen maar ik weet de naamgeving van je bestanden niet
Code:
<form action="/testphpdatabase/hond.php" method="get">
  <label for="quantity">Vul het ID in van de klant die je wilt zien:</label>
  <input type="number" id="quantity" name="quantity" min="1" max="<?php _e($result->ID); ?>">
  <input type="submit" value="Verstuur">
</form>

Alleen als _e($result->ID) een goede waarde geeft werkkt <input max="...">
 
Vanwaar is het formulier nodig?
Je kan toch ook gewoon een link maken naar de specifieke detailpagina?

Zorg tevens voor goede escaping in je query op je $_GET variabele.

Hallo Aar,
ik heb hiervoor heb ik gekozen omdat in nergens kon vinden hoe je de waarde uit het input field in een variable kan zetten. Als ik geen <form> nodig heb kan je, volgens mij, makkelijker naar een andere pagina verwijzen.
 
Dit is vreemd in een formulier
Code:
<a href="http://localhost/testphpdatabase/hond.php" target="_top">
<input type="submit" value="Submit" >
</a>

Je kan de action="..." veranderen maar ik weet de naamgeving van je bestanden niet
Code:
<form action="/testphpdatabase/hond.php" method="get">
  <label for="quantity">Vul het ID in van de klant die je wilt zien:</label>
  <input type="number" id="quantity" name="quantity" min="1" max="<?php _e($result->ID); ?>">
  <input type="submit" value="Verstuur">
</form>

Alleen als _e($result->ID) een goede waarde geeft werkkt <input max="...">

Die <a href...... heb ik gebruikt om dus te proberen naar een andere pagina te gaan de action=".." klopt want dat gaat goed.
 
Die a href bedoel ik dus in je loop, dat je gewoon direct kan doorklikken naar die detailpagina, i.p.v. deze omslachtige weg.
 
hoe je de waarde uit het input field in een variable kan zetten
Omdat je een database op de server hebt moet je een <form> gebruiken als je de <table> op een andere manier wil tonen. De php krijgt alle waarden uit het formulier in de variabele (in jouw geval) $_GET . Als minimum voorbeeld
Code:
<input type="number" name="quantity">

In de php heb je (nadat het formulier is verstuurd) alle waardes uit het formuilier
PHP:
// een formulier veld is altijd een string, voorb: $nummer = "27" ( dus niet $nummer = 27 )
$nummer = $_GET['quantity'];

Alle php code die hier omheen wordt gezet is voor security (xss), gebruikersfouten en validatie.

Er is een andere manier (via Javascript Ajax + php) maar omdat je nu helemaal in php zit zou ik dat niet aanraden.
 
Laatst bewerkt:
Heren,

ik heb het probleem opgelost.
De oplossing was om bij
Code:
<input type="submit" value="Submit">
het volgende toe te voegen:
Code:
<input type="submit" formaction="klant.php" value="Submit">

Ook heb ik de waarde uit <input type="number" van string naar integer omgezet met :
Code:
$nummer = (int) $_GET['quantity'];

Nog bedankt voor alle berichtjes.
 
<input type="submit" formaction="klant.php" value="Submit">
Wat gebeurt er als iemand het formulier met de Enter toets verstuurt?
 
Hallo bron,

als je "formaction" niet gebruikt komen de gegevens die ik in klant.php opvraagt onder de gegevens waar de knop submit staat.
Plaats ik wel de "formaction" dan komen de gegevens op een lege pagina waar ik naar verwijst.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan