» »

Zelo enostavna PHP skripta, ki ne dela - help :(

Zelo enostavna PHP skripta, ki ne dela - help :(

Poldi112 ::

Problem je ker ne izpise vrednosti spremenljivk, samo tale txt brez kolicine. In problem je ker nobene napake ne javi.

Bob's Auto Parts
Order Results
Your order is as follows:
tires
bottles of oil
spark plugs


koda;

orderform.html
[form action="processorder.php" method=post]
[table border=0]
[tr bgcol of =#cccccc]
[td width=150]Item[/td]
[td width=15]Quantity[/td]
[/tr]
[tr]
[td]Tires[/td]
[td align=center][input type="text" name="tyreqty" size=3 maxlength=3][/td]
[/tr]
[tr]
[td]Oilqty[/td]
[td align=center][input type="text" name="oilqty" size=3 maxlength=3][/td]
[/tr]
[tr]
[td colspan=2 align=center][input type=submit value="Submit Order"][/td]
[/tr]
[/table]
[/form]


processorder.php

[html]
[head]
[title]Bob's Auto parts - Order Results[/title]
[/head]
[body]
[h1]Bob's Auto Parts[/h1]
[h2]Order Results[/h2]
[?
echo "[p]Your order is as follows:";
echo "[br]";
echo $tireqty."tires[br]";
echo $oilqty."bottles of oil[br]";
echo $sparkqty."spark plugs[br]";
?]
[body]
[/html]

Tody ::

od kdaj se uporabljajo [oglati okelpaji] za html in php ?

Primoz ::

Novejši PHPji imajo po defaultu izklopljen register_globals
There can be no real freedom without the freedom to fail.

smolep ::

Seveda, da ti ne izpiše vrednosti teh spremenljivk. Poskrbeti moraš namreč, da jih "nafilaš" z nekimi vrednostmi. Načinov kako to storiš je pa več, npr. POST/GET, COOKIE, seje ali pa čisto samosvoje rešitve s pomočjo datotek ali podatkovnih baz.

V tvojem primeru jih moraš iti iskat v seznam $POST (ne vem ali pa $_POST), npr. za $tyreqty narediš $tyreqty = $POST["tyreqty"].

Povedano zelo poenostavljeno: med menjavanjem "strani" namreč spremenljivke "izgubljajo" svoje vrednosti, zato moraš poskrbeti za prenašanje njihovih vrednosti.

Pa register_globals naj bo kar izklopljen!!

smolep ::

Aja, pa tisti oglati oklepaji mi tud niso čist jasni :\ ??

Poldi112 ::

TNX Primoz! Sem vklopil na on in zdaj dela :).

Ok, security bo malo trpel, ampak bom vsaj lahko po knjigi studiral, ker itak mi ni se nic jasno in se nocem se s tem ukvarjati.

Oglati oklepaji pa zato ker se mi je zdelo da bo jasno. Pac malo se je treba hecat ce hoces da ti jih tale forum ne prepozna kot html, pa se mi ni zdelo vredno s tem ukvarjati.

rokpok ::

Če knjiga obravnava spremenljivke z global_variables=on potem svetujem, da zamenjaš knjigo.
Rad bi bil pingvin.

Zgodovina sprememb…

  • spremenil: rokpok ()

root987 ::

Malo off topic:
@Poldi112: Imaš ti to "php and mysql web development" knjigo? :-)
"Myths which are believed in tend to become true."
--- George Orwell

Zgodovina sprememb…

  • spremenil: root987 ()

ThinMan ::

Ma sej je čist simpl.

// to lahko pustis pri miru, ce se pa ucis- kot v tvojem primeru pa lahko das na on,
register_globals = off

Vse kar potrebujes da ti prebere iz niza, ki si ga poslal s formo (uporabi metodo POST), v skripti pa prides do poslanih polj z

$ime = $HTTP_POST_VARS["ime"];

oziroma

$ime = $_GET["ime"];

Primer:

Imas skripto, ki ti izpise kaj uporabnik vnese v obrazec (recimo svoje ime)

To v skripti izpises z
// primer z register_globals=ON;
echo "$ime";

// register_globals=OFF

$ime = $HTTP_POST_VARS["ime"];
echo "$ime";

ali pa kar
echo $HTTP_POST_VARS["ime"];



Drugac pa ce imas knjigo ki predvideva da imas v PHP.INI nastavljen register_globals=on ni nic hidega, saj za zacetek pri programiranju je to boljse, kot pa da se ubadas z raznimi dolgimi klobasami.



LP,

FLADÉ

Poldi112 ::

No, saj kasneje sem vseeno dal nazaj na off. In sem se znasel pred novo tezavo.
Rabim csv file vnesti v tabelo v mysql. Z spodnjo skripto mi dela, ampak mi ne pobere stran ", s katerimi so objete celice. Poleg tega bi rad se par kolon dodal, tako da bo za vsako vrstico najprej prvih 10 iz csv, potem pa se 3, ki bi jih vnesel preko forme.

root987: Ja. A si primer spoznal, ane :)


<?
$TABLENAME=pet;
include("dbinfo.php");
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

  $fcontents = file ('./csv/cat.csv'); 
  for($i=0; $i<sizeof($fcontents); $i++) { 
      $line = trim($fcontents[$i]); 
      $arr = explode(",", $line); 
    
      $sql = "insert into $TABLENAME values ('". implode("','", $arr) ."')"; 
      mysql_query($sql);
      echo $sql ."<br>\n";
        if(mysql_error()) {
         echo mysql_error() ."<br>\n";
      } 
}
?>


Trudil sem se tudi z fgetcsv (in fopen), samo tam mi niti vnos ni uspel.
Potem sem imel dosti in sem se odlocil, da danes cist v easy iz nule zacnem (tole do sedaj sem delal analizo skript od drugih).
Posem sem pa videl tale svoj post... :)
Ce se komu da pomagati ali vsaj svetovati bom hvalezen, ce ne pa tudi ni panike.
LP

Zgodovina sprememb…

  • spremenil: Poldi112 ()

Poldi112 ::

Heh, ne morem vec popravit. Skripta zdaj dela za silo, samo ne za vse vrste podatkov. Ampak zdaj picim na dopust in bom septembra mozgal naprej.

Lion27 ::

mislim ej....

mysql ima moznost importiranja direktno csv fajlov brez kaksnih php prijemov....
(probaj najprej vnesti v phpMyAdminu) ce pa mora biti programsko reseno pa si poglej tu:
http://dev.mysql.com/doc/mysql/en/LOAD_...


pozdrav

Poldi112 ::

Load data je omejen. Edino fgetcsv zadosti mojim potrebam, da mi pobere narekovaje stran.
Pa phpmyadmin sem imel, pa se mi ni dopadel. Raje imam svojo php skripto, ki mi dela tabele.


Zdaj imam delujoco kodo za vnos v bazo, zanima pa me kako bi lahko dopovedal kodi, da naj .csv file bere sele od 10. vrstice naprej. Ker za kak pogojni stavek ne vem kam bi ga vnesel.
 
<?php
include("dbinfo.php");

$db = mysql_connect("$host_name","$db_user","$db_password") or die("Could not connect to database!");
$result = mysql_select_db($db_name) or die("Could not select database!");

$handle = fopen("pet2.csv", "r") or die('Could not open file!');
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
       $insert = "INSERT INTO $table VALUES('$data[0]','$data[1]','$data[2]')";
       $res_insert = mysql_query($insert, $db) or die("Could not INSERT query!");
   }
fclose($handle);
?>

Zgodovina sprememb…

  • spremenil: Poldi112 ()

snow ::

pred while daš en
$i=0;


pol za while pa:


$i++;
if($i>10){
kodavstavljanje
}


To je taka KISS varianta.. je pa tud ziher kaka zadeva za 'previjanje' :)
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Ne prenese spremenljivke iz enega php-ja v drugega

Oddelek: Izdelava spletišč
71157 (1060) Looooooka
»

php in varnost

Oddelek: Izdelava spletišč
191206 (1060) Ziga Dolhar
»

PHP in globalne spremenljivke

Oddelek: Programiranje
61166 (1046) neonX
»

Php....nekaj ne dela

Oddelek: Izdelava spletišč
5879 (767) cahahopie

Več podobnih tem