Text naar MySql database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Arno van Zanten

Arno van Zanten

19/04/2023 10:43:10
Quote Anchor link
Hallo,

Ander probleem, ik probeer een grote tekst over de 2000 tekens naar de database te sturen, maar ik krijg maar 500 tekens naar de database gestuurd.
Nu vraag ik me af waar het aan ligt, is het de database of moet ik iets aan de values doen?
Textarea kan je heel veel tekens in kwijt, maar zodra ik in de bron kijk, stuurt ie maar 500 tekens en de post is over de 2000 tekens, waar of wat moet ik aanpassen/veranderen?

in de database heb ik mediumtext voor de grote tekenreeks

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
            
    if($_GET['menu'] == 'bio' && $_GET['action'] == 'write') {
        
        echo "<form action='index.php?menu=bio&action=preview' method='POST'>
                <div class='write-grid0'>
                    <div class='write-item'>
                        <input type='text' name='title' placeholder='Write a catchy title here'>
                    </div>
                    <div class='write-item'>
                        <textarea name='story' placeholder='Write your advertising story here'></textarea>
                    </div>
                    <div class='write-item' id='button-a'><input type='submit' name='submit' value='Preview'>
                </div>
            </form>"
;
            
    }
elseif($_GET['menu'] == 'bio' && $_GET['action'] == 'preview') {
        
        $pretitle = $_POST['title'];
        $prestory = $_POST['story'];
        
        echo "<div class='write-grid'>
                <div class='write-item1'>"
.htmlspecialchars($pretitle)."
                <input type='hidden' name='title' value='"
.$pretitle."'></div>
                <div class='write-item2'>"
.nl2br($prestory, true)."
                <textarea hidden name='story' value='"
.$prestory."'></div>
                <div class='write-item'><button id='button-a'><a href='index.php?menu=bio&action=postit'>Post Story</a></button></div>
            </div>"
;
    }
elseif($_GET['menu'] == 'bio' && $_GET['action'] == 'postit') {
        
        $pretitle = $_GET['title'];
        $prestory = $_GET['story'];
        
        $sql = "SELECT * FROM Story WHERE User_ID = ".$_SESSION['ID']."";
        $result = mysqli_query($connect, $sql);
        $rows = mysqli_num_rows($result);
            if($rows == 0) {
                $sql = "INSERT INTO Story(User_ID, Title, Bio) VALUES ('".$_SESSION['ID']."', '".$pretitle."', '".$prestory."')";
                $result = mysqli_query($connect, $sql);
            }
else {
                $sql = "UPDATE Story SET Title='".$pretitle."', Bio='".$prestory."' WHERE ID = ".$_SESSION['ID']."";
                $result = mysqli_query($connect, $sql);
            }
    }
else {
    
        /* Bio view */
        $sql = "SELECT * FROM Story WHERE User_ID = ".$_SESSION['ID']."";
        $result = mysqli_query($connect, $sql);
        $rows = mysqli_num_rows($result);
            if($rows == 0) {
                echo "<div id='button'><a href='index.php?menu=bio&action=write'>No \"BIO\" set!!<br />Click here to write your story</a></div>";
            }
else {
                $story = mysqli_fetch_all($result, MYSQLI_ASSOC);
                foreach($story as $bio) {
                    
                    $title = $bio['Title'];
                    $bio = $bio['Bio'];
                }

                echo"<div class='write-grid'>
                        <div class='write-item1'>"
.$title."</div>
                        <div class='write-item2'>"
.nl2br($bio,true)."</div>
                    </div>"
;
            }
    }

?>
 
PHP hulp

PHP hulp

19/04/2024 03:15:37
 
Adoptive Solution

Adoptive Solution

19/04/2023 11:09:40
Quote Anchor link
Eerst doe je een POST(story) en later doe je een GET(story).

Met dat laatste kieper je het hele verhaal in de URL ipv opnieuw een POST te doen.

De kans is groot dat met de GET een deel wordt afgekapt.

Niet elke browser accepteert zo’n onbeperkte hoeveelheid text in een URL.

Effe zoeken.

https://www.sistrix.com/ask-sistrix/technical-seo/site-structure/url-length-how-long-can-a-url-be
Gewijzigd op 19/04/2023 11:10:39 door Adoptive Solution
 
Arno van Zanten

Arno van Zanten

19/04/2023 11:19:17
Quote Anchor link
Daar vraag ik even niet om en dat heb ik al aangepast.
mij gaat het om de teken reeks.

Toevoeging op 19/04/2023 11:34:13:

Laat maar opgelost, wel heb ik een andere vraag.
Nu heb ik zeg maar een foutje in mijn tekst gezien in de preview, nu wil ik terug om dat te corrigeren.
Dus wil ik een 'go back' button erbij hebben, zodat deze mij terug stuurt naar de 'editor' en dat ik de tekst kan aanpassen alvorens hem te posten.
Hoe doe ik dat?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
} elseif($_GET['menu'] == 'bio' && $_GET['action'] == 'preview') {
        
        $pretitle = $_POST['title'];
        $prestory = $_POST['story'];
        
        echo "<form action='index.php?menu=bio&action=postit' method='POST'>
            <div class='write-grid'>
                <div class='write-item1'>"
.htmlspecialchars($pretitle)."
                <input type='hidden' name='title' value='"
.$pretitle."'</div>
                <div class='write-item2'>"
.nl2br($prestory, true)."
                <input type='hidden' name='story' value='"
.htmlspecialchars($prestory)."'></div>
                <div class='write-item' id='button-a'><input type='submit' name='submit' value='Post it'></div>
                <div class='write-item' id='button-b'>Go back</div>
            </div></form>"
;
?>
 
- Ariën  -
Beheerder

- Ariën -

19/04/2023 11:51:04
Quote Anchor link
Beste oplossing is een linkje plaatsen naar de edit-pagina.
 
Arno van Zanten

Arno van Zanten

19/04/2023 13:31:27
Quote Anchor link
Probleem met de go back is opgelost, door middel van formaction.

Nu een heel ander probleem, de update werkt niet.
Als ik een verhaal plaats, dan post ie hem mooi naar de mysql, maar als ik een update doe, dan wordt er niks gewijzigd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
} elseif($_GET['menu'] == 'bio' && $_GET['action'] == 'postit') {
        
        $pretitle = $_POST['title'];
        $prestory = htmlspecialchars($_POST['story']);
        
        $sql = "SELECT * FROM Story WHERE User_ID = ".$_SESSION['ID']."";
        $result = mysqli_query($connect, $sql);
        $rows = mysqli_num_rows($result);
            if($rows == 0) {
                $sql = "INSERT INTO Story(User_ID, Title, Bio) VALUES ('".$_SESSION['ID']."', '".$pretitle."', '".$prestory."')";
                $result = mysqli_query($connect, $sql);
                echo "Story is added";

            }
else {
                $sql = "UPDATE Story SET Title='".$pretitle."', Bio='".$prestory."' WHERE ID = ".$_SESSION['ID']."";
                $result = mysqli_query($connect, $sql);
                echo "Story is updated";

            }
    }

?>


Toevoeging op 19/04/2023 13:32:56:

Laat maar weer, tjee..... ik kijk weer eens niet goed :P
WHERE ID = ".$_SESSION['ID'].""; moest zijn WHERE User_ID = ".$_SESSION['ID']."";
Ik moet echt even pauze en koffie gaan drinken.
 
- Ariën  -
Beheerder

- Ariën -

19/04/2023 13:35:45
Quote Anchor link
Tja, kan van alles zijn. Misschien zelf onbedoelde SQL-injection met apostroffen of andere gevaarlijke karakters.
Echo je $sql eens en probeer de fout te zoeken.

Eigenlijk is mysqli_error($connect) een handige functie om errors te tonen.
 
Ivo P

Ivo P

19/04/2023 13:43:36
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
        $pretitle
= $_POST['title'];
        $prestory = htmlspecialchars($_POST['story']);
?>


daar maak je liever van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
        $pretitle
= mysqli_real_escape_string($connect, $_POST['title']);
        $prestory = mysqli_real_escape_string($connect, $_POST['story']);
?>


Dan gaat het goed als je een ' in je invoer hebt,
en je maakt je tekst niet kapot als je er een < of > in hebt staan.

htmlspecialchars() gebruik je in combinatie met "echo". Niet al bij het opslaan in de database.
 
Ozzie PHP

Ozzie PHP

19/04/2023 14:40:08
Quote Anchor link
Luistert Arno eigenlijk wel naar de tips die worden gegeven?

Ivo zegt hier goedbedoeld iets over SQL-injection, maar Ariën heeft dat al tig keer gezegd.

Het valt me ook op dat er erg veel ad-hoc probleempjes over de schutting worden gegooid, die dan ineens zijn opgelost.

Ik krijg het idee dat TS vee dingen 'op de gok' aan het doen is. Volgens mij is het ook nog een soort van escortbureau? En daar gaan dan 'dames van plezier' en wellicht ook klanten zich op inschrijven? Lekker als de boel niet goed beveiligd is en de gegevens straks op straat liggen. Waarom huurt TS niet een developer met verstand van zaken in?
 
Arno van Zanten

Arno van Zanten

19/04/2023 15:24:43
Quote Anchor link
Tussen ons in,
Niemand kan zich bij mij inschrijven.
Zowel de dames niet als de klanten niet.

En ja ik lees heel goed naar de tips en zeker doe ik er wat mee.
Maar dit gedeelte is opgelost en werkt nu naar behoren, mede jullie hulp en tips ;)
Ben nu met een andere page bezig, maar die is een stuk moeilijker dan ik hoopte.
Maar ga even een beetje pauze houden, veel koffie drinken en eens denken hoe ik dat ga oplossen.

Misschien een beetje surfen op het internet en YT :)
 
Ozzie PHP

Ozzie PHP

19/04/2023 15:54:08
Quote Anchor link
Of misschien eens even op Bol.com rondkijken of je een PHP-basisboek kunt scoren ;-) Dan weet je wat beter waar je mee bezig bent, en kun je gerichter aan de slag, zeker ook met het oog op veiligheid.
 
- Ariën  -
Beheerder

- Ariën -

19/04/2023 17:21:45
Quote Anchor link
En een cheat-sheet op je bureau... ;-)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.