login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Probleem met WHILE

Offline sobko - 13/02/2009 14:11 (laatste wijziging 13/02/2009 14:19)
Avatar van sobkoNieuw lid hoi

op men site kan je een form invullen in een popup venster (hier kan je een plan naam invullen)

nu wil ik controleren of er wel iets ingevuld word en of hetgeen dat ingevuld word niet al in de database zit

ik doe dit met volgens script
  1. <?php
  2. require 'mysqldb.php';
  3. $sql="SELECT * FROM plan WHERE Username='".$_SESSION['Username']."'";
  4. if ($result=mysql_query($sql))
  5. {
  6. while ($gegevens=mysql_fetch_assoc($result))
  7. {
  8. if ($_POST['plan_naam'] == '' )
  9. {
  10. echo 'leeg';
  11. }
  12. elseif ($_POST['plan_naam'] == $gegevens['naam_plan'])
  13. {
  14. echo 'in gebruik';
  15. }
  16. else
  17. {
  18. echo $_SESSION['Username'];
  19. }
  20. }
  21. }
  22. else
  23. {
  24. echo 'Foutje: '.mysql_error().'.<br>';
  25. echo 'sql';
  26. }
  27. ?>

Maar ik krijg na op de knop van het formulier te drukken enkel een wit scherm

als ik de while weg laat en ga vergelijken met een bepaald woord wil hij wel dus bijvoorbeeld zo
  1. <?php
  2. require 'mysqldb.php';
  3. if ($_POST['plan_naam'] == '' )
  4. {
  5. echo 'leeg';
  6. }
  7. elseif ($_POST['plan_naam'] == 'woord')
  8. {
  9. echo 'in gebruik';
  10. }
  11. else
  12. {
  13. echo $_SESSION['Username'];
  14. }
  15. ?>

dus volgens mij ligt het probleem bij de while

althans gebruik ik de while loop in tal van andere scripts ook op dezelfde manier en daar werkt hij wel!

dacht eerst dat het aan de browser lag maar heb op alle bekende browser getest en nergens wil hij werken met het eerste script

zelfs met de erorrs aanstaan krijg ik enkel een wit scherm

alle hulp is welkom

mvg johan

dit is het formulier vanwaar het php script word opgeroepen
  1. <html>
  2. <head>
  3. <title>Naam van het nieuwe aanvalsplan</title>
  4. </head>
  5. <body>
  6. <form action="plan_aanmaken.php" method="POST">
  7. <table border="0" width="100%" height="100%">
  8. <tr>
  9. <td align="center" valign="center">
  10. <table border="0" width="400" height="100">
  11. <tr>
  12. <td width="100" align="right">
  13. Geef een plannaam in:
  14. </td>
  15. <td width="100" align="left">
  16. <input type="text" name="plan_naam" size="20">
  17. </td>
  18. </tr>
  19. <tr>
  20. <td>
  21. </td>
  22. <td align="left">
  23. <input type="submit" name="knop" value="Plan aanmaken">
  24. </td>
  25. </tr>
  26. </table>
  27. </td>
  28. </tr>
  29. </table>
  30. </form>
  31. </body>
  32. </html>

6 antwoorden

Gesponsorde links
Offline Martijn - 13/02/2009 14:18
Avatar van Martijn Crew PHP waarom de while? dat is wat omslachtig, want dan selecteer je een hele database.
Je kunt beter doen:
  1. SELECT id FROM plan WHERE Username='".$_SESSION['Username']."' AND plan_naam='".$_POST['plan_naam']."' LIMIT 1


en dan $aantal = mysql_num_rows($query);

is $aantal 1, dan is die naam al in gebruik, anders niet.

Op die manier selecteer je maar 1 rij, wat veel beter is 
Offline Wim - 13/02/2009 14:19
Avatar van Wim Crew algemeen Je kan dit beter met een count doen ipv ALLE gegevens te overlopen en dan alle waardes te gaan vergelijken:

  1. <?php
  2. require 'mysqldb.php';
  3. $sql="SELECT COUNT(plan_naam) AS aantal_plannen FROM plan WHERE Username='".$_SESSION['Username']."' AND naam_plan='".mysql_real_escape_string($_POST['plan_naam'])."'";
  4. if ($result=mysql_query($sql))
  5. {
  6. if($result['aantal_plannen'] < 1)
  7. {
  8. echo 'Plan bestaat niet';
  9. }
  10. else
  11. {
  12. echo 'plan bestaat al!';
  13. }
  14. }
  15. else
  16. {
  17. echo 'Foutje: '.mysql_error().'.<br>';
  18. echo 'sql';
  19. }
  20. ?>
Offline sobko - 13/02/2009 14:30 (laatste wijziging 13/02/2009 14:38)
Avatar van sobko Nieuw lid ik heb nu dit geprobeerd

  1. <?php
  2. require 'mysqldb.php';
  3. $sql="SELECT COUNT(plan_naam) AS aantal_plannen FROM plan WHERE Username='".$_SESSION['Username']."' AND naam_plan='".mysql_real_escape_string($_POST['plan_naam'])."'";
  4. if ($_POST['plan_naam'] == '' )
  5. {
  6. echo 'leeg';
  7. }
  8. else
  9. {
  10. if ($result=mysql_query($sql))
  11. {
  12. if($result['aantal_plannen'] < 1)
  13. {
  14. echo 'goed zo'.$_SESSION['Username']. 'tis gelukt';
  15. }
  16. else
  17. {
  18. echo 'in gebruik!';
  19. }
  20. }
  21. else
  22. {
  23. echo 'Foutje: '.mysql_error().'.<br>';
  24. echo 'sql';
  25. }
  26. }
  27. ?>


maar werkt nog niet enkel een wit scherm

dan zal het nog wel ergens anders aan liggen
Offline Wim - 13/02/2009 14:33
Avatar van Wim Crew algemeen er is geen enkel scenario mogelijk waardoor je geen output zou krijgen -> ergens een foutje (parse error)

zet dit even in je .htaccess:
Citaat:
php_flag display_errors on
Offline Koen - 13/02/2009 14:33
Avatar van Koen PHP expert $result is een recourse, en dus geen array.

Je moet eerst de informatie fetchen! 
(mysql_fetch_row of iets dergelijks..)
Offline sobko - 13/02/2009 15:09
Avatar van sobko Nieuw lid <?php
session_start();
require 'mysqldb.php';
$sql="SELECT COUNT(naam_plan) AS aantal_plannen FROM plan WHERE Username='".$_SESSION['Username']."' AND naam_plan='".mysql_real_escape_string($_POST['plan_naam'])."'";
if ($_POST['plan_naam'] == '' )
{
echo 'leeg';
}
else
{
if ($result=mysql_query($sql))
{
if($resulta=mysql_fetch_array($result))
{
if ($resulta['aantal_plannen'] < 1)
{
echo 'goed zo'.$_SESSION['Username']. 'tis gelukt';
}
else
{
echo 'in gebruik!';
}
}
}
else
{
echo 'Foutje: '.mysql_error().'.<br>';
echo '$sql';
}
}
?>

de oplossing denk ik
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.391s