webForum webForum sponsras med lina och serverplats av Binero AB

Gå tillbaka   webForum > Utveckling > Webbutveckling > PHP

PHP Här diskuteras allt som har med scriptspråket PHP att göra.

Svar
 
Trådverktyg Visningsalternativ
Äldre 2012-05-10, 18:29   #1
PollyJuice
Medlem
 
PollyJuices avatar
 
Registrerad: 2006-03-11
Ort: Sundsvall
Inlägg: 125
Lösningar: 0
Sista detaljen, sen är det eländiga projektet klart!

Jag tjurar på med mitt projekt...
Från början hade jag en xml-fil som jag hämtade data ur. Sen ändrade jag mig och fixade en databas istället. Har lyckats fixa alla ändringar som behövdes, med hjälp av snälla människor här på forumet och med hjälp av en himla massa tutorials. Nu återstår EN säger EN liten detalj:

I index.html använde jag mig av ett script som tog reda på vilket projekt användaren hade valt, för att sen lägga namnet på detta projekt i variabeln info. Denna variabel användes sedan av andra script för att kunna plocka ut det projekt (i en xml-fil) vars namn var det som låg i info-variabeln. Sen kunde man hitta på lite av varje.

Nu ska jag istället för en xml-fil använda mig av en databas, och jag är lite fundersam till hur jag ska kunna föra över info-variabeln till php-filen. Jag har försökt att lägga info-variabeln i php-länken som syns i koden nedan, men det funkar inte. Hur kan jag rätta till det?

Kod:
Själva scriptet:

var info;
var xmlhttp;

function getSelected (selectTag)
  	{
            var selIndex = "";

            for (var i = 0; i < selectTag.options.length; i++) 
			{
                var optionTag = selectTag.options[i];
                if (optionTag.selected) 
				{
                    selIndex += optionTag.text;   
          		}

			info = selIndex;
			
			}

if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("rightcontainer").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","hamtaInfo.php?info");
xmlhttp.send();
}

och i bodyn:

		<div class="rubrik" id="valjprojekt">
			<form name="form1" method="get" action="">
    	   	<label for="vp">V&auml;lj projekt:<br>
    	   	</label>
    	   	<select onChange="getSelected(this)">
    	   	  <option>*** V&auml;lj projekt ***</option>
    	   	  <option>knatte</option>
    	   	  <option>fnatte</option>
    	   	  <option>tjatte</option>
    	   	 </select>
    	 	<p></p>
			</form>
		</div>
och såhär ser php-filen ut:

PHP-kod:
<?php

$namnet 
$_POST['info'];

$con mysql_connect("host","användarnamn","lösenord");
if (!
$con)
  {
  die(
'Could not connect: ' mysql_error());
  }

mysql_select_db("databasnamn"$con);

$result mysql_query("SELECT * FROM projekt WHERE namn = '" $namnet "'");

echo 
"<table><tr><td colspan='2' class='rubrik'>Alla projekt</td></tr>";

while(
$row mysql_fetch_array($result))
  {
      
$sammanlagt $row['antaltimmar'] * $row['timkostnad'];
  echo 
"<tr><td>Projektnamn: </td><td>" $row['namn'] . "</td></tr>";
  echo 
"<tr><td>Beskrivning: </td><td>" $row['beskrivning'] . "</td></tr>";
  echo 
"<tr><td>Antal timmar: </td><td>" $row['antaltimmar'] . "</td></tr>";
  echo 
"<tr><td>Timkostnad: </td><td>" $row['timkostnad'] . "</td></tr>";
  echo 
"<tr><td>Total kostnad för detta projekt: </td><td>" $sammanlagt "</td></tr>";
  echo 
"<tr><td>Startdatum: </td><td>" $row['startdatum'] . "</td></tr>";
  echo 
"<tr><td>Slutdatum: </td><td>" $row['slutdatum'] . "</td></tr>";
  
  }
echo 
"</table>";

mysql_close($con);
?>
__________________
Hindu philosophy:

Life sucks, and then you die.
And then life sucks again...
PollyJuice besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 19:56   #2
jawbreaker
Medlem
 
Registrerad: 2003-01-15
Ort: Oskarshamn
Inlägg: 288
Lösningar: 72
Du missar bara att skicka med ditt värde i anropet:
Kod:
xmlhttp.open("GET", "hamtaInfo.php?info=" + encodeURIComponent(info));
__________________
"OK, that's the last memory leak."
jawbreaker besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 20:25   #3
PollyJuice
Medlem
 
PollyJuices avatar
 
Registrerad: 2006-03-11
Ort: Sundsvall
Inlägg: 125
Lösningar: 0
Det enda php skriver ut är rubriken i tabellen; "Alla projekt"...
__________________
Hindu philosophy:

Life sucks, and then you die.
And then life sucks again...
PollyJuice besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 20:30   #4
jawbreaker
Medlem
 
Registrerad: 2003-01-15
Ort: Oskarshamn
Inlägg: 288
Lösningar: 72
Aha, du använder $_POST['info']; i PHP-koden såg jag nu. Du får ändra till $_GET['info']; om värdet ska hämtas från querystringen istället.
__________________
"OK, that's the last memory leak."
jawbreaker besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 20:58   #5
PollyJuice
Medlem
 
PollyJuices avatar
 
Registrerad: 2006-03-11
Ort: Sundsvall
Inlägg: 125
Lösningar: 0
OK, nu funkar hämtningen av info, MEN istället så har två knappar lagt av eftersom jag lyckades trolla bort den gamla koden jag använde för att skapa forms så att användaren kan mata in nya siffror att uppdatera databasen med. Har skapat nya forms, en för tid och en för kostnad, men då var det där med variabler till php igen... Datat förs inte över till databasen.

Kod:
function redigeraTimmar()
{
malElement = "<h2 class='rubrik'>Skapa nytt projekt:</h2>";
malElement += "<form name='form3' method='post' action='skapaNytt.php'><table class='brodtext'>";
malElement += "<tr><td>Projektets namn</td><td><input id='namn' name='namn' type='text' value='" + info  + "' size='30'/></td></tr>";
malElement += "<tr><td>Ange timmar:</td><td><input id='timmar' name='timmar' type='text' value='' size='30'/></td></tr>";
malElement += "<tr><td></td><td><input type='button' onclick='sparaTimmar()' value='L&auml;gg till timmar' /><br /><input type='button' onclick='allaTimmar()' value='Alla timmar' /></td></tr></table></form>";
document.getElementById('rightcontainer').innerHTML=malElement;	
}

function sparaTimmar()
{
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
document.getElementById("rightcontainer").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","soaraTimmar.php?info=" + encodeURIComponent(info));
xmlhttp.send();
}
och

PHP-kod:
<?php
$namnet
$_GET['namn'];
$timmarna$_GET['timmar'];

$con mysql_connect("","","");
if (!
$con)
  {
  die(
'Could not connect: ' mysql_error());
  }

mysql_select_db(""$con);

mysql_query("UPDATE projekt SET antaltimmar = " $timmarna " WHERE namn = '" $namnet "'");  

mysql_close($con);

?>
__________________
Hindu philosophy:

Life sucks, and then you die.
And then life sucks again...

Senast redigerad av PollyJuice, 2012-05-10 klockan 21:35
PollyJuice besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 22:07   #6
jawbreaker
Medlem
 
Registrerad: 2003-01-15
Ort: Oskarshamn
Inlägg: 288
Lösningar: 72
När du ska spara värden så är det egentligen mer rätt att använda POST istället för GET, men det kanske inte spelar så stor roll just nu.

Hur som helst måste du se till att skicka med rätt parametrar till sidan som ska spara informationen.

Kod:
xmlhttp.open("GET","soaraTimmar.php?info=" + encodeURIComponent(info));
är inte rätt i detta fall. Du måste skicka med två parametrar denna gång: "namn" och "timmar". Du måste hämta dessa värden från ditt formulär i sparaTimmar()-funktionen i javascriptet och sedan skicka med dem på motsvarande sätt som "info" tidigare.
Kod:
var namn = "test", timmar = "10"; // hämta dessa värden från formuläret
xmlhttp.open("GET","soaraTimmar.php?namn=" + encodeURIComponent(namn) + "&timmar=" + encodeURIComponent(timmar));
(Och är soaraTimmar.php kanske ska vara sparaTimmar.php?)
__________________
"OK, that's the last memory leak."
jawbreaker besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 22:31   #7
PollyJuice
Medlem
 
PollyJuices avatar
 
Registrerad: 2006-03-11
Ort: Sundsvall
Inlägg: 125
Lösningar: 0
var namn = document.getElementById('namn').value;
var timmar = document.getElementById('timmar').value;
xmlhttp.open("GET","sparaTimmar.php?namn=" + encodeURIComponent(namn) + "&timmar=" + encodeURIComponent(timmar));
xmlhttp.send();

Den VILL bara inte fatta! namn blir knatte eller fnatte eller tjatte beroende på vilket projekt jag väljer, och timmar får det värde jag matar in, det kollade jag med en alert. Så varför förs inte dessa värden över till php:n?
__________________
Hindu philosophy:

Life sucks, and then you die.
And then life sucks again...
PollyJuice besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 22:39   #8
jawbreaker
Medlem
 
Registrerad: 2003-01-15
Ort: Oskarshamn
Inlägg: 288
Lösningar: 72
Jag ser inget uppenbart fel i ditt sista kodexempel. Vad gör sparaTimmar.php efter att UPDATE-frågan körts? I ditt javascript säger du att PHP-sidans svar ska skrivas ut i "rightcontainer", men gör sparaTimmar.php något annat än att bara spara värdena?
Har du kollat i databasen så att inget uppdatarats ändå?
__________________
"OK, that's the last memory leak."
jawbreaker besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 22:42   #9
PollyJuice
Medlem
 
PollyJuices avatar
 
Registrerad: 2006-03-11
Ort: Sundsvall
Inlägg: 125
Lösningar: 0
Jag har egentligen tänkt att sparatimmar.php bara ska visa en länk tillbaka till index, men det är "smink". Det viktigaste är att jag kollar i databasen efter varje gång jag kör scriptet, och ingenting har uppdaterats. Trots att jag har stavat rätt till "spara" den här gången.
__________________
Hindu philosophy:

Life sucks, and then you die.
And then life sucks again...
PollyJuice besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 22:45   #10
PollyJuice
Medlem
 
PollyJuices avatar
 
Registrerad: 2006-03-11
Ort: Sundsvall
Inlägg: 125
Lösningar: 0
Ligger månne svaret på gåtan i php-koden?

PHP-kod:
<?php
$namnet
$_GET['namn'];
$timmarna$_GET['timmar'];

$con mysql_connect("","","");
if (!
$con)
  {
  die(
'Could not connect: ' mysql_error());
  }

mysql_select_db(""$con);

mysql_query("UPDATE projekt SET antaltimmar = " $timmarna " WHERE namn = '" $namnet "'");  
echo 
"<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<title>ProJect Tidsrapportering</title>
<link href='project.css' rel='stylesheet' type='text/css' />
</head>

<body>
    <div id='topp'>
      <p><center>
        <p>&nbsp;</p>
        <p><img src='images/titel.png' alt='logo' width='569' height='56' /></p>
</center></p>
    </div>

<div id='left'></div>

<div id='mitten' class='brodtext'>"
;

echo 
"Databasen har uppdaterats. <a href='index.html'>Klicka här</a> för att gå tillbaka till projektsidan";

echo 
"</div> <!--slut på #mitten-->
<div id='right'></div>
<div id='bottom'></div>
</body>
</html>
"
;

mysql_close($con);

?>
__________________
Hindu philosophy:

Life sucks, and then you die.
And then life sucks again...

Senast redigerad av PollyJuice, 2012-05-10 klockan 22:45 Anledning: stavfel
PollyJuice besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 22:53   #11
jawbreaker
Medlem
 
Registrerad: 2003-01-15
Ort: Oskarshamn
Inlägg: 288
Lösningar: 72
Jag ser inget fel där heller egentligen. Vad händer om du kör sidan direkt i webbläsaren? Typ: http://...adress.../sparaTimmar.php?...10&namn=knatte
(eller lämpliga "riktiga" parametrar).

Skrivs sidan ut som den ska? Uppdateras något i databasen?
__________________
"OK, that's the last memory leak."
jawbreaker besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 23:02   #12
PollyJuice
Medlem
 
PollyJuices avatar
 
Registrerad: 2006-03-11
Ort: Sundsvall
Inlägg: 125
Lösningar: 0
Va f..? Då funkar det! Mysko...

Jag lämnade in uppgiften i detta skick nu, för deadlinen var för 5 minuter sen. Jag hoppas att jag åtminstone kan få FX på den, så att jag kan rätta till den i efterskott och få godkänt på kursen när den väl "uppför" sig.

Tack snälla, för din hjälp och ditt tålamod, du är verkligen jättebussig!
__________________
Hindu philosophy:

Life sucks, and then you die.
And then life sucks again...
PollyJuice besöker inte forumet just nu   Svara med citat
Äldre 2012-05-10, 23:08   #13
jawbreaker
Medlem
 
Registrerad: 2003-01-15
Ort: Oskarshamn
Inlägg: 288
Lösningar: 72
Inga problem. Får hoppas att det löser sig
__________________
"OK, that's the last memory leak."
jawbreaker besöker inte forumet just nu   Svara med citat
Svar
webForum > Utveckling > Webbutveckling > PHP

Trådverktyg
Visningsalternativ

Forumregler
Du får inte posta nya trådar
Du får inte posta svar
Du får inte bifoga filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är av
HTML-kod är av

Forumhopp


Alla tider är i GMT +1. Klockan är nu 03:39.


Powered by: vBulletin Version 3.8.6
Copyright © webForum