Komponent-databas och SQL

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
JimmyAndersson
Inlägg: 26568
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg 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å?
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Inlägg av MicaelKarlsson »

Inte ens som root?

[Skryt]
Har precis lyckats skapa min första databas. :)
[/Skryt]
Användarvisningsbild
JimmyAndersson
Inlägg: 26568
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Gratulerar! :)

Nop, inte ens som root. Lite smått skumt.
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Inlägg 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
Användarvisningsbild
JimmyAndersson
Inlägg: 26568
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg 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.
Användarvisningsbild
JimmyAndersson
Inlägg: 26568
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Nu fungerar det! :)

Två problem lösta på en dag. Trevligt.
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Inlägg av MicaelKarlsson »

Inte illa! Grattis :)
Användarvisningsbild
JimmyAndersson
Inlägg: 26568
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg 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?
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Inlägg 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.
Användarvisningsbild
JimmyAndersson
Inlägg: 26568
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg 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.
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg 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()
Senast redigerad av cykze 14 oktober 2006, 15:49:36, redigerad totalt 1 gång.
Användarvisningsbild
JimmyAndersson
Inlägg: 26568
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg 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?
Användarvisningsbild
JimmyAndersson
Inlägg: 26568
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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"...
Användarvisningsbild
JimmyAndersson
Inlägg: 26568
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Aha, då förstår jag.

Nu fungerar det!

Tack! :)
Skriv svar