Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

Connecten naar mysql database (dejavu)

Anoniem
sdk
8 antwoorden
  • Probeer de eerste tutorial te doen van mysql (zon beetje 1e result op google van freemasternogwat) en die gaat al mis. Krijg toch een beetje een dejavu gevoel omdat ik ooit aleens zoeits als dit heb gedaan (alleen toen niet op eigen mysql server) en toen klopte er ook iets niet.

    [code:1:b5441b5ebf]<html>

    <body>



    <?php



    if ($submit) {

    // process form

    $db = mysql_connect("localhost", "root");

    mysql_select_db("films",$db);

    $sql = "INSERT INTO films (titel,genre,cijfer,locatie) VALUES ('$titel','$genre','$cijfer','$locatie')";

    $result = mysql_query($sql);

    echo "Thank you! Information entered.
    ";

    } else{



    // display form



    ?>



    <form method="post" action="<?php echo $PHP_SELF?>">

    Titel:<input type="Text" name="titel"><br>

    Genre:<input type="Text" name="genre"><br>

    Cijfer:<input type="Text" name="cijfer"><br>

    Locatie:<input type="Text" name="locatie"><br>

    <input type="Submit" name="submit" value="Enter information">

    </form>



    <?php



    } // end if



    ?>



    </body>



    </html>[/code:1:b5441b5ebf]

    De error zit in line 13



    [quote:b5441b5ebf]Notice: Undefined variable: submit in C:\server\Apache\Apache2\htdocs\films\toevoegen.php on line 13
    [/quote:b5441b5ebf]
    dat is de line met het connecten

    Heb die oude code wel gevonden maar deze was bijna hetzelfde op wat kleine dingetjes na:

    [code:1:b5441b5ebf] mysql_connect (localhost,jochem,xxxx);
    mysql_select_db (jochem_betalen);

    $select1 = mysql_query("SELECT * FROM betalen ORDER BY VOLG DESC");
    [/code:1:b5441b5ebf]
    maar geloof niet dat die ooit heeft gewerkt had wel een werkende voor iets anders maar die kan ik niet meer vinden :-? (dat krijg je met 320 gb aan ruimte op je pc).

    edit: ok topic gevonden, toen zat het probleem in het feit dat alles moet worden omgescreven naar _get["variabele" ipv $variabele. Maar nu gaat het al fout voor het submitten zeg maar. Zie dat de fout zogenaamd in submit zit :-? heb er trouwens eens op gedrukt dan krijg ik:

    [quote:b5441b5ebf]Forbidden
    You don't have permission to access /films/<br /><b>Notice</b>: Undefined variable: PHP_SELF in <b>C:/server/Apache/Apache2/htdocs/films/toevoegen.php</b> on line <b>39</b><br /> on this server.


    ——————————————————————————–

    Apache/2.0.54 (Win32) Server at 192.168.1.14 Port 80[/quote:b5441b5ebf]
  • Die fout is toch wel duidelijk? Het is trouwens geen Warning maar een Notice, in principe werkt het script wel maar het is niet echt netjes

    Om je tweede fout op te lossen moet PHP_SELF ook vervangen worden door $_SERVER['PHP_SELF'].

    Hij geeft aan, dat hij de variabele $submit niet kent, en dat is logisch. Immers, nergens wordt een waarde toegekend aan $submit.

    Dit komt omdat submit uit een form komt die met post verstuurd wordt, dus het wordt dan $_POST['submit']. Overgens zegt if($submit) niet zoveel. Je kunt beter if (isset($_POST['submit'])) gebruiken. die controleert immers of je form verzonden is. Isset bekijkt of een waarde geset is en returned dan een true, die door de if verwerkt wordt.

    Ik heb je code eventjes lichtelijk herschreven en online gezet. Let wel op dat in het voorbeeld dat je gaf root connect met mysql, zonder wachtwoord. Ik hoop voor je dat dit op een testserver staat. Maar gezien je foutmelding is dat inderdaad zo.

    Overgens gelden voor de variabele in je query ook dat $titel vervangen moet worden door $_POST['titel']. Om hier meer over te weten te komen zou ik eens iets lezen over register_globals.
  • Erg bedankt, ja het is op een test server (eigen mysql server) heb daar nog geen wachtwoord ingestelt voor de localhost. Nu nog even het wijzig script op gelijke wijze aanpassen en zorgen dat apache niet forbidden geeft.
  • hmm

    [quote:3e06ff77b0]Array
    (
    [titel] => titeltest
    [genre] => genretest
    [cijfer] => 2
    [locatie] => testlocatie
    [submit] => Enter information
    [pma_theme] => original
    [pma_collation_connection] => utf8_general_ci
    [pma_lang] => nl-utf-8
    [pma_charset] => iso-8859-1
    )


    Notice: Undefined variable: titel in C:\server\Apache\Apache2\htdocs\films\toevoegen.php on line 32

    Notice: Undefined variable: genre in C:\server\Apache\Apache2\htdocs\films\toevoegen.php on line 32

    Notice: Undefined variable: cijfer in C:\server\Apache\Apache2\htdocs\films\toevoegen.php on line 32

    Notice: Undefined variable: locatie in C:\server\Apache\Apache2\htdocs\films\toevoegen.php on line 32
    Thank you! Information entered. [/quote:3e06ff77b0]
    Ik gebruik php 4.4 misschien dat die nog wel met die oude methode werkt (weet het niet hoor…)?

    In phpmyadmin staat btw wel 1 record nu (weet niet hoe je in phpmyadmin kan zien wat er daadwerkelijk instaat…).

    Heb nog niks aan portforwarding gedaan maar misschien werkt het al (site was al wel te zien hoorde ik) http://dcswow.servegame.org/phpmyadmin
    http://dcswow.servegame.org/films/toevoegen.php
  • php werkt dus met de nieuwe methode.

    Het komt er op neer dat ze bij nieuwere versie van php een configuratieverandering hebben gedaan. Standaard staat register_globals nu op off waardoor $titel nu niet meer gelijk is aan $_POST['titel']. Vroeger was dat omgekeerd en stond het op on.

    Wanneer je in dat in je query veranderd, ook voor $genre, $locatie en $cijfer dat moet het werken. Dat is dus ook weer precies zoals de foutmelding tegen je zegt.
  • [quote:3b8ae2a8d5="Japaveh"]php werkt dus met de nieuwe methode.

    Het komt er op neer dat ze bij nieuwere versie van php een configuratieverandering hebben gedaan. Standaard staat register_globals nu op off waardoor $titel nu niet meer gelijk is aan $_POST['titel']. Vroeger was dat omgekeerd en stond het op on.

    Wanneer je in dat in je query veranderd, ook voor $genre, $locatie en $cijfer dat moet het werken. Dat is dus ook weer precies zoals de foutmelding tegen je zegt.[/quote:3b8ae2a8d5]is het met oog op andere applicaties zoals phpbb niet verstandig om dit aan te zetten of is dat niet nodig voor phpbb?

    btw bedoel je:
    $sql = "INSERT INTO films (titel,genre,cijfer,locatie) VALUES ($_POST['titel'],$_POST['genre'],$_POST['cijfer'],$_POST['locatie'])";

    edit: heb op irc wat hulp gevonden, zo was het alleen dan met " " eromheen.
  • Heb nu bij het toevoegen script alles omgezet maar bij het wijzigen van het script loop ik vast op het laten zien, zo rond 66 en 91 weet ik niet goed of ik alles goed heb 'geupdate" In ieder geval is de uitkoms van de echo's onderin:

    <br /><b>Notice</b>: Undefined index: titel in <b>C:\server\Apache\Apache2\htdocs\films\wijzig3.php</b> on line <b>126</b><br />

    http://pastebin.com/341238

    Hoop dat pastebin lang info bewaard zo niet dan post ik het wel los.
  • Probeer eens iets als dit boven je form te zetten

    [code:1:45f99b166e]
    if (isset($_POST['title'])) {
    $title = $_POST['title'];
    } else {
    $title = '';
    }
    [/code:1:45f99b166e]
    En dat natuurlijk voor al je variabelen.
    Het probleem zit er in dat je $_POST['xx'] wilt laten zien terwijl die (nog) niet bestaat. In principe levert dat geen problemen op, maar omdat je error_level op het hoogste niveau staat geeft php een NOTICE terug dat hij die variabele niet kent. Door het bovenstaande stukje code van mij check je of die
    (globale) variabele bestaat en maak je er een locake variabele van. Bestaat de globale variabele niet, dan is je lokale variabele leeg, maar hij is wel geset en je kunt hem dus echoen.

    Overigens is er een tweede oplossing die wel erg vies is. Dat is je error level lager te zetten zodat je geen notices meer ziet.
    Zet dan dit bovenaan je code
    [code:1:45f99b166e]
    error_reporting(E_ALL ^ E_NOTICE);
    [/code:1:45f99b166e]

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.