webForumDet fria alternativet

Register i php / "Vad hände idag för ett år sedan" i php

PHP

34 svar · 1 503 visningar · startad av rodge

Medlem sedan juli 200457 inlägg
Frågan#1

Hejsan, ny på detta forum och ganska ny när det gäller php.
Tänkte lägga till ett register på min hemsida med information om alla låtar och alla mixar med depeche mode. Med andra ord, två kolumner, båda två ska vara sorteringsbara och när man klickar på valfri mix ska man komma till en sida där all information om just den kmixen finns.

Någon som har ett script eller vet var jag kan söka ett.

Sedan problem 2:
Skulle vilja ha en liten ruta där det visas vad som har hänt i depeche modes karriör hittills just den aktuella dagen. Går det att fixa?
Samma här, någon som har ett script eller vet var jag kan söka ett?

Medlem sedan juni 20006 031 inlägg
#2

Finns nog inget färdigt skript med just de funktioner du önskar, det enda är nog att du knåpar ihop ett eget.

Medlem sedan mars 2003429 inlägg
#3

Förstod inte riktigt hur du ville att det skulle se ut men här har du iaf en liten kod som kräver att du har en MySQL databas med åtminstonde kolumnerna:
id
titel
mix

Det borde i alla fall generera nått sånär vad det var du var ute efter.

<?php

echo("
<table>
<tr>
<td><b>Titel</b><br>
<a href='register.php?orderby=titel'>Ordna efter titel</a></td>
<td><b>Mix</b><br>
<a href='register.php?orderby=mix'>Ordna efter mix</a></td>
</tr>
<tr>
");

/// Ansluter
mysql_connect($host,$id,$kod);
mysql_select_db($databas);

/// Hämtar låtarna från databasen
$query =  mysql_query("SELECT * FROM tracks ORDER BY $orderby desc");
WHILE($rad=mysql_fetch_array($query)){

	$id=$rad["id"];
	$titel=$rad["titel"];
	$mix=$rad["mix"];

/// Stoppar in värdena i tabellen

echo("
<td><a href='latinfo.php?id=$id'>$titel</a></td>
<td><a href='latinfo.php?id=$id'>$mix</a></td>
");
}
echo("
</tr>
</table>
");

?>

Säg bara till om det är något!

Medlem sedan juli 200457 inlägg
#4

Tack Duffer.

Ska sätta mig och kolla på det till helgen.

Ingen som har tips om mitt andra problem?

Medlem sedan aug. 20002 975 inlägg
#5

Problem 2:
Var har du information om vad depeche mode gjorde ett visst datum ?

Medlem sedan juli 200457 inlägg
#6

Just nu ingenstans, men den ska ligga i en databas i samma mapp som .php filerna.

Medlem sedan juli 200457 inlägg
#7

Duffer skrev:

Förstod inte riktigt hur du ville att det skulle se ut men här har du iaf en liten kod som kräver att du har en MySQL databas med åtminstonde kolumnerna:
id
titel
mix

Det borde i alla fall generera nått sånär vad det var du var ute efter.

<?php

echo("
<table>
<tr>
<td><b>Titel</b><br>
<a href='register.php?orderby=titel'>Ordna efter titel</a></td>
<td><b>Mix</b><br>
<a href='register.php?orderby=mix'>Ordna efter mix</a></td>
</tr>
<tr>
");

/// Ansluter
mysql_connect($host,$id,$kod);
mysql_select_db($databas);

/// Hämtar låtarna från databasen
$query =  mysql_query("SELECT * FROM tracks ORDER BY $orderby desc");
WHILE($rad=mysql_fetch_array($query)){

	$id=$rad["id"];
	$titel=$rad["titel"];
	$mix=$rad["mix"];

/// Stoppar in värdena i tabellen

echo("
<td><a href='latinfo.php?id=$id'>$titel</a></td>
<td><a href='latinfo.php?id=$id'>$mix</a></td>
");
}
echo("
</tr>
</table>
");

?>

Säg bara till om det är något!

Blev så nyfiken så jag testade koden idag, den verkar fungera efter lite inställnings problem (från min sida). Fick ändra "WHILE($rad=mysql_fetch_array($query)){" till "WHILE($rad=mysql_query($query)){" så krånglade det inte med min domän.
Bara en liten undran, hur ska latinfo.php se ut?

Medlem sedan mars 2003429 inlägg
#8

Okej vi säger att du har en egen tabell för låt info. I stort kan sidan se ut såhär:

<?php
/// Deklaration
$latid = $_GET[id];  /// Denna håller reda på vilken låt man vill ha info om

/// Ansluter
mysql_connect($host,$id,$kod);
mysql_select_db($databas);

/// Hämtar låtinfo från databasen med limit 1
$query =  mysql_query("SELECT * FROM tracks_info WHERE latid = $latid ORDER BY id desc LIMIT 1");
WHILE($rad=mysql_query($query)){

    $titel=$rad["titel"];
    $mix=$rad["mix"];
    $text=$rad["text"];

/// Skriver en söt liten info text om låten/mixen
echo("
<b>$titel <i>($mix)</i></b>
<br>$text
");
}
?>

Det där genererar en sida som inte är mycket mer för världen än vad det ser ut som ovan. Men funka ska det göra iaf.
Observera att i denna tabell (tracks_info) behövs dessa fält:
id (rekommenderat)
titel
mix
text
latid

latid har vi för när du lägger till en ny låt sparar du dess id i fältet låtid i denna tabellen för att hålla rätt på vilken låt infotexten tillhör.
Man skulle kunna lagra allt i en och samma tabell men det blir inte lika kul och med detta kan man bygga en mer dynamisk sida ifall man kommer på fler funktioner efter hand.

Mer om din andra funktion fårbli tills imorrn
Fler frågor så är det bara att sägatill =)

Medlem sedan juli 200457 inlägg
#9

Verkar som det fungerar då det inte kommer något fel meddelande i alla fall.
Tackar och bugar Duffy

Medlem sedan apr. 2002830 inlägg
#10

Om ditt andra problem. Skapa en tabell i mySQL (eller det DBHS som du nu använder). I tabellen skall det finnas följande kolumner: id, datum, händelse. I SQL-frågan så hämtar du hem alla rader som matchar dagens datum, men med valfritt år, mao, %-07-22. Sedan är det bara för dig att via det året som händelsen inträffade beräkna skillnaden från dagens datum...

Fast du borde kunna hitta exemepelvis födelsedags script och liknande. Det är ju bara att skriva in en händelse istället för namnet på personen som fyller år...

// Nippe

Medlem sedan juli 200457 inlägg
#11

Födelsedags script, det var en bra ide. Att jag inte tänkte på det.

Tack för tipset.

Medlem sedan juli 200457 inlägg
#12

Då är jag tillbaka igen.
Satt och försökte pussla ihop en add.php
Väljer jag att gå in på latinfo.php eller register.php efter det syns inte mina inlägg. Kollade på min server och informationen ligger där.
Någon som har en aning?
<html>

\<head\>

	\<title\>Lägg till information i en databas\</title\>

\</head\>

\<body\>
     
     \<form method="POST" action="add.php"\>
     
     	\<b\>Låt\</b\>\<br/\>
     	\<input type="text" size="30" name="titel"\>\<p/\>
     	
     	\<b\>Mix\</b\>\<br/\>
     	\<input type="text" size="30" name="mix"\>\<p/\>
     	
     	\<b\>Text\</b\>\<br/\>
     	\<input type="text" size="300" name="text"\>\<p/\>
     		     	
     	\<input type="submit" size="30" value="Lägg till!"\>\<p/\>
     
     \</form\>
     
	\<?php if(empty($\_POST\['titel'\]))
		     $namn = "not set";
		  if(empty($\_POST\['mix'\]))   
	         $dag = "not set";
	      if(empty($\_POST\['text'\]))
	         $manad = "not set";
	      		
		  if(!empty($\_POST\['titel'\]))
		  {
			  $titel   = $\_POST\['titel'\];
			  $mix    = $\_POST\['mix'\];
			  $text  = $\_POST\['text'\];
			  
			  $connection = mysql_connect("localhost", "", "") or die("Kunde inte skapa koppling!");
		   
		  	  mysql_select_db("dmsverige_se") or die("Kunde inte välja databas");
		  
		   	  $laggTill = "INSERT INTO tracks_info (titel, mix, text) VALUES ('$titel', '$mix', '$text')";
		  	  mysql_query($laggTill) or die("Det gick inte att lägga till information!");
		  
		      mysql_close($connection);
		      
		      print("Information lades framgångsrikt till i databasen!");
		      print("\<hr noshade size=1 color=#000000\>");
	      } 
	    
		 			  
     ?\>

\</body\>

</html>

Hur får man latid och id att "spela tillsammans"?

Tackasam för svar / Trevande novis

Medlem sedan mars 2003429 inlägg
#13

Här har du glömt { }

<?php if(empty($_POST['titel'])){
$titel = "not set";
if(empty($_POST['mix']))
$mix = "not set";
if(empty($_POST['text']))
$text = "not set";

}

Men sparades datan i databasen alltså men kommer inte ut på sidan sen?
Testa att titta på register.php och tryck ctrl+F5 då ska allt komma upp!

Kollade på koden igen och såg att för att listan ska komma upp krävs det ju att du lägger in ovanstående data i tabellen tracks också, iom att det är från den du hämtar all information från på register.php

Så mitt tips nu är att du skrotar tracks tabellen och ändrar koden i register.php så den hämtar informationen från tracks_info istället.

Medlem sedan juli 200457 inlägg
#14

Harändrat i register.php men får det inte att fungera

register.php
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Ny sida 1</title>
</head>

<body>
<?php

echo("
<table>
<tr>
<td><b>Titel</b><br>
<a href='register.php?orderby=titel'>Ordna efter titel</a></td>
<td><b>Mix</b><br>
<a href='register.php?orderby=mix'>Ordna efter mix</a></td>
</tr>
<tr>
");

/// Ansluter
mysql_connect(localhost,dmsverige_se,LÖSEN);
mysql_select_db(dmsverige_se);

/// Hämtar låtarna från databasen
$latar = mysql_query("SELECT * FROM tracks_info ORDER BY $orderby desc");
WHILE($rad=mysql_query($latar)){

$id=$rad\["id"\];
$titel=$rad\["titel"\];
$mix=$rad\["mix"\];

/// Stoppar in värdena i tabellen

echo("
<td><a href='latinfo.php?id=$id'>$titel</a></td>
<td><a href='latinfo.php?id=$id'>$mix</a></td>
");
}
echo("
</tr>
</table>
");

?>

</body>

</html>

latinfo.php
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Ny sida 1</title>
</head>

<body>
<?php

/// Ansluter
mysql_connect(localhost,dmsverige_se,LÖSEN);
mysql_select_db(dmsverige_se);

/// Hämtar låtinfo från databasen med limit 1
$info = mysql_query("SELECT * FROM tracks_info ORDER BY id desc LIMIT 1");
WHILE($rad=mysql_query($info)){

$titel=$rad\["titel"\];
$mix=$rad\["mix"\];
$text=$rad\["text"\];

/// Skriver en söt liten info text om låten/mixen
echo("
<b>$titel <i>($mix)</i></b>
<br>$text
");
}
?>

</body>

</html>

TYcker det verkar som om koden inte laddar ner databasen.

Medlem sedan mars 2003429 inlägg
#15

Har du skapat någon tabell i databasen som heter tracks_info då?
så du inte bara har tracks?
Säker på att det finns någon data i tabellerna?

Medlem sedan juli 200457 inlägg
#16

Jag har skapat en tabell som heter tracks_info och har lagt till två poster för att se om det fungerar.

Medlem sedan juli 200457 inlägg
#17

Kanske gjort något fel i deklarationen av tabellen?
id står som int(9) med auto_increment
titel står som varchar(50)
mix står som varchar(50)
text står som text

Medlem sedan mars 2003429 inlägg
#18

testade just med mysql_fetch_array() på b-one funkar fin fint!

Ersätt :
WHILE($rad=mysql_query
med
WHILE($rad=mysql_fetch_array

då funkar det mycket bättre!

Medlem sedan juli 200457 inlägg
#19

änmdrade till WHILE($rad=mysql_fetch_array och fick detta till svar

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /customers/dmsverige.se/dmsverige.se/httpd.www/register.php on line 28

Medlem sedan aug. 20002 975 inlägg
#20

Vad får du ut om du skriver så här:

mysql_connect('localhost', 'dmsverige_se', 'LÖSEN');
mysql_select_db('dmsverige_se');

/// Hämtar låtarna från databasen
$sql = "SELECT * FROM tracks_info ORDER BY $orderby desc";
$latar =  mysql_query($sql) or die("SQL: $sql <br>".mysql_error());

while ($rad = mysql_fetch_assoc($latar)) {

    $id=$rad["id"];
    $titel=$rad["titel"];
    $mix=$rad["mix"];

    /// Stoppar in värdena i tabellen

    echo("
      <td><a href='latinfo.php?id=$id'>$titel</a></td>
      <td><a href='latinfo.php?id=$id'>$mix</a></td>
    ");

}

Varifrån kommer $orderby ?

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)