|  | 		    
					
        
         
          
         
	
          | |  | Hjælp er det min server eller mig? Fra : Jan
 | 
 Dato :  04-10-06 18:36
 | 
 |  | Hej
 Jeg har forsøgt med $navn = $_POST['navn'] der kommer intet ind i $navn
 det er som om $navn = $_POST['navn'] stopper scriptet.
 Vis kilde kommer med følgende html:
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <HTML><HEAD>
 <META http-equiv=Content-Type content="text/html;
 charset=iso-8859-1"></HEAD>
 <BODY></BODY></HTML>
 
 Min kode:
 
 Motager:
 
 <?
 
 $host="localhost"; // Host name
 $username="******"; // Mysql username
 $password="*****"; // Mysql password
 $db_name="*******"; // Database name
 
 $navn=$_POST['navn']
 $datetime=date("Y-m-d"); //date time
 
 // Connect to server and select database.
 mysql_connect("$host", "$username", "$password")or die("cannot connect
 server ");
 mysql_select_db("$db_name")or die("cannot select DB");
 
 $sql = 'INSERT INTO `gbog` (`id`, `Navn`, `Mail`, `Emne`, `Tekst`, `dato`)
 VALUES (NULL, \'?\', \'?\', \'?\', \'?\', \'2006-10-04\');';
 $result=mysql_query($sql);
 
 //check if query successful
 if($result){
 echo "Successful";
 echo "<BR>";
 }
 
 else {
 echo "ERROR";
 }
 
 mysql_close();
 ?>
 
 Formen:
 
 <form id="form1" name="form1" action="gem.php" method="post">
 <p style="line-height: 150%"> </p>
 <div style="position: absolute; width: 384px; height: 171px; z-index: 1;
 left: 157px; top: 54px" id="Formular">
 <input type="text" name="navn" size="50" tabindex="1" value="navn">*
 <input type="text" name="mail" size="50" tabindex="2" value="mail">
 <input type="text" name="emne" size="50" tabindex="3" value="emne">*
 <textarea rows="5" name="tekst" cols="40"
 tabindex="4">tekst</textarea>*</div>
 <p><br>
  </p>
 <div style="position: absolute; width: 62px; height: 172px; z-index: 3;
 left: 90px; top: 55px" id="lag2">
 <font size="4">Navn:  <br>
 E-Mail:<br>
 Emne:<br>
 Tekst:
 </font></div>
 <div style="position: absolute; left: 216px; top: 226px; width: 260px;
 height: 36px; z-index: 2" id="lag1">
 <input type="submit" value="Post indlæg">    
 <input type="reset" value="Slet felter"></div>
 <p>
 <br>
 <br>
  
 </p>
 </form>
 
 Mvh Jan
 
 --------------------------------------------------------------------------------
 Jeg beskyttes af den gratis SPAMfighter til privatbrugere.
 Den har indtil videre sparet mig for at få 2969 spam-mails
 Betalende brugere får ikke denne besked i deres e-mails.
 Hent en gratis SPAMfighter her.
 
 
 
 
 |  |  | 
  Benny Nissen (04-10-2006) 
 
	
          | |  | Kommentar Fra : Benny Nissen
 | 
 Dato :  04-10-06 20:30
 | 
 |  | Jan wrote:
 
 > $navn=$_POST['navn']
 
 Der mangler et ; i slutningen af linien.
 
 > Jeg beskyttes af den gratis SPAMfighter til privatbrugere.
 
 Slet den eller betal. Så slipper vi andre for at se på det lort.
 
 --
 Benny
 
 
 |  |  | 
  Martin (05-10-2006) 
 
	
          | |  | Kommentar Fra : Martin
 | 
 Dato :  05-10-06 13:26
 | 
 |  | Jan wrote:
 > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 > <HTML><HEAD>
 > <META http-equiv=Content-Type content="text/html;
 > charset=iso-8859-1"></HEAD>
 > <BODY></BODY></HTML>
 
 Dette er standard, når PHP returner en PHP error, men da din server
 åbenbart er konfigureret til ikke at vise fejl, så får man bare en tom
 html side.
 
 > <?
 
 Brug så vidt som overhovedet muligt altid:
 <?php
 til at starte med - det koster lidt mere tid at skrive, men så er man
 100% sikker på at det virker.
 <? kan man kun skrive på servere, hvor shorttag_open = on, og det er
 ikke på alle det er det.
 
 Du kan også prøve at sætte
 error_reporting(E_ALL); i starten, så vil alle php fejl komme, og dette
 giver som reglen altid en lille hjælp :)
 
 >
 > $host="localhost"; // Host name
 > $username="******"; // Mysql username
 > $password="*****"; // Mysql password
 > $db_name="*******"; // Database name
 >
 > $navn=$_POST['navn']
 
 Her er der så en fejl, som du ville have fået smidt i hovedet hvis du
 havde brugt error_reporting(E_ALL);
 Hint: Du mangler en ;
 
 > $result=mysql_query($sql);
 
 Når du bruger mysql_query, så skriv altid OR DIE(mysql_error());
 bagefter, så får man database fejlene smidt i hovedet, hvis der skulle
 være nogle.
 Fx
 $result=mysql_query($sql) OR DIE (mysql_error());
 
 
 |  |  | 
  Jan (05-10-2006) 
 
	
          | |  | Kommentar Fra : Jan
 | 
 Dato :  05-10-06 18:55
 | 
 |  | Hej
 Jeg har prøvet lidt af hvert og tror at det er i
 $navn1=$_POST["navn"];
 er
 $navn1=peter
 og ikke
 \'peter\'
 skal det ikke være det?
 
 
 
 $sql = 'INSERT INTO `gbog` (`id`, `Navn`, `Mail`, `Emne`, `Tekst`, `dato`)
 VALUES (NULL, \'?\', \'?\', \'?\', \'?\', \'2006-10-04\');';
 
 Ovenstående sender fint til mysql-databasen
 men hvordan gør jeg sætter jeg variablen ind $navn1 (med flere)?
 
 Mvh Jan
 
 --------------------------------------------------------------------------------
 Jeg beskyttes af den gratis SPAMfighter til privatbrugere.
 Den har indtil videre sparet mig for at få 2999 spam-mails
 Betalende brugere får ikke denne besked i deres e-mails.
 Hent en gratis SPAMfighter her.
 
 
 
 
 |  |  | 
  Thorkil Olesen (05-10-2006) 
 
	
          | |  | Kommentar Fra : Thorkil Olesen
 | 
 Dato :  05-10-06 23:36
 | 
 |  | Jan <jan.h@rnet_nospam.dk> wrote:
 
 > Hej
 > Jeg har prøvet lidt af hvert og tror at det er i
 > $navn1=$_POST["navn"];
 > er
 > $navn1=peter
 > og ikke
 > \'peter\'
 > skal det ikke være det?
 
 Umiddelbart nej, men jeg er ikke sikker på, jeg forstår, hvad du
 mener...
 
 > $sql = 'INSERT INTO `gbog` (`id`, `Navn`, `Mail`, `Emne`, `Tekst`, `dato`)
 > VALUES (NULL, \'?\', \'?\', \'?\', \'?\', \'2006-10-04\');';
 >
 > Ovenstående sender fint til mysql-databasen
 > men hvordan gør jeg sætter jeg variablen ind $navn1 (med flere)?
 
 Her er 2 fejl:
 
 Den første fejl er, at du forsøger at definere en "prepared statement".
 Det er ikke understøttet af PHP-biblioteket "mysql", som du bruger. Hvis
 du vil det, skal du i stedet bruge PHP-biblioteket "mysqli" ("i" for
 "improved"), men det kræver, at det er tilgængeligt i din udgave af PHP.
 
 Den anden fejl er, at hvis du faktisk brugte "mysqli" og faktisk vil
 lave en "prepared statement", så skal spørgsmålstegnene ikke sættes i
 gåseøjne. Den præcise syntaks må du finde i dokumentationen til PHP.
 
 Uden at bruge en "prepared statement" skal værdierne sættes direkte ind
 i SQL-koden. Hvis værdierne f.eks. ligger i variablene $navn, $mail,
 $emne, $tekst:
 
 $sql = 'INSERT INTO `gbog` (`id`, `Navn`, `Mail`, `Emne`, `Tekst`,
 `dato`)
 VALUES (NULL, \'$navn\', \'$mail\', \'$emne\', \'$tekst\',
 \'2006-10-04\')';
 
 Jeg prøver normalt at undgå escape'de gåseøjne, så jeg ville bruge
 dobbelt-gåseøjne yderst. (Det er udelukkende æstetisk.)
 
 $sql = "INSERT INTO `gbog` (`id`, `Navn`, `Mail`, `Emne`, `Tekst`,
 `dato`)
 VALUES (NULL, '$navn', '$mail', '$emne', '$tekst', '2006-10-04')";
 
 --
 Thorkil Olesen,
 Hanstholm.
 
 
 |  |  | 
   Peter Brodersen (06-10-2006) 
 
	
          | |  | Kommentar Fra : Peter Brodersen
 | 
 Dato :  06-10-06 11:32
 | 
 |  | On Fri, 6 Oct 2006 00:35:52 +0200,
 slet.dette.thorkil.og.dette@pip.dknet.dk (Thorkil Olesen) wrote:
 
 >$sql = 'INSERT INTO `gbog` (`id`, `Navn`, `Mail`, `Emne`, `Tekst`,
 >`dato`)
 >VALUES (NULL, \'$navn\', \'$mail\', \'$emne\', \'$tekst\',
 >\'2006-10-04\')';
 >
 >Jeg prøver normalt at undgå escape'de gåseøjne, så jeg ville bruge
 >dobbelt-gåseøjne yderst. (Det er udelukkende æstetisk.)
 >
 >$sql = "INSERT INTO `gbog` (`id`, `Navn`, `Mail`, `Emne`, `Tekst`,
 >`dato`)
 >VALUES (NULL, '$navn', '$mail', '$emne', '$tekst', '2006-10-04')";
 
 Ikke helt - det er mere end æstetik.
 
 Ved enkelt-gåseøjne vil variable ikke blive interpoleret. Der er
 forskel på
 print "Foo '$bar' baz";
 og
 print 'Foo \'$bar\' baz';
 
 --
 - Peter Brodersen
 Kendt fra Internet
 
 
 |  |  | 
    Thorkil Olesen (08-10-2006) 
 
	
          | |  | Kommentar Fra : Thorkil Olesen
 | 
 Dato :  08-10-06 15:51
 | 
 |  | Peter Brodersen <usenet2006@ter.dk> wrote:
 
 > Ved enkelt-gåseøjne vil variable ikke blive interpoleret. Der er
 > forskel på
 >       print "Foo '$bar' baz";
 > og
 >       print 'Foo \'$bar\' baz';
 
 Du har selvfølgeligt ret. Det er ligesom i shell-programmering. Jeg
 bruger derfor altid dobbelt-gåseøjne til PHP og enkelt-gåseøjne til HTML
 og SQL.
 
 --
 Thorkil Olesen,
 Hanstholm.
 
 
 |  |  | 
  Jan (06-10-2006) 
 
	
          | |  | Kommentar Fra : Jan
 | 
 Dato :  06-10-06 15:46
 | 
 |  | Hej
 det endte med følgende løsning, og den VIRKER.
 Tak for Jeres forsøg på hjælp.
 mvh Jan
 
 $datetime=date("Y-m-d"); //date time
 $navn=addslashes($_POST["navn"]);
 $mail=addslashes($_POST["mail"]);
 $emne=addslashes($_POST["emne"]);
 $tekst=addslashes($_POST["tekst"]);
 
 // Connect to server and select database.
 mysql_connect("$host", "$username", "$password")or die("cannot connect
 server ");
 mysql_select_db("$db_name")or die("cannot select DB");
 $nr1="'";
 $nr2="','";
 $nr3=');';
 $nr4='INSERT INTO `gbog` (`id`, `Navn`, `Mail`, `Emne`, `Tekst`, `dato`)
 VALUES (NULL,';
 
 $nr6=" $nr4 $nr1  $navn $nr2 $mail $nr2 $emne $nr2 $tekst $nr2 $datetime
 $nr1 $nr3";
 
 $sql = " $nr6";
 $result=mysql_query($sql);
 //check if query successful
 if($result){
 echo "Tak for dit bidrag.";
 echo "<BR>";
 echo "<p><a href='gaestebog.php'>Tilbage</a></p>";
 }
 
 else {
 echo "ERROR";
 }
 
 mysql_close();
 
 
 
 
 |  |  | 
 |  |