Likes Likes:  0
Resultaten 1 tot 15 van de 17
Pagina 1 van de 2 1 2 LaatsteLaatste
Geen

Onderwerp: php mysql vraag

  1. #1
    bjorri
    php mysql vraag
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    php mysql vraag

    Hoi,

    Ik probeer vanaf een invulformulier een tekst op te laten slaan als .txt
    bestand. Is dat überhaupt mogelijk of moet ik een heel andere oplossing
    verzinnen. In welke richting moet ik het dan zoeken.


    $docname="test.txt";
    $fileSize= strlen($notitie);
    $fileType="text/plain";
    $notitie="test of dit wil";

    $query = "INSERT INTO document (naam, size, type, bestand) " .
    "VALUES ($docname, $fileSize, $fileType, $notitie)";
    mysql_query($query) or die (mysql_error());

    Dit geeft dan de foutmelding:

    You have an error in your SQL syntax; check the manual that corresponds
    to your MySQL server version for the right syntax to use near 'of dit
    wil)' at line 1

    De betreffende velden in de tabel document:
    id = integer (autoincrement,enz)
    naam=varchar(45)
    size=integer
    type=varchar(45)
    bestand=mediumblog

    Hopelijk kan ik hier weer wat van leren. Bij voorbaat dank voor de aandacht.

    bjorri.

  2. #2
    Rik
    php mysql vraag
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: php mysql vraag

    bjorri wrote:
    > Hoi,
    >
    > Ik probeer vanaf een invulformulier een tekst op te laten slaan als
    > .txt bestand. Is dat überhaupt mogelijk of moet ik een heel andere
    > oplossing verzinnen. In welke richting moet ik het dan zoeken.
    >
    >
    > $docname="test.txt";
    > $fileSize= strlen($notitie);
    > $fileType="text/plain";
    > $notitie="test of dit wil";
    >
    > $query = "INSERT INTO document (naam, size, type, bestand) " .
    > "VALUES ($docname, $fileSize, $fileType, $notitie)";
    > mysql_query($query) or die (mysql_error());
    >
    > Dit geeft dan de foutmelding:
    >
    > You have an error in your SQL syntax; check the manual that
    > corresponds
    > to your MySQL server version for the right syntax to use near 'of dit
    > wil)' at line 1


    Strings moeten altijd gequote worden...
    $query = "INSERT INTO `document` (`naam`, `size`, `type`, `bestand`)
    VALUES ('{$docname}', {$fileSize}, '{$fileType}', '{$notitie}')";

    Dit zal het trouwens alsnog niet opslaan als *.txt bestand natuurlijk, dit
    zet het gewoon in de database.
    --
    Rik Wasmus



  3. #3
    Maarten Wierda
    php mysql vraag
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: php mysql vraag

    bjorri schreef:

    > Hoi,


    Dag,

    > Ik probeer vanaf een invulformulier een tekst op te laten slaan als
    > .txt bestand. Is dat überhaupt mogelijk of moet ik een heel andere
    > oplossing verzinnen. In welke richting moet ik het dan zoeken.


    Het is inderdaad mogelijk tekst vanuit een formulier op te slaan als
    tekstbestand. Om te weten of dat de juiste oplossing is, is het
    natuurlijk handig te vermelden waarom je data wil opslaan? Dan kunnen de
    kenners hier, of misschien ik wel, je adviseren op welke manier je dat
    het beste kunt bewerkstelligen.

    > $docname="test.txt"; $fileSize= strlen($notitie);
    > $fileType="text/plain"; $notitie="test of dit wil";
    >
    > $query = "INSERT INTO document (naam, size, type, bestand) " .
    > "VALUES ($docname, $fileSize, $fileType, $notitie)";
    > mysql_query($query) or die (mysql_error());


    Hier probeer je bijvoorbeeld de inhoud van het tekstbestand uit te lezen
    en toe te voegen aan de tabel 'document'. Dit doet me vermoeden dat je
    die data uit het formulier eigenlijk gewoon direct wil opslaan in je
    database, en dat je vermoedde dat de tussenkomst van een tekstbestand
    daarbij noodzakelijk is, klopt dat?


    --
    Cheers,
    Maarten Wierda

  4. #4
    bjorri
    php mysql vraag
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: php mysql vraag

    Maarten Wierda wrote:
    > bjorri schreef:
    >
    >> Hoi,

    >
    > Dag,
    >
    >> Ik probeer vanaf een invulformulier een tekst op te laten slaan als
    >> .txt bestand.

    <het kan>
    >
    >> $docname="test.txt"; $fileSize= strlen($notitie);
    >> $fileType="text/plain"; $notitie="test of dit wil";
    >>
    >> $query = "INSERT INTO document (naam, size, type, bestand) " . "VALUES
    >> ($docname, $fileSize, $fileType, $notitie)"; mysql_query($query) or
    >> die (mysql_error());

    >
    > Hier probeer je bijvoorbeeld de inhoud van het tekstbestand uit te lezen
    > en toe te voegen aan de tabel 'document'. Dit doet me vermoeden dat je
    > die data uit het formulier eigenlijk gewoon direct wil opslaan in je
    > database, en dat je vermoedde dat de tussenkomst van een tekstbestand
    > daarbij noodzakelijk is, klopt dat?


    Zonder tussenkomst van een bestand zou ik er een text veld van maken en
    dan lukt het me wel namelijk.

    De bedoeling is om een lijst van word, excel en jpg bestanden te hebben
    waar ook .txt en mogelijk ook nog zelf te creëren eml bestanden tussen
    komen. De 'office' bestanden gaan via een bestand upload, dat gaat
    prima. Tussen die lijst met bestanden wil ik dus ook tekstbestanden
    kunnen zetten die ter plekke aangemaakt worden.

    Ik heb de overweging gemaakt die text bestanden in een ander veld te
    zetten maar dan denk ik dat ik later dan veel meer code moet kloppen om
    weer als een enkele lijst te presenteren of bewerkingen op uit wil voeren.

    Dank alvast.

    bjorri.

  5. #5
    bjorri
    php mysql vraag
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: php mysql vraag

    Rik wrote:
    > bjorri wrote:

    <ander onderwerp>

    > Strings moeten altijd gequote worden...
    > $query = "INSERT INTO `document` (`naam`, `size`, `type`, `bestand`)
    > VALUES ('{$docname}', {$fileSize}, '{$fileType}', '{$notitie}')";
    >


    Rik heeft het over alle strings tussen '' zetten en waarden kennelijk
    ook nog eens tussen {}, dat kom ik in voorbeelden eigenlijk nooit tegen.

    Nog meer haken en aanhalingstekens maakt het -voor mij- nog
    onoverzichtelijker. Dus nog vaker zoeken naar dat missende cq overbodige
    haakje, kommaatje of zelfs een spatie.

    Als het werkelijk nut heeft ga ik dat advies natuurlijk wel opvolgen.
    Mede gezien het feit dat ik die notatiewijze meer niet dan wel tegen kom
    wil ik graag wat meer uitleg hebben dan 'het moet' :-) Als het moet
    waarom is het dan nog niet algemeen gebruikt in tutorials?

    bjorri.

  6. #6
    Rik
    php mysql vraag
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: php mysql vraag

    bjorri wrote:
    > Rik wrote:
    >> bjorri wrote:

    > <ander onderwerp>
    >
    >> Strings moeten altijd gequote worden...
    >> $query = "INSERT INTO `document` (`naam`, `size`, `type`, `bestand`)
    >> VALUES ('{$docname}', {$fileSize}, '{$fileType}', '{$notitie}')";
    >>

    >
    > Rik heeft het over alle strings tussen '' zetten en waarden kennelijk
    > ook nog eens tussen {}, dat kom ik in voorbeelden eigenlijk nooit
    > tegen.
    >
    > Nog meer haken en aanhalingstekens maakt het -voor mij- nog
    > onoverzichtelijker. Dus nog vaker zoeken naar dat missende cq
    > overbodige haakje, kommaatje of zelfs een spatie.
    >
    > Als het werkelijk nut heeft ga ik dat advies natuurlijk wel opvolgen.
    > Mede gezien het feit dat ik die notatiewijze meer niet dan wel tegen
    > kom wil ik graag wat meer uitleg hebben dan 'het moet' :-) Als het
    > moet waarom is het dan nog niet algemeen gebruikt in tutorials?


    Waarom het zo te doen:
    1. De `` om veldnamen:
    - Op de manier forceer je dat MySQL altijd dit als (kort door de bocht)
    tabel/velnaam te zien, ook als het een gereserveerde naam is. Dit houdt in
    dat ook als je bijvoorbeeld een veld 'order' noemt dit met `` wel werkt.
    Zonder die backticks om 'order' zou je query falen.
    - Alhoewel dit enkel NODIG is bij gereserveerder namen is het een goede
    gewoonte om aan te leren, in plaats van naderhand kijken waarom je query
    faalt. Zeker in de meer complexe queries waarbij je je fout elders verwacht
    kun je er veel tijd aan kwijt zijn. Jezelf aanleren om altijd die `` aan te
    geven is makkelijker dan de hele tijd zoeken.

    2. Het quoten van strings in queries:
    - MySQL is vergevend, en zolang er geen whitespace-karakters in zitten
    hersteld MySQL je fout wel. Het quoten van strings is echter NOOIT
    optioneel geweest, en zou altijd gedaan moeten worden. De reden waarom zie
    je: je query faalt nu omdat er een spatie in $notitie zit. Zelfs als je in
    je code kunt garanderen dat er nooit een whitespace in zit zou ik '' nog
    steeds niet weglaten.

    3. Het gebruiken van accolades {} om variable in gequote strings:
    - Het voordeel is dat bijvoorbeeld nu "{$notitie}en nog iets" wel
    werkt, "$notitieen nog iets" faalt omdat $notitieen niet bestaat.
    - Het voorkomt dus dubbelzinnigheid, en is zeker met dynamisch
    samengestelde strings een manier om complexe fouten te voorkomen die anders
    wellicht moeilijk te traceerbaar zijn.
    - In het huidige voorbeeld zijn de accolades misschien wel overkill,
    aangezien je 100% zeker kunt zeggen dat er altijd een ' na de variabel naam
    komt.
    - Het is andermaal een goede gewoonte om jezelf aan te leren. De kans
    op fouten wordt gewoon kleiner, en op gegeven moment doe je het zo
    automatisch dat zelfs wanneer het niet strikt noodzakelijk is het er gewoon
    uit komt rollen, zo ook bij mij bij het herschrijven van de query.


    Overzicht:
    Een goede editor heeft syntax highlightinhg, die JUIST reageerd op de
    verschillende quotes, backticks,accolades, etc. Hierbij zie je in 1
    oogopslag of je een haakje hebt overgeslagen of niet. Dat maakt debuggen
    toch een stuk makkelijker.

    Om kort te gaan:
    - Strings quoten in queries: noodzakelijk.
    - Backticks om veldnamen: aan te raden, bij gereserveerde namen
    noodzakelijk.
    - Accolades om variabelen namen: optioneel, zelden noodzakelijk, maar een
    goede gewoonte.
    --
    Rik Wasmus



  7. #7
    Warden Dave
    php mysql vraag
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: php mysql vraag

    "bjorri" <no@nl.invalid> wrote:
    > Rik wrote:


    >> Strings moeten altijd gequote worden...
    >> $query = "INSERT INTO `document` (`naam`, `size`, `type`, `bestand`)
    >> VALUES ('{$docname}', {$fileSize}, '{$fileType}', '{$notitie}')";


    > Rik heeft het over alle strings tussen '' zetten en waarden kennelijk
    > ook nog eens tussen {}, dat kom ik in voorbeelden eigenlijk nooit
    > tegen.


    Die 'curly brackets' (accolades) zijn dan ook niet nodig met die gewone
    PHP variabelen binnen zo'n string met dubbele aanhalingstekens. Ook die
    backtick-quoted identifiers hoeven zo niet als als de namen, zoals hier,
    uit niets dan gewone lettertjes bestaan. Rik overdrijft 1 tikje.

    Wel zul je strings (/stringwaarden) tussen aanhalingstekens moeten
    plaatsen (bijv. '$docname') en er voor moeten zorgen dat bijv. de enkele
    aanhalingstekens (en backslashes etc.) dan binnen de string ge-escaped
    worden. (Zie 'addslashes'.)

    WD


  8. #8
    Rik
    php mysql vraag
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: php mysql vraag

    Warden Dave wrote:
    > Die 'curly brackets' (accolades) zijn dan ook niet nodig met die
    > gewone PHP variabelen binnen zo'n string met dubbele
    > aanhalingstekens. Ook die backtick-quoted identifiers hoeven zo niet
    > als als de namen, zoals hier, uit niets dan gewone lettertjes
    > bestaan. Rik overdrijft 1 tikje.


    Joah, misschien.
    Rik was het zat om telkens te moeten zoeken waar het precies fout ging en
    heeft zich een aantal zaken aangeleerd waardoor de meest voorkomende fouten
    sowieso worden afgevangen/niet voorkomen :-).

    Zeker met die backticks, het is sneller om zonder na te denken gewoon die
    backticks te gebruiken dan bij elke veld/tabelnaam na te moeten denken:"Is
    dit een gereserveerd woord? Ja, oh, laat ik dan maar eens backticks
    gebruiken.".

    > Wel zul je strings (/stringwaarden) tussen aanhalingstekens moeten
    > plaatsen (bijv. '$docname') en er voor moeten zorgen dat bijv. de
    > enkele aanhalingstekens (en backslashes etc.) dan binnen de string
    > ge-escaped worden. (Zie 'addslashes'.)


    Euhm, dat is wat onbetrouwbaar. Beter is mysql_real_escape_string()
    (aangezien er MySQL gebruikt wordt). Maar dan nog zou er met kapotte
    multibyte karakters door kwaadwillenden gevogeld kunnen worden... Nog een
    stapje beter is het gebruik van prepared statements als de server het
    ondersteund.
    --
    Rik Wasmus



  9. #9
    Warden Dave
    php mysql vraag
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: php mysql vraag

    "Rik" <luiheidsgoeroe@hotmail.com> wrote:
    > Warden Dave wrote:


    >> enkele aanhalingstekens (en backslashes etc.) dan binnen de string
    >> ge-escaped worden. (Zie 'addslashes'.)


    > Euhm, dat is wat onbetrouwbaar. Beter is mysql_real_escape_string()


    Inderdaad iets meer aangewezen voor sommige soorten data, maar OP zal in
    de handleiding wel even bij 'addslashes' mogen kijken om dat vanzelf te
    ontdekken en dan i.v.m. z'n op de post gedane formulier ook
    'magic_quotes_gpc'/'get_magic_quotes_gpc' en 'stripslashes' etc.

    WD


  10. #10
    Rik
    php mysql vraag
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: php mysql vraag

    Warden Dave wrote:
    > "Rik" <luiheidsgoeroe@hotmail.com> wrote:
    >> Warden Dave wrote:

    >
    >>> enkele aanhalingstekens (en backslashes etc.) dan binnen de string
    >>> ge-escaped worden. (Zie 'addslashes'.)

    >
    >> Euhm, dat is wat onbetrouwbaar. Beter is mysql_real_escape_string()

    >
    > Inderdaad iets meer aangewezen voor sommige soorten data, maar OP zal
    > in de handleiding wel even bij 'addslashes' mogen kijken om dat
    > vanzelf te ontdekken en dan i.v.m. z'n op de post gedane formulier ook
    > 'magic_quotes_gpc'/'get_magic_quotes_gpc' en 'stripslashes' etc.


    Joah. Een beetje zoeken kan geen kwaad, maar aangezien addslashes() nog zo
    vaak onterecht wordt gebruikt, en dus ook in vele voorbeelden staat, wilde
    ik er wel even op wijzen.

    Ook: nieuwe hoster, het eerste wat eventuele in de .htaccess gaat is
    altijd:
    php_flag magic_quotes_gpc off

    Alsof PHP kan ruiken wat ik wil escapen, tssk :P.
    --
    Rik Wasmus



  11. #11
    bjorri
    php mysql vraag
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: php mysql vraag

    Warden Dave wrote:
    > maar OP zal in
    > de handleiding wel even bij 'addslashes' mogen kijken om dat vanzelf te
    > ontdekken en dan i.v.m. z'n op de post gedane formulier ook
    > 'magic_quotes_gpc'/'get_magic_quotes_gpc' en 'stripslashes' etc.
    >
    > WD


    Mooi, naast wat nuttige algemene tips ook nog de richting waar ik het
    antwoord op mn vraag moet zoeken. Wordt lezen vanavond.

    Bedankt.

    bjorri.

  12. #12
    bjorri
    php mysql vraag
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: php mysql vraag

    bjorri wrote:
    > Warden Dave wrote:
    > > maar OP zal in
    >> de handleiding wel even bij 'addslashes' mogen kijken om dat vanzelf
    >> te ontdekken en dan i.v.m. z'n op de post gedane formulier ook
    >> 'magic_quotes_gpc'/'get_magic_quotes_gpc' en 'stripslashes' etc.
    >>
    >> WD

    >
    > Mooi, naast wat nuttige algemene tips ook nog de richting waar ik het
    > antwoord op mn vraag moet zoeken. Wordt lezen vanavond.
    >
    > Bedankt.
    >
    > bjorri.


    Rik, Warden en ook Maarten,

    Ondertussen wat zitten verdiepen in het slashes verhaal, dat kwartje is
    aan het vallen. Is het een bezwaar om standaard mysql_real_escape_string
    te gebruiken bij het invoeren van (string)data in de database? Zijn er
    situaties waarin adslashes de voorkeur verdient?

    Ook realiseer ik me dat de `backticks` duidelijk te onderscheiden zijn
    van 'enkele aanhalingstekens'. Dat geeft waarschijnlijk juist beter
    onderscheid naar veld en tabel namen tov andere gegevens. Vanaf nu ga ik
    dat dus toch gebruiken. Het mechaniek van '$strings' tussen '' zetten is
    me ook iets duidelijker geworden, een twijfeltje zit er nog wat het
    verschil is tussen '$getal' en '1' (Waarom niet '"1"'). Als ik queries
    laat zien met echo $query lijkt daar geen verschil tussen te zitten,
    kost me nu nog wat moeite maar dat begrip komt vanzelf hoop ik.

    Bedankt en een prettig weekend.

    bjorri.

  13. #13
    Inca
    php mysql vraag
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: php mysql vraag

    Rik wrote:
    > Overzicht:
    > Een goede editor heeft syntax highlightinhg, die JUIST reageerd op de
    > verschillende quotes, backticks,accolades, etc. Hierbij zie je in 1
    > oogopslag of je een haakje hebt overgeslagen of niet. Dat maakt
    > debuggen toch een stuk makkelijker.


    Na een stuk of 15 verschillende IDE's en editors voor diverse talen en
    ontwikkelomgevingen, ben ik eigenlijk nog nooit een programma tegengekomen
    die dit goed kan. Vooral geneste structuren en structuren in strings worden
    niet overzichtelijk gehighlight. Dus ik ben wel benieuwd:
    Wat vind jij 'juiste' syntax highlighting, en welke prorgramma's bieden dat?

    Je zou me erg kunnen helpen met een goeie tip,

    Inca
    --
    There is no need for a lavalamp unless you're on drugs - Gilmore Girls



  14. #14
    Rik
    php mysql vraag
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: php mysql vraag

    Inca wrote:
    > Rik wrote:
    >> Overzicht:
    >> Een goede editor heeft syntax highlightinhg, die JUIST reageerd op de
    >> verschillende quotes, backticks,accolades, etc. Hierbij zie je in 1
    >> oogopslag of je een haakje hebt overgeslagen of niet. Dat maakt
    >> debuggen toch een stuk makkelijker.

    >
    > Na een stuk of 15 verschillende IDE's en editors voor diverse talen en
    > ontwikkelomgevingen, ben ik eigenlijk nog nooit een programma
    > tegengekomen die dit goed kan. Vooral geneste structuren en
    > structuren in strings worden niet overzichtelijk gehighlight. Dus ik
    > ben wel benieuwd:
    > Wat vind jij 'juiste' syntax highlighting, en welke prorgramma's
    > bieden dat?


    Mijn favoriet blijft nog wel UltraEdit. Helaas niet gratis, maar met een
    geweldige 'tweakabiliy', en met wast spelen met brace-matching kom je er
    wel uit. Er is geen 'juiste' syntax highlighting, er is een highlighting
    die je ligt, en dat moet gewoon helemaal in te stellen zijn. Mijn
    voornaamste reden om UltraEdit te gebruiken zijn toch wel de goed in te
    stellen Syntax Highlighting, Key Mapping & Tools. Mijn toetsenbord is
    overladen met CTRl/SHIFT/ALT/letter combinaties. Geniaal, en een enorme
    tijdsbesparing. Het heeft echter wel zijn beperkingen.

    Qua syntax higlighting schijnt EditPad Pro de beste te zijn, maar:
    "While you can use the custom syntax coloring schemes you can download with
    the trial version, the separate application for creating your own coloring
    schemes is not included."

    Ik ga helaas niet betalen om dat "even te proberen".
    --
    Rik Wasmus



  15. #15
    Inca
    php mysql vraag
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: php mysql vraag

    Rik wrote:
    > Mijn favoriet blijft nog wel UltraEdit. Helaas niet gratis, maar met
    > een geweldige 'tweakabiliy', en met wast spelen met brace-matching
    > kom je er wel uit.


    UltraEdit heb ik inderdaad, en ben er erg blij mee, hoewel ik inmiddels een
    paar versies achterloop. (De nieuwste versie werkt niet goed samen met een
    touchpad driver en ik heb nog geen zin gehad om me daar in te verdiepen)
    De bracematching functie is handig, maar niet perfect, zeker niet als de
    haakjes over grotere afstand misgaan. Misschien dat dat in een nieuwere
    versie beter is, dat weet ik dus niet :-)

    Dat Editpad Pro ziet er trouwens ook wel erg goed uit. Vooral de uitgebreide
    navigatiefuncties spreken me aan.

    Bedankt voor de tips, ik ga er weer eens induiken!

    Inca
    --
    There is no need for a lavalamp unless you're on drugs - Gilmore Girls



Pagina 1 van de 2 1 2 LaatsteLaatste

Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics