Sida 2 av 10

Postat: 10 oktober 2006, 18:05:43
av JimmyAndersson
*Studs* :)

Ingen som har något tips angående detta:

Enligt phpMyAdmin så har jag Inga privilegier att skapa en ny databas. Jag kan däremot se databaser jag gjort "manuellt" på servern. Vad kan detta bero på?

Postat: 10 oktober 2006, 18:08:40
av MicaelKarlsson
Inte ens som root?

[Skryt]
Har precis lyckats skapa min första databas. :)
[/Skryt]

Postat: 10 oktober 2006, 18:10:21
av JimmyAndersson
Gratulerar! :)

Nop, inte ens som root. Lite smått skumt.

Postat: 10 oktober 2006, 18:25:50
av MicaelKarlsson
Försökt med klassisk windowstaktik och starta om MySQL-servern?
Du har kontakt med MySQL-servern via phpMyAdmin och det finns inga knasiga inställningar som bara ger dig läsrättigheter från phpMyAdmin?


Mysko, fick detta meddelandet när jag skulle skicka detta meddelande!
Could not connect to the database
Ett antal rader till, men detta var "kuligast" :D

Postat: 10 oktober 2006, 19:01:56
av JimmyAndersson
:lol:


Passar nog på att starta om hela servern. Uptime: 45 dagar.
Hm, lite skillnad mot den här WinXP-burken. Uptime: ca 10 timmar. :)

Återkommer med resultatet.

Postat: 10 oktober 2006, 19:20:11
av JimmyAndersson
Nu fungerar det! :)

Två problem lösta på en dag. Trevligt.

Postat: 10 oktober 2006, 19:21:41
av MicaelKarlsson
Inte illa! Grattis :)

Postat: 11 oktober 2006, 00:39:47
av JimmyAndersson
Tack! :)

Jag har lyckats göra en databas och även en sida där jag kan lägga till innehåll i databasen.

Men: jag lyckas inte hämta data från databasen och visa i en tabell.
Det finns ju hur mycket info som helst på nätet, men jag har inte hittat något som på ett enkelt sätt visar hur man gör. Det närmaste jag hittat är separata sidor som visar hur det fungerar i MySQL och PHP, men ingen sida som satt ihop både MySQL och PHP. Det blir lite svårt att försöka lära sig samtidigt som man går efter två sidor där de använt lite olika metoder och variabel-namn...

Någon som kan visa ett litet exempel med en databas bestående av 4st kolumner?

Postat: 11 oktober 2006, 10:36:43
av MicaelKarlsson
"Någon som kan visa ett litet exempel med en databas bestående av 4st kolumner?"
Jepp, du kan ju sno samma exempel som jag gjort, eeehh... jag menar låna så klart :D

http://www.datormagazin.se/download/arc ... asyphp.zip

Edit: hittade en artikel i Datormagazin 1/2006 om Easyphp och länken ovan.

Postat: 11 oktober 2006, 12:04:10
av JimmyAndersson
Tack igen! :)

Filen list.php är ungefär vad jag provade med, men jag lyckades inte få while-delen (rad 30-39) att fungera. Ska kika på hur de har gjort.

Postat: 11 oktober 2006, 12:40:49
av cykze
Typ så här:

Kod: Markera allt

$db = mysql_connect('localhost', 'jimmy', 'AnDErSSON'); // Ansluter till databasservern
mysql_select_db('komponentdatabasen'); // Väljer databas

$query = 'SELECT * FROM komponentlista'; // Sätter ihop en SQL-sträng
$res = mysql_query($query); // Kör SQL-satsen

echo '<table>'; // Startar en tabell i HTML

while (($row = mysql_fetch_assoc($res))) // Loopar igenom resultaten
{
	echo '<tr>'; // Startar rad i HTML

	$antal = $row['antal']; // 'antal' är alltså namnet på en kolumn i databastabellen
	$artikelnummer = $row['artikelnummer'];

	echo "<td>$antal</td>";
	echo "<td>$artikelnummer</td>";

	echo '</tr>';
}

echo '</table>';

mysql_close($db);
edit: mysql_db_query() -> mysql_query()

Postat: 11 oktober 2006, 14:09:22
av JimmyAndersson
Jag får dessa felmeddelanden när jag kör den koden:

Warning: Wrong parameter count for mysql_db_query() on line 6

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource on line 10


Rad 6:
$res = mysql_db_query($query); // Kör SQL-satsen

Rad 10:
while (($row = mysql_fetch_assoc($res))) // Loopar igenom resultaten


Det är likadant som jag fick med min kod, som är väldigt lik.




Sedan upptäckte jag att det finns något fel i min kod för att skicka data till databasen. Datan hamnar aldrig i databasen.

Lite kod:

Kod: Markera allt

<form action="<?echo $_SERVER['PHP_SELF']?>" method="POST">
<input name="add_komponent" type="text" id="add_komponent" size="45" maxlength="35"> 
<input name="add_antal" type="text" id="add_antal" size="6" maxlength="3">
<input name="add_artnr" type="text" id="add_artnr" size="10" maxlength="10">
<input name="add_saljare" type="text" id="add_saljare" size="14" maxlength="14">
<input name="laggtill" type="submit" id="laggtill" value="L&auml;gg till">
</form>



<?

    $addkomponent = $_POST['add_komponent'];
    $addantal = $_POST['add_antal'];
    $addartnr = $_POST['add_artnr'];
    $addsaljare = $_POST['add_saljare'];


    // Anslut till databasen
    $conn = mysql_connect( $host, $user, $pass );
    if (! $conn) {
        print ("Anslutningen misslyckades");
        exit;
    } 
    
    mysql_select_db($user);

    mysql_query("INSERT INTO 
            motstand (komponent,antal,artnr,saljare)
             VALUES
                ('$addkomponent','$addantal','$addartnr','$addsaljare')");

    // Stäng
    mysql_close( $conn );
?>

Det ser väl ok ut?

Postat: 11 oktober 2006, 23:11:58
av JimmyAndersson
Nu kan jag skicka data till databasen! 8)

Detta var fel:
mysql_select_db($user);

Istället skulle det förstås vara namnet på databasen, så jag gjorde såhär:
mysql_select_db($databas);

där $databas="komponentlager"; (Har även gjort likadant med $host, $user och $password.


Däremot har jag forfarande samma problem med att visa databasen. (Se förra inlägget.)

Jag har inte programmerat särskillt mycket php innan. Har mest kört perl och javascript, men efter de senaste två dagarnas programmering så har jag fastnat för php som är ett mycket roligt språk! Jag har inte riktigt "kommit in" i SQL än, men det löser sig nog ju mer man programmerar.

Postat: 11 oktober 2006, 23:29:34
av sodjan
Alltså...

$db i din "mysql_connect" blir en "handle" till databasen.

Denna måste sedan skickas med så att PHP/MySQL vet *vilken*
databas-attach du kör mot. Du kan alltså ha flera $db1, $db2 o.s.v.
"i luften" samtidigt genom att köra flera "mysql_connect".

Sen är "mysql_db_query" depricated (och dessutom användes det utan "mysql_select_db").
Använd istället "mysql_select_db" och "mysql_query".
Din syntax är även fel för "mysql_db_query", den ska ha db-namn som första parameter.

Prova något i stil med:

Kod: Markera allt

$db = mysql_connect('localhost', 'jimmy', 'AnDErSSON'); // Ansluter till databasservern
mysql_select_db('komponentdatabasen', $db); // Väljer databas

$query = 'SELECT * FROM komponentlista'; // Sätter ihop en SQL-sträng
$res = mysql_query($query, $db); // Kör SQL-satsen

echo '<table>'; // Startar en tabell i HTML

while (($row = mysql_fetch_assoc($res))) // Loopar igenom resultaten
{
   echo '<tr>'; // Startar rad i HTML

   $antal = $row['antal']; // 'antal' är alltså namnet på en kolumn i databastabellen
   $artikelnummer = $row['artikelnummer'];

   echo "<td>$antal</td>";
   echo "<td>$artikelnummer</td>";

   echo '</tr>';
}

echo '</table>';

mysql_close($db);
EDIT:
Notera att $db i "mysql_select_db" och "mysql_query" inte är *nödvändigt*
om man bara har *en* connect igång, men det gör syntaxen komplett och
minskar risken för konstiga buggar i framtiden om man skulle lägga till
en andra databas i samma kod. Latenta buggar som dyker upp i gammal
kod när ny kod läggs tid är otrevliga... :-)

Huvudproblemet var nog att du kör "mysql_db_query" istället för "mysql_query"...

Postat: 11 oktober 2006, 23:41:21
av JimmyAndersson
Aha, då förstår jag.

Nu fungerar det!

Tack! :)