Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.
KOL

KOL

Medlem
  • Plats Luleå
  • Sysselsättning Gillar att motionera och fotografera. Musik och film är roligt! Älskar min mac.
  • Registrerad 2005-09-28
  • Senast aktiv 2015-09-27
  • Antal inlägg 546

Foruminlägg

De senaste inläggen KOL har skrivit i forumet.

  • Medlem
  • Luleå
  • 2013-06-17 00:50

@suddgummi, Ja, just det. Det var echo jag glömde. Men nu en fråga ytterligare. Jag har nu klistrat in

echo "<pre>Går in i DELETE-delen</pre>";

där du tyckte. Det som händer nu är ju att när jag raderat en rad i tabellen, genom php, så står det just "Går in i DELETE-delen" högst upp ovanför fälten där man skulle fylla i uppgifter för att lägga till information i tabellen. Vad är syftet med att det ska stå så där? Att raden, i databastabellen, hade allt för att den skulle raderas? Om den inte hade haft det, vad skulle hända då? Jag anar att detta är en väldigt dum fråga, men hoppas ni har överseende för det.

  • Medlem
  • Luleå
  • 2013-06-17 00:14

Wow! Mycket att ta in, mycket att fundera på här. Men tack @suddgummi, det känns verkligen som att några pusselbitar har börjat falla på plats.

Men jag få fortfarande meddelandet "syntax error, unexpected '<' " där du vill att jag ska klistra in den där raden med

"<pre>Går in i DELETE-delen</pre>";
  • Medlem
  • Luleå
  • 2013-06-16 22:51

@suddgummi, väldigt bra instruktion. Men nu måste jag nog bena ut ett par saker.

Ursprungligen av suddgummi:

Jag brukar först köra koden i mysql-konsollen för att se så att jag har rätt syntax (din DELETE FROM instruktion).

1. Mysql-konsol, är det typ netbeans, Smultron eller nåt liknande?
2. "Köra koden", är det typ att du skriver den i netbeans och ser om du får några meddelanden angående koden, eller?

Ursprungligen av suddgummi:

När jag har syntaxen klar för mig skriver jag koden och byter ut de föränderliga delarna mot variabler, precis som det är skrivet.

3. "skriver koden". Menar du att du skriver in koden i den filen som den sedan ska vara i, eller?

Ursprungligen av suddgummi:

Fungerar det fortfarande inte brukar jag lägga in några utskrifter typ "hallå, här är jag" för att se så jag fått villkoren rätt i if-satserna.

4. Please, ge exempel på hur detta skulle kunna se ut.

Ursprungligen av suddgummi:

Du kan lägga in en

echo "<pre>Går in i DELETE-delen</pre>";

precis efter if-satsen där så ser du om du har alla villkoren uppfyllda för att utföra din DELETE-query mot SQL-servern.

5. Var? Jag har försökt klistra in det men får bara "syntax error, unexpected '<' ".

  • Medlem
  • Luleå
  • 2013-06-16 21:07

JAAAA!!!! Där var felet! Tack där @Vassius!!

  • Medlem
  • Luleå
  • 2013-06-16 19:33

Men i browsern så syns ju varje rad, från databasen, var för sig, sammanlagt alltså 5 rader (cities, population, continent, mustsee och skala). Under dessa fem rader, finns en delete-knapp. Om man trycker på denna deleteknapp så borde just den raden och bara den raden från databasen raderas. Alltså cities, population, continent, mustsee och skala. Inte sant? Eller har jag fått det här helt om bakfoten?

Är det kanske så att jag, som det ser ut nu, bara raderar cities? Men så är det ju inte heller för när jag klickar på delete oavsett var i databasen jag befinner mig, så försvinner inte någonting alls. Browsern laddar bara om sidan.

  • Medlem
  • Luleå
  • 2013-06-16 01:19

Hur hade ni skrivit kod om ni hade haft samma uppgift som jag ovan? Lägga till och radera information från en databas via PHP.

  • Medlem
  • Luleå
  • 2013-06-16 01:16

Det funkar inte. Det är ett mysterium att jag kan lägga till information men inte radera. När jag klickar på Delete-knappen så händer ingentilng förutom att browsern uppdaterar sidan, man hamnar alltså längst upp igen. Inget raderat. Här är den igen.

<?php
require_once('login.php');
$db_server = mysql_connect($db_hostname, $db_username, $db_password);

if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());

mysql_select_db($db_database)
or die("Unable to select database: " . mysql_error());

if (isset($_POST['delete']) && isset($_POST['cities']))
{
	$cities = get_post('cities');
	$query = "DELETE FROM countries WHERE cities='$cities'";
	
	if (!mysql_query($query, $db_server))
	echo "DELETE failed: $query<br />" .
	mysql_error() . "<br /><br />";
}

if (isset($_POST['cities']) &&
    isset($_POST['population']) &&
    isset($_POST['continent']) &&
    isset($_POST['mustsee']) &&
    isset($_POST['skala']))
{
	$cities     = get_post('cities');
	$population = get_post('population');
	$continent  = get_post('continent');
	$mustsee    = get_post('mustsee');  
	$skala      = get_post('skala');
	
	$query = "INSERT INTO countries values" .
	         "('$cities', '$population', '$continent', '$mustsee', '$skala')";
	     
	if (!mysql_query($query, $db_server))
	    echo "INSERT failed: $query<br />" .
	    mysql_error() . "<br /><br />";
}
echo <<<_END
<form action="sqltest.php" method="post"><pre>
    Cities <input type="text" name="cities" />   
Population <input type="text" name="population" />  
 Continent <input type="text" name="continent" />
  Must see <input type="text" name="mustsee" />
     Skala <input type="text" name="skala" /> 
      <input type="submit" value="ADD RECORD" />
      </pre></form>
_END;
      
      $query = "SELECT * FROM countries";
      $result = mysql_query($query);
      
      if (!$result) die ("Database access failed : " . mysql_error());
      $rows = mysql_num_rows($result);
      
      for ($j = 0 ; $j < $rows ; ++$j)
      {
      	$row = mysql_fetch_row($result);
echo <<<_END
     <pre> 	
      	Cities $row[0]
    Population $row[1]
     Continent $row[2]
      Must see $row[3]
      	 Skala $row[4]
     </pre> 	
     <form action="sqltest.php" method="post">
     <input type="hidden" name="delete" values="yes" />  
     <input type="hidden" name="cities" values="$row[0]" />  
     <input type="submit" value="DELETE RECORD" />  
     </form>
_END;
      }
      mysql_close($db_server);
      
      function get_post($var)
      {
      	return mysql_real_escape_string($_POST[$var]);
      }
?>
  • Medlem
  • Luleå
  • 2013-06-15 22:31

I boken så beskrivs den långa koden ovan som "daunting" och jag håller med. Jag anar att jag inte riktigt har förstått allt än.

Jag har alltså en tabell som heter countries. I den finns kolumnerna cities, population, continent, mustsee och skala.
Första frågan om delete-segmentet i koden, som jag gjort om lite, är om det här är rätt?

if (isset($_POST['delete']) && isset($_POST['cities']))
{
	$cities = get_post('cities');
	$query = "DELETE FROM countries WHERE cities='$cities'";

Nästa detalj. I tabellen finns varken primary key eller auto increment. Spelar det någon roll?

  • Medlem
  • Luleå
  • 2013-06-14 21:53

Okej! tack keptang.

Angående koden i mitt förra inlägg. Vet någon varför jag kan lägga till men inte radera i tabellen? Alltså ADD RECORD funkar, men inte DELETE RECORD. Någon?

  • Medlem
  • Luleå
  • 2013-06-14 14:52

Det var det som var felet. Tydligen ska man inte ha någon whitespace alls före _END;. Tack Vassius!

"använd forumets kodformateringstaggar". Absolut. Hur gör man?

Se en fråga till. Jag kopierar in filens kod igen. Det går nu att lägga till i tabellen, men det går inte att delete:a. Någon som vet varför?

<?php
require_once('login.php');
$db_server = mysql_connect($db_hostname, $db_username, $db_password);

if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());

mysql_select_db($db_database)
or die("Unable to select database: " . mysql_error());

if (isset($_POST['delete']) && isset($_POST['countries']))
{
	$cities = get_post('countries');
	$query = "DELETE FROM countries WHERE cities='$countries'";
	
	if (!mysql_query($query, $db_server))
	echo "DELETE failed: $query<br />" .
	mysql_error() . "<br /><br />";
}

if (isset($_POST['cities']) &&
    isset($_POST['population']) &&
    isset($_POST['continent']) &&
    isset($_POST['mustsee']) &&
    isset($_POST['skala']))
{
	$cities     = get_post('cities');
	$population = get_post('population');
	$continent  = get_post('continent');
	$mustsee    = get_post('mustsee');  
	$skala      = get_post('skala');
	
	$query = "INSERT INTO countries values" .
	         "('$cities', '$population', '$continent', '$mustsee', '$skala')";
	     
	if (!mysql_query($query, $db_server))
	    echo "INSERT failed: $query<br />" .
	    mysql_error() . "<br /><br />";
}
echo <<<_END
<form action="sqltest.php" method="post"><pre>
    Cities <input type="text" name="cities" />   
Population <input type="text" name="population" />  
 Continent <input type="text" name="continent" />
  Must see <input type="text" name="mustsee" />
     Skala <input type="text" name="skala" /> 
      <input type="submit" value="ADD RECORD" />
      </pre></form>
_END;
      
      $query = "SELECT * FROM countries";
      $result = mysql_query($query);
      
      if (!$result) die ("Database access failed : " . mysql_error());
      $rows = mysql_num_rows($result);
      
      for ($j = 0 ; $j < $rows ; ++$j)
      {
      	$row = mysql_fetch_row($result);
echo <<<_END
     <pre> 	
      	Cities $row[0]
    Population $row[1]
     Continent $row[2]
      Must see $row[3]
      	 Skala $row[4]
     </pre> 	
     <form action="sqltest.php" method="post">
     <input type="hidden" name="delete" values="yes" />  
     <input type="hidden" name="cities" values="$row[0]" />  
     <input type="submit" value="DELETE RECORD" />  
     </form>
_END;
      }
      mysql_close($db_server);
      
      function get_post($var)
      {
      	return mysql_real_escape_string($_POST[$var]);
      }
?>
  • Medlem
  • Luleå
  • 2013-06-14 13:38

Hur ska man göra när det står "syntax error, unexpected end of file" när jag har skrivit ?> som slut?

Hela filen är här nedan och det handlar om att lägga till/radera information från en databas. Reultatet i boken av den här koden är ganska snygg och det vore ju trist att inte lyckas. Hela texten har jag skrivit av från boken(och bytt ut tabell och liknande till min egen databas). När jag kollar den i netbeans så ungefär vid rad 67 så övergår några färger som förut har varit i blått till att vara orange. Det gäller tillexempel ord som if, echo och die.
Misstänkt stavfel, men var? Finns det nåt bra sätt att ta reda på om man gjort stavfel mer än att kolla själv. Uppenbarligen så missar man både det ena och det andra.

<?php
require_once('login.php');
$db_server = mysql_connect($db_hostname, $db_username, $db_password);

if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());

mysql_select_db($db_database)
or die("Unable to select database: " . mysql_error());

if (isset($_POST['delete']) && isset($_POST['cities']))
{
$cities = get_post('cities');
$query = "DELETE FROM countries WHERE cities='$cities'";

if (!mysql_query($query, $db_server))
echo "DELETE failed: $query<br />" .
mysql_error() . "<br /><br />";
}

if (isset($_POST['cities']) &&
isset($_POST['population']) &&
isset($_POST['continent']) &&
isset($_POST['mustsee']) &&
isset($_POST['skala']))
{
$cities = get_post('cities');
$population = get_post('population');
$continent = get_post('continent');
$mustsee = get_post('mustsee');
$skala = get_post('skala');

$query = "INSERT INTO countries values" .
"('$cities', '$population', '$continent', '$mustsee', '$skala')";

if (!mysql_query($query, $db_server))
echo "INSERT failed: $query<br />" .
mysql_error() . "<br /><br />";
}

echo <<<_END

<form action="sqltest.php" method="post"><pre>
Cities <input type="text" name="cities" />
Population <input type="text" name="population" />
Continent <input type="text" name="continent" />
Must see <input type="text" name="mustsee" />
Skala <input type="text" name="skala" />
<input type="submit" value="ADD RECORD" />
</pre></form>
_END;

$query = "SELECT * FROM countries";
$result = mysql_query($query);

if (!$result) die ("Database access failed : " . mysql_error());
$rows = mysql_num_rows($result);

for ($j = 0 ; $j < $rows ; ++$j)
{
$rows = mysql_fetch_row($result);
echo <<<_END
<pre>
Cities $row[0]
Population $row[1]
Continent $row[2]
Must see $row[3]
Skala $row[4]
</pre>
<form action="sqltest.php" method="post">
<input type="hidden" name="delete" values="yes" />
<input type="hidden" name="cities" values="$row[0]" />
<input type="submit" value="DELETE RECORD" />
</form>
_END;
}
mysql_close($dbserver);

function get_post($var)
{
return mysql_real_escape_string($_POST[$var]);
}
?>

  • Medlem
  • Luleå
  • 2013-06-13 16:34

Irrelogical, du nämnde gammeldax skriven kod. Har du kanske tips om var jag kan lära mig "modernare" skriven phpkod?

  • Medlem
  • Luleå
  • 2013-06-13 14:57

Tackar för det:), nu gäller det bara att förstå felmeddelandena:)

  • Medlem
  • Luleå
  • 2013-06-13 13:45

Tack där Vassius;)

"Sen kan det vara värt att se till att error-loggning är på i php och kolla error-loggen för din webbserver när du stöter på problem."
Hur och var gör jag det? I MAMP kanske? Eller?

  • Medlem
  • Luleå
  • 2013-06-13 13:10

Jo, det är gjort. Ville inte publicera dem som du säkert förstår;)