php beginnersvraag

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • vinbrutus
  • Registratie: September 2005
  • Laatst online: 24-06 23:17
Hey iedereen,

Ik ben nog maar pas begonnen met wat php te leren, maar ik loop nu ergens vast. Ik probeer een database te maken met op elke lijn een checkbox. En als deze checkbox is aangeklikt en er wordt op de knop "ingeven" geklikt dan wordt het doorgestuurd naar een andere database.Allé dat zou ik willen dat het doet, maar dat gebeurd dus niet echt :D

Ik maak dus eerste verbinding met mijn database en lees de gewenste waardes uit
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$connection = mysqli_connect("localhost","user","wachtwoord","database");

$sql ="SELECT ploeg, naam, waarde, nationaliteit,geselecteerd FROM test";
    
    $result = mysqli_query($connection,$sql);
    
echo "<table border = 1px><tr><td>ploeg</td><td>naam</td><td>nat</td><td>waarde</td></tr>";

    while($row = mysqli_fetch_array($result)){
        
    echo "<tr>";
    echo "<td>". $row['ploeg'] . "</td>";
    echo "<td>". $row['naam'] . "</td>";
    echo "<td>". $row['nationaliteit'] . "</td>";
    echo "<td>". $row['waarde'] . "</td>";
    echo "<td><input type=\"checkbox\" name=\"checkbox\" value=\"yes\" >" .$row['geselecteerd'] . "</td>";
             
    echo "</tr>";
}
echo "</table>";


Dit werkt prima, dan wil ik controleren of de checkbox is aangeklikt, dat probeer ik op de volgende wijze

PHP:
1
2
3
4
5
6
7
8
9
10
i[b]f(isset($_POST['checkbox']) && 
    $_POST['checkbox'] == 'checked') 
    {
        $geselecteerd =1;
    }
    else
    {
        $geselecteerd =0;
    }
?>  


Dat werkt volgens mij niet, hieronder zet ik mijn ingeven knop en vervolgens schrijf ik ze in de andere database

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<form>
<input type ="submit" name="submit" value="ingeven" />
</form>


<?php

$submit = $_GET['submit'];
if($submit == 1){
    
    
while($geselecteerd==1){
    
$sql_ploeg ="INSERT INTO testtemp (ploeg, naam, waarde, nationaliteit) VALUES (ploeg, naam, waarde, nationaliteit)";
}
    $result = mysqli_query($connection,$sql_ploeg);
    mysqli_close($connection);
}

?> 


En dan heb ik een 2de pagina waar ik de nieuwe database uitlees

PHP:
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
<body>

<?php
$connection = mysqli_connect("localhost","user","wachtwoord","database");

$sql ="SELECT ploeg, naam, waarde, nationaliteit FROM testtemp";
    
    $result = mysqli_query($connection,$sql);
    
    echo "<table border = 1px><tr><td>ploeg</td><td>naam</td><td>nat</td><td>waarde</td></tr>";

    while($row = mysqli_fetch_array($result)){
    echo "<tr>";
    echo "<td>". $row['ploeg'] . "</td>";
    echo "<td>". $row['naam'] . "</td>";
    echo "<td>". $row['nationaliteit'] . "</td>";
    echo "<td>". $row['waarde'] . "</td>";
    
             
    echo "</tr>";
}
echo "</table>";

?>

</body>
</html>


Maar hieruit geeft hij mij alleen de table-heading weer. Wss maak ik wel heel wat fouten tegen de wetten van de php, maar zouden jullie mij mss op weg kunnen helpen?

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 15:27
Als je je code tussen [php] en [html] tags zet is het in ieder geval beter leesbaar.

Je lijkt goed op weg te zijn, alleen mis je het stukje waar je de gegevens terug in de database opslaat.

Je database en PHP code zijn gescheiden. Met de mysli-functies kun je data uit die database lezen en schrijven. Het lezen gedeelte heb je op orde, nu het schrijven nog.
Ga eens opzoek naar UPDATE-queries, of lees een eenvoudige tutorial over php en mysql.

Acties:
  • 0 Henk 'm!

  • vinbrutus
  • Registratie: September 2005
  • Laatst online: 24-06 23:17
dat leest idd gemakkelijker, maar als ik het goed begrijp zou ik iets moeten vinden om het resultaat van het onderstaande stukje php terug te sturen naar de eerste database?

PHP:
1
2
3
4
5
6
7
8
9
10
if(isset($_POST['checkbox']) &&  
    $_POST['checkbox'] == 'checked')  
    { 
        $geselecteerd =1; 
    } 
    else 
    { 
        $geselecteerd =0; 
    } 
?>

Acties:
  • 0 Henk 'm!

  • alwinuzz
  • Registratie: April 2008
  • Nu online
Volgens mij moeten op pagina 1 de checkboxes en de dubmit knop allemaal in een <form> tag. Ik zou een <form> tag om de hele <table> heen doen. Zorg er wel voor dat die form post naar pagina 2 en niet naar zichzelf.

Verder heb je een een checkbox groep nodig op pagina 1, kijk daarvoor even op http://www.html-form-guid...rm/php-form-checkbox.html bij het kopje 'Check box group'.

Je krijgt dan iets als:
PHP:
1
 echo "<td><input type='checkbox' name='checkbox[]' value='$row[ID]' > $row[geselecteerd] </td>";

(zit vast een klein foutje in)

Edit: wat is het ID van elke row?

[ Voor 4% gewijzigd door alwinuzz op 28-10-2010 08:48 ]


Acties:
  • 0 Henk 'm!

  • vinbrutus
  • Registratie: September 2005
  • Laatst online: 24-06 23:17
Ik heb er een ID inzitten met auto-increment en hij begint precies met 3

Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Vergeet niet dat een checkbox niet meegepost wordt als 'ie niet is aangevinkt.

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • vinbrutus
  • Registratie: September 2005
  • Laatst online: 24-06 23:17
Hoe bedoel je?

In de tweede database? Dat zou niet erg zijn want daar heb ik eigenlijk maar enkele gegevens nodig van de rijd die aangevinkt is.

Acties:
  • 0 Henk 'm!

  • skabouter
  • Registratie: Oktober 2000
  • Laatst online: 17:44

skabouter

Skabouter

PHP:
1
$_POST['checkbox'] == 'checked')


Wordt niet gehaald aangezien de value van de checkbox yes is:

PHP:
1
echo "<td><input type=\"checkbox\" name=\"checkbox\" value=\"yes\" >" .$row['geselecteerd'] . "</td>";


Als je 'checked' wijzigt in 'yes' kom je al wat verder!
Verder kun je om dit soort zaken te debuggen de regel var_dump($_POST); bovenaan je script plaatsen om zo te kijken welke variabelen gepost worden met welke waarden!

[ Dislect ]


Acties:
  • 0 Henk 'm!

  • Nahata
  • Registratie: Juni 2004
  • Laatst online: 25-06 13:58
AtleX schreef op donderdag 28 oktober 2010 @ 09:00:
Vergeet niet dat een checkbox niet meegepost wordt als 'ie niet is aangevinkt.
PHP:
1
2
3
<?php
if($_POST['checkbox'] == "checked") { $geselecteerd = 1; } else { $geselecteerd = 0; }
?>


Of probeer is
PHP:
1
var_dump($_POST);
te doen als er gepost word, of echo wat variabelen. debuggen en zo :).

Editje: Skabouter was net iets eerder :9

[ Voor 4% gewijzigd door Nahata op 28-10-2010 09:15 ]


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Nahata schreef op donderdag 28 oktober 2010 @ 09:13:
[...]

PHP:
1
2
3
<?php
if($_POST['checkbox'] == "checked") { $geselecteerd = 1; } else { $geselecteerd = 0; }
?>


Of probeer is
PHP:
1
var_dump($_POST);
te doen als er gepost word, of echo wat variabelen. debuggen en zo :).

Editje: Skabouter was net iets eerder :9
Ik weet niet wat je hiermee wilt zeggen, maar een checkbox wordt NIET gepost als 'ie niet aangevinkt is, controleer maar.

Jouw eerste voorbeeldje gaat een keiharde notice geven over een undefined index. @TS: Lees je aub eens in over het gebruik van error_reporting(), jouw code zal niet bepaald foutloos draaien.

[edit]

Code van mijn voorbeeld, voor toekomstige bezoekers van dit topic:
PHP:
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
<?php
error_reporting(E_ALL);

$checked = isSet($_POST["checkbox"]);
?>
<!DOCTYPE html>
<html>
        <head>
                <title>Checkbox POST</title>
        <head>
        <body>
                <h1>Checkbox POST</h1>

                <?php
                if (strToLower($_SERVER["REQUEST_METHOD"]) === "post")
                {
                ?>
                        <p>The checkbox is <b><?php echo ($checked) ? "checked" : "not checked"; ?></b>.</p>
                <?php
                }
                ?>

                <form method="post">
                        <p><input type="checkbox" name="checkbox" value="checked"></p>
                        <p><input type="submit" value="Check"></p>
                </form>

                <h2>Code</h2>

                <?php echo highlight_file(__FILE__, true); ?>

                <p><small>(Example made for <a href="http://gathering.tweakers.net/forum/list_messages/1431893">this topic</a> on <a href="http://gathering.tweakers.net/forum/">GoT</a>.)</small></p>
        </body>
</html>

[ Voor 98% gewijzigd door AtleX op 28-10-2010 09:40 ]

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • vinbrutus
  • Registratie: September 2005
  • Laatst online: 24-06 23:17
Hey atlex,

Jij kent er duidelijk heel wat van :D
kan ik die $checked nu niet gebruiken om mijn $geselecteerd al da niet te setten?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Waar hoort mijn topic?
SEA >> PRG

Verder: We verwachten hier op GoT wel wat eigen inzet; dat betekent zelf debuggen (Debuggen: Hoe doe ik dat?) en zelf moeite doen. We zitten hier niet om handjes vast te houden ;) Als ik je een tip mag geven: Volg eens een fatsoenlijke PHP tutorial of 2 want dit is toch wel erg basic.

[ Voor 12% gewijzigd door RobIII op 28-10-2010 10:07 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

vinbrutus schreef op donderdag 28 oktober 2010 @ 09:45:
Hey atlex,

Jij kent er duidelijk heel wat van :D
kan ik die $checked nu niet gebruiken om mijn $geselecteerd al da niet te setten?
PHP:
1
$geselecteerd = isSet($_POST["checkbox"]);

;)

En dan loop je al meteen tegen het volgende probleem aan. In die loop schrijf je een aantal table rows uit met een checkbox erin, al die checkboxes heten "checkbox". Hoe ga jij na de POST die verschillende checkboxes van elkaar onderscheiden?

Het 2e en 3e stukje code dat je in de startpost hebt geplaatst snap ik ook niet helemaal. Staan die op 1 pagina? Lijkt me wel, want anders is $geselecteerd niet beschikbaar in het 3e stukje. Daar zit een endless loop in, want als $geselecteerd "1" is (waarom "1" en niet gewoon true of false?) dan blijft die while-loop altijd lopen totdat je een error krijgt dat je max_execution_time is overschreden.

[ Voor 25% gewijzigd door AtleX op 28-10-2010 10:26 ]

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • vinbrutus
  • Registratie: September 2005
  • Laatst online: 24-06 23:17
ja die staan idd op dezelfde pagina, ik wou eigenlijk zeggen als hij iets geselecteerd tegenkomt dat hij moet schrijven in de andere database, maar ik doorloop daar ook nergens de database dus da klopt niet echt.

Ik zal eerst nog maar wat boekjes lezen vooraleer ik er aan verder doe :D
Pagina: 1