ugrás a tartalomhoz

Adatfeltöltés MySQL táblába

mrtom · 2009. Ápr. 28. (K), 11.50
Üdvözlök mindenkit!

Remélem jó kategóriába tettem

Extrás tárhelyemen létrehoztam egy SQL táblát, ezt szeretném én feltölteni egy űrlappal (pontosabban a szövegbeviteli mezők értékeivel), de nem sikerül sehogy sem, pedig már több módon is próbáltam.
A kapcsolódás sikeres, a feltöltendő táblát is kiválasztja, de a beviteli mezők értékei nem maradnak meg benne.

Nagyon megköszönném, ha segítenétek!
 
1

Meddig jutottál

Poetro · 2009. Ápr. 28. (K), 12.26
Meg tudnád mutatni meddig jutottál, és hogy hogyan néz ki az INSERT query?
2

Az eggyik változat

mrtom · 2009. Ápr. 28. (K), 13.32
<?php

if($submit)
{
$SQLhost = "localhost";
$SQLuser = "userh";
$SQLpass = "pass";
$DB = "databaser";

mysql_connect($SQLhost, $SQLuser, $SQLpass) or die("Nincs kapcsolat az adatbázissal:<BR>".mysql_error());
mysql_select_db($DB) or die("Adatbázis kiválasztási hiba:<BR>".mysql_error());
mysql_query("INSERT INTO banner_xchange (id, bannerurl, siteurl, text, views) VALUES (' ','$bannerurl','$siteurl','$text','')");
Print "Az adatok hozzáadása sikeres volt";
}
?>

<form method="POST" action="addbanner.php">
Weblapod teljes URL came: <input type="text" name="siteurl"><br>
Bannered teljes URL címe: <input type="text" name="bannerurl"><br>
Megjelenítendő szöveg, ha a banner nem érhető el: <input type="text" name="text"><br>
<input type="submit" value="Adatok hozzáadása a rotátor adatbázisához">
</form>
<?
}
?>
3

Mezők, típusok, escape

Poetro · 2009. Ápr. 28. (K), 13.37
Sajnos az ebből nem derült ki, melyik oszlop milyen adattípusú, és milyen elvárásokat támasztasz az egyes mezőkkel kapcsolatban, létezik-e a tábla, milyen hibaüzeneteket ad vissza a MySQL a beszúrás esetén. Ajánlom figyelmedbe a mysql_error, mysql_real_escape_string használatát, valamint POST-ból, GET-ből jövő változók megfelelően biztonságos kezelését, különös tekintettel arra, hogy a scripted nem működik register_globals=off esetén, mert akkor a POST változókat a $_POST tömbön keresztül éred el, például $_POST['submit'].
4

google://register globals

Ajnasz · 2009. Ápr. 28. (K), 14.43
google://register globals
5

Új probléma

mrtom · 2009. Ápr. 29. (Sze), 17.39
Összehoztam egy változatot, ami beilleszti az adatot, de csak az egyik mezőt, még akkor is, ha mi nd a három mezőt kitöltöm az űrlapon.
Most mi a teendő, segítsetek!

Csatolom az importált táblát:

CREATE TABLE `banner_xchange` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`bannerurl` tinytext NOT NULL,
`siteurl` tinytext NOT NULL,
`text` tinytext NOT NULL,
`views` int(5) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
6

Lépések

Poetro · 2009. Ápr. 29. (Sze), 17.48
Az előbbi hozzászólásban említett lépéseket megtetted? Hogy néz ki az aktuális INSERT query?
7

mysql_query("INSERT INTO

mrtom · 2009. Ápr. 29. (Sze), 17.55
mysql_query("INSERT INTO `banner_xchange` VALUES ('','$siteURL', '$text', '$bannerURL','')");
8

Nem tetted meg

Poetro · 2009. Ápr. 29. (Sze), 19.56
Úgy látszik úgy repültek el a szavak a füled mellett, mint a szél.

Valami ilyesmire gondoltam.
$args = array('bannerurl' => '', 'siteurl' => '', 'text' => '');
foreach ($args as $key => &$val) {
  if (isset($_POST[$key])) {
    $val = $_POST[$key];
  }
}
$args = array_map('mysql_real_escape_string', $args);
array_unshift($args, 
  "INSERT INTO `banner_xchange` (bannerurl, siteurl, text, views) VALUES ('%s', '%s', '%s', 0)");

mysql_query(call_user_func_array('sprintf', $args));
9

Kipróbáltam a te

mrtom · 2009. Ápr. 30. (Cs), 10.20
Kipróbáltam a te kódrészletedet, működik, minden adatot megfelelő oszlopba illeszt, de ez csak egyszer működik, azaz csak egy sort ír a táblába.
Teendő?
10

Mi az amit szeretnél

Poetro · 2009. Ápr. 30. (Cs), 13.18
Mi az, amit szeretnél, és mi az, ami történik? Egy INSERT egy sort szúr be, kivéve ha több sort szúrsz be, pl
INSERT INTO tabla (...) VALUES (...sor-1...), (...sor-2...) ..., (...sor-n...)
11

Elnézést, úgy tűnik

mrtom · 2009. Ápr. 30. (Cs), 17.48
Elnézést, úgy tűnik megoldódott, szerver probléma lehetett.
Mégegyszer köszönöm a a segítségedet!
12

Még egy kérdés

mrtom · 2009. Május. 2. (Szo), 16.32
A bannerrotátor megjelenítő scriptje a bannert megalkotja, de a views mező értéke értéke nem változik, stabilan nulla, pedig minden bannerlehíváshor a számnak növekednie kellene.
Mi a hiba?

$newViews = $BanViews+1;
mysql_query("UPDATE bannerviews SET views = $newViews WHERE id = $BanID");
13

views = views+1

erenon · 2009. Május. 2. (Szo), 17.27
Honnan van a $BanViews-nak értéke és mi az?
Miért nem használod a views = views+1 formát?
14

$BanViews = $row['views'];

mrtom · 2009. Május. 2. (Szo), 20.30
$BanViews = $row['views'];