Wat doe ik fout? 2.0

Pagina: 1
Acties:
  • 672 views

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • MarnickS
  • Registratie: Februari 2016
  • Laatst online: 13:08
Ik ben bezig met een formulier voor mijn site, maar ik heb nog geen ervaring met PHP en MySQL, alleen met HTML en CSS.
Ik ben (erg lang) bezig geweest met het lezen van informatie, en ik heb tutorials gekeken.
Toen ben ik begonnen met het maken van het script.
Toen ik klaar was en begon met testen kwam het eerste probleem al met het verzenden van de informatie, als ik op verzend klik laad de pagina opnieuw en is het formulier weer leeg. Ook geeft de site geen foutmelding als ik een veld niet invul.
En het laatste probleem is dat ik wanneer ik de mysql database wil bekijken, ik de melding: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) krijg.

De code van de HTML pagina waar het formulier op staat:

code:
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
   <!DOCTYPE html>

<html lang="nl">

<head>
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<meta charset="utf-8">
<meta name="Overzicht van alle Zeeaquariumwinkels/speciaalzaken" content="Het is altijd moeilijk een aquariumwinkel in de buurt te vinden, hier vind je het grootste overzicht van zeeaquariumwinkels">
<meta name="viewport" content="initial-scale=1.0, width=device-width">
<link rel="stylesheet" href="style.css" type="text/css" media="screen">
</head>
    
<body>


<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-96533812-1', 'auto');
  ga('send', 'pageview');
</script>


<!-- Go to www.addthis.com/dashboard to customize your tools -->
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5820291eee215f05"></script>


<header><DIV ALIGN="center"><IMG SRC="https://zeewateraquarium.info/images/banner.jpg" ALT="BANNER" style="width: 600px; max-width: 99%; height: auto;"></DIV></header>
   

<nav>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="opstarten.html">Opstarten</a></li>
<li><a href="bewoners.html">Bewoners</a></li>
<li><a href="techniek.html">Techniek</a></li>
<li><a href="winkels.html">Winkels</a></li>
</ul>
    </nav>

<div class="midden">
    
<article>

<h1>Nieuwe winkel toevoegen</h1>
<h3>Weet je een winkel die niet in het overzicht staat? Vul dan dit formulier in.</h3>

<form method="post">
<form method="post" action="toevoegen.php">
<form method="post" action="toevoegen.php?titel=formulier is verzonden">
<form method="post" action="?p=toevoegen&t=formulier is verzonden">
<p>Jouw naam:</p>
    <input type="text" name="jenaam" />
<p>Jouw E-Mailadres:</p>
    <input type="text" name="mail" />
<p>Naam winkel:</p>
    <input type="text" name="naam" />
<p>Adres winkel:</p>
    <input type="text" name="adres" />
<p>Provincie:</p>
    <select name="provincie"><option value="friesland">Friesland</option><option value="groningen">Groningen</option><option value="drenthe">Drenthe</option><option value="overijssel">Overijssel</option><option value="flevoland">Flevoland</option><option value="noordholland">Noord Holland</option><option value="gelderland">Gelderland</option><option value="utrecht">Utrecht</option><option value="zuidholland">Zuid Holland</option><option value="limburg">Limburg</option><option 
    value="zeeland">Zeeland</option></select>
<p>Wat verkoopt de winkel:</p>
    <input type="checkbox" name="wat" value="vis"> Vissen<br>
    <input type="checkbox" name="wat" value="koraal"> Koralen<br>
    <input type="checkbox" name="wat" value="aquaria"> Aquaria<br>
    <input type="checkbox" name="wat" value="techniek"> Techniek<br>
    <input type="checkbox" name="wat" value="overig"> Overige<br>
<p>Omschrijving van de winkel:</p>
    <textarea name="omschrijving" rows="5" cols="30"></textarea><br>
<input type="submit" value="Verzenden" name="zend_form" />

</article> 

</div>

<footer>
<p><p>© 2017 Zeewateraquarium.info</p></p>
</footer>

</div>

</body>

</html>

De pagina php pagina:
code:
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
   <?php 
if(mysql_connect('rdbms.strato.de','root','')) 
  { 
    mysql_select_db('sitemasters') or die(mysql_error()); 
  } 
else 
  { 
    echo 'Kan geen verbinding maken'; 
    exit; 
  }
if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST)) 
  {
$aFouten = array(); 
    if($_POST['jenaam'] == '') 
      { 
        $aFouten[] = 'Je hebt geen naam ingevuld'; 
      } 
    if($_POST['mail'] == '') 
      { 
        $aFouten[] = 'Je hebt geen emailadres ingevuld'; 
      } 
    if($_POST['naam'] == '') 
      { 
        $aFouten[] = 'Je hebt de naam van de winkel niet ingevuld'; 
      } 
    if($_POST['adres'] == '') 
      { 
        $aFouten[] = 'Je hebt geen adres ingevuld'; 
      } 
    if($_POST['naam'] == '') 
      { 
if(count($aFouten) != 0) 
          { 
            echo 'De volgende fouten zijn opgetreden: <br /><br />'; 
            for($Fi = 0; $Fi < count($aFouten); $Fi++) 
              { 
                echo $aFouten[$Fi].'<br />'; 
              } 
            echo '<br />Klik <a href="javascript:history.go(-1);">hier</a> om terug te keren';
} 
        else 
          { 
          mysql_query("INSERT INTO formulier (jenaam,mail,naam,adres) VALUES ('".addslashes($_POST['jenaam'])."','".addslashes($_POST['mail'])."','".addslashes($_POST['naam'])."','".$_POST['adres']."')") or die (mysql_error()); 
           
          echo 'De gegevens zijn succesvol opgeslagen in de database'; 
          }


De pagina waar de MySQL database zou moeten komen:

code:
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
<?php 
mysql_connect('rdbms.strato.de','root',''); 
mysql_select_db('sitemasters') or die (mysql_error()); 

if(mysql_result(mysql_query("SELECT COUNT(id) FROM `formulier`"),0) == 0) 
  { 
    echo 'Er staan nog geen berichten in de database'; 
  } 
else 
  { 
  ?>

<table> 
<tr> 
<td>jenaam:</td> 
<td>mail:</td> 
<td>naam:</td> 
<td>adres:</td> 
<td>provincie:</td> 
<td>wat:</td> 
<td>omschrijving:</td> 
</tr>

<?php 
  $qSelect_berichten  = mysql_query('SELECT * FROM `formulier`') or die (mysql_error()); 
  while($aBerichten = mysql_fetch_array($qSelect_berichten)) 
    { 
      echo '<tr> 
              <td>'.$aBerichten['jenaam'].'</td> 
              <td>'.$aBerichten['mail'].'</td> 
              <td>'.$aBerichten['naam'].'</td> 
              <td>'.$aBerichten['adres'].'</td> 
              <td>'.$aBerichten['provincie'].'</td> 
              <td>'.$aBerichten['wat'].'</td>
              <td>'.$aBerichten['omschrijving'].'</td>
            </tr>'; 
    } 
     echo '</table>'; 
   } 
?>

Alle reacties


Acties:
  • 0 Henk 'm!

  • eric.1
  • Registratie: Juli 2014
  • Laatst online: 16:20
Om bij het begin te beginnen:

HTML:
1
2
3
4
<form method="post">
<form method="post" action="toevoegen.php">
<form method="post" action="toevoegen.php?titel=formulier is verzonden">
<form method="post" action="?p=toevoegen&t=formulier is verzonden">

Wat is hier je bedoeling?
Haal er eens drie weg, bijv. 1e, 3e en 4e.

HTML:
1
</Form>

Het is ook wel handig om de form af te sluiten (zie ik nu nergens staan?).

Trouwens, als dat je werkelijk gebruikte database gegevens zijn....haal ze even weg hier (anonimiseer het). Controleer wel voor jezelf of die gegevens juist zijn. Kleine tip trouwens; gebruik nooit 'root' als db user...zeker niet zonder ww.

Edit: Draait je DB trouwens ergens anders dan je website zelf? Controleer trouwens ook of je database uberhaupt draait.

[ Voor 8% gewijzigd door eric.1 op 18-06-2017 13:05 ]


Acties:
  • 0 Henk 'm!

  • Rmg
  • Registratie: November 2003
  • Nu online

Rmg

Sowieso meerdere forms en post actions wat al raar is.
En ik zie geen eindtag voor je form.

Deel je projectje eens op in deelproblemen. Maak eerst een werkend html formulier,
maak dan een pagina die de waardes weergeeft die je hebt ingevuld,
voeg dan form validatie toe,
dan wegschrijven naar db, dan database inhoud weergeven. Etc. Etc.

Nu probeer je alles tegelijk, je verliest dan gewoon overzicht en je hebt geen idee of een wijziging je problemen kleiner of juist groter maakt.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Tsja, als jij gewoon gaat copy/pasten zonder echt de feedback te lezen die je gekregen hebt dan ga ik dat ook doen. ;)
RobIII schreef op zondag 18 juni 2017 @ 11:27:
Wat je o.a. fout doet is je code dumpen zonder een topictitel de de lading ook maar een beetje dekt (en zonder code-tags notabene), waarvan je niet eens de moeite hebt genomen het te beperken tot de relevante delen, niet aangeeft wat je zélf al hebt geprobeerd/gezocht/gevonden en er van uit gaan dat er hier wel iemand even naar die bult ongefornatteerde code wil gaan staren en je probleem oplossen terwijl de foutmelding vrij duidelijk is en de plek wáár 't zich voordoet nog duidelijker. En als jij dan niet de moeite neemt daar zelf 3 seconden over na te denken... dan heb je zo'n beetje élke regel uit ons Devschuur® Beleid met voeten getreden... Lees naast voorgenoemde meteen even onze Quickstart en probeer het dan, als dat nog nodig is, gerust met een nieuw topic nog eens.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Dit topic is gesloten.