Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][MySQL][PHP] Wpisanie artykułu do bazy
-warzywniak365-
post
Post #1





Goście







Witam,

Nie mogę sobie poradzić z tym problemem ani znalezieniem go w internecie (IMG:style_emoticons/default/sad.gif) . Mianowicie próbuję wpisać długi(125026 znaków) artykuł do bazy danych w pole LONGTEXT (baza danych MySQL). W programie używam klasy mysqli której obiekt jest przechowywany przez zmienną $connection. $connection->query("insert...") zwraca mi wartość odpowiadającą prawdzie (przechodzi testy if). Generalnie wszystko działa niby ładnie, ale artykuł nie pojawia się w bazie. Jak dodaje krótkie artykuły to wszystko ładnie śmiga (IMG:style_emoticons/default/biggrin.gif) i pojawia się w bazie. Formularz przesyłam metodą POST żeby nie ucięło informacji. Proszę o pomoc i wyrozumiałość jeśli to jest na tyle trywialne, że nie ma tego w internecie (IMG:style_emoticons/default/biggrin.gif) .
Go to the top of the page
+Quote Post
max_mcee
post
Post #2





Grupa: Zarejestrowani
Postów: 156
Pomógł: 1
Dołączył: 25.09.2007

Ostrzeżenie: (0%)
-----


Jesteś pewny, że to nie problem czegoś innego? LONGTEXT jest największym typem MySQLa (ex aequo z LONGBLOB) i potrafi pomieścić do 4GB danych. Czy ten Twój artykuł zajmuje aż tyle miejsca ?
Pokaż może kod.
Go to the top of the page
+Quote Post
-warzywniak365-
post
Post #3





Goście







To jest kod który generuje formularz:

function show_wizard_html(){?>
<div id=wizard>
<div id="to_new_category">
<p>Zanim wpiszesz treść artykułu zastanów się w jakiej kategorii ma się on znaleźć. <a href="category_wizard.php" onclick="return !aTarget(this)">Tutaj</a> możesz dodać nowe kategorie.
Po dodaniu kategorii, aby była ona dostępna musisz ją odświeżyć.</p>
</div>
<p>Wpisz treść artykułu w języku HTML, ewentualnie używając stylów CSS.</p>
<div id="article_wizard">
<form action="addarticle.php" method="post">
Tytuł<input type="text" name="title" />
<textarea class="ckeditor" name="article_contents" cols="150" rows="50"></textarea>
<!-- dodawanie zdjec-->
<textarea name="key_words" cols="150" rows="3"></textarea>
<select name="associated[]" multiple="multiple" size="5">
<?php //rozwiniecie listy artykulow -------------------------------------------
require_once("functions.php");
$connection=connect_db();

$result1 = $connection->query("select name from categories");
if($result1){
for(;$row1 = $result1->fetch_row() (IMG:style_emoticons/default/wink.gif) {
echo '<optgroup label="'.$row1[0].'">';
$result2 = $connection->query("select name from articles where in_category='".$row1[0]."'");
if($result2){
for(;$row2 = $result2->fetch_row() (IMG:style_emoticons/default/wink.gif) {
echo '<option>'.$row2[0].'</option>';
}
}
echo '</optgroup>';
}
}
//$connection.close();
?>
</select>
<select name="category">
<?php //------------------------------------------------------------------------------
$connection = connect_db();
$result1 = $connection->query("select name from categories");
if($result1){
for(;$row1 = $result1->fetch_row() (IMG:style_emoticons/default/wink.gif) {
echo '<option>'.$row1[0].'</option>';
}
}
//$connection.close();
?>
</select>
<button type="submit">Wyślij</button>
</form>
</div>
</div>
<?php }

--------------------------------------------------------------

To jest skrypt odbierający formularz:

<?php

require_once("functions.php");
session_start();
if(!isset($_SESSION['logged'])){
echo 'Musisz być zalogwany';
header("Location: index.php");
}
$result = add_article_db($_POST);
if($result){
echo 'Dodano artykuł pomyślnie';
}else{
echo 'Nie mogłem dodać artykułu';
}


?>
---------------------------------------------------

To jest funkcja która wpisuje artykuł w bazę:

function add_article_db($form){
$connection = connect_db();
$tmp='';
foreach($form['associated'] as $link){
$tmp.=$link.' ';
}
foreach($form as $value){
echo $value.'<br/>';
}
$result = $connection->query("insert into articles (name,in_category,author,creation_date,contents,key_words,associated_with,blocka
de) values('".$form['title']."','".$form['category']."',
'".$_SESSION['logged']."','".date("Y-m-d")."','".$form['article_contents']."','".$form['key_words']."','".$tmp."',1)");
if($result){
return true;
}
return false;
}


Go to the top of the page
+Quote Post
-warzywniak365-
post
Post #4





Goście







;) zamiast tych emotek
Go to the top of the page
+Quote Post
max_mcee
post
Post #5





Grupa: Zarejestrowani
Postów: 156
Pomógł: 1
Dołączył: 25.09.2007

Ostrzeżenie: (0%)
-----


Używaj do prezentowania kodu odpowiednich znaczników, będzie czytelniej.
Moim zdaniem masz w tekście jakiś apostrof lub cudzysłów.
Użyj na danych addslashes na artykule wprowadzanym do bazy, powinno pomóc.
Go to the top of the page
+Quote Post
-warzywniak365-
post
Post #6





Goście







jeszcze tabela w bazie:

CREATE TABLE IF NOT EXISTS articles(
id BIGINT NOT NULL AUTO_INCREMENT,
name VARCHAR(40) NOT NULL,
in_category VARCHAR(30) NOT NULL,
author VARCHAR(30) NOT NULL,
creation_date DATE NOT NULL,
contents LONGTEXT NOT NULL,
key_words VARCHAR(300) NOT NULL,
associated_with VARCHAR(300),
blockade BIT(1) NOT NULL,
CONSTRAINT article_id PRIMARY KEY (id),
CONSTRAINT category_of_article FOREIGN KEY (in_category) REFERENCES categories (name),
CONSTRAINT author_of_article FOREIGN KEY (author) REFERENCES users (login)
)ENGINE = InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_polish_ci AUTO_INCREMENT=0;
Go to the top of the page
+Quote Post
-warzywniak365-
post
Post #7





Goście







Pomogło addslashes wielkie dzięki (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 11:10