Gå til innhold

Problem med å hente ut info fra MySQL-db (sjekk innlegg#12)! *OPPDATERT*


Anbefalte innlegg

Hei!

 

Jeg holder på å fikse meg en database for DVD-ene jeg eier. Jeg har følgende i add-skjemaet:

<form enctype="multipart/form-data" action="add.php" method="post">
<table align="center">
	<tr>
		<td><p><strong>Tittel:</strong></p></td>
		<td><input type="text" name="tittel" /></td>
	</tr>
	<tr>
		<td><p><strong>Bilde:</strong></p></td>
		<td><input type="text" name="bilde" /></td>
	</tr>
	<tr>
		<td><p><strong>Lagt til:</strong></p></td>
		<td><input type="text" name="added" value="<?=date("d.m-y")?>" /></td>
	</tr>
	<tr>
		<td><p><strong>Regi:</strong></p></td>
		<td><input type="text" name="regi" /></td>
	</tr>
	<tr>
		<td><p><strong>Sjanger:</strong></p></td>
		<td><input type="text" name="sjanger" /></td>
	</tr>
	<tr>
		<td><p><strong>Vurdering:</strong></p></td>
		<td><input type="text" name="vurdering" /></td>
	</tr>
	<tr>
		<td><p><strong>Anmeldelse:</strong></p></td>
		<td><input type="text" name="anmeldelse" /></td>
		<td>
			<select name="anmeldelsejanei">
				<option value="0" selected="selected">Nei</option>
				<option value="1">Ja</option>
			</select>
		</td>
	</tr>
	<tr>
		<td><p><strong>IMDb-link:</strong></p></td>
		<td><input type="text" name="imdb"  /></td>
	</tr>
	<tr>
		<td><input class="inp" type="submit" value="Legg til DB" /></td>
	</tr>
</table>
</form>

Følgende i add.php:

<h2>Legger til ny DVD i databasen</h2>
<?php
mysql_connect('localhost','halovasj_dvddb','XXX');
@mysql_select_db('halovasj_dvddb') or die("Ikke mulig å finne database");
mysql_query("INSERT INTO dvd (id, tittel, bilde, added, regi, sjanger, vurdering, anmeldelse) VALUES ('','$_POST[id]','$_POST[tittel]','$_POST[bilde]','$_POST[added]','$_POST[regi]','$_POST[regi]','$_POST[sjanger]','$_POST[vurdering]','$_POST[anmeldelse]')");
?>
<p style="text-align: center;">Ferdig. Ny sak er nå lagt til.</p>

Når jeg trykker på submit-knappen, kommer add.php frem - men databasen er fortsatt tom! :-o

Her er et skjermskudd fra phpMyAdmin:

post-43699-1214353977_thumb.jpg

 

Jeg lurer også på hvordan jeg kan gjøre slik at om Ja ("1") er valgt i anmeldelsejanei, blir det postet slik som dette:

<td><p><strong>Anmeldelse:</strong> <a href="<?=$myrow['anmeldelse]?>" target="_blank">Les anmeldelse</a></p>

Om Nei ("0") er valgt, vil jeg at Anmeldelse-td-en nedenfor skal skrives slik:

<td><p><strong>Anmeldelse:</strong> Nei</p>

 

Edit: Jeg fikset slik at id er primær og at den har auto_increment.

Endret av Jooakim
Lenke til kommentar
Videoannonse
Annonse

Har ikke sett i gjennom skikkelig, men legg til

echo mysql_error();

på en ny linje etter spørringen din, da vil du få returnert eventuelle feil fra spørringen din.

 

Ang. det andre spørsmålet ditt finner jeg ikke anmeldelsejanei, men jeg regner med det blir omtrendt slik (du forstår nok prinsippet):

if($myrow['anmeldelsejanei'] == '1'){
echo '<td><p><strong>Anmeldelse:</strong><a href="'.$myrow['anmeldelse'].'" target="_blank">Les anmeldelse</a></p>';
}else{
echo '<td><p><strong>Anmeldelse:</strong> Nei</p>';
}

 

Lykke til :)

Lenke til kommentar

http://htmlfixit.com/cgi-tutes/tutorial_My...Value_Count.php

 

Altså; i stedet for å kjøre spørringen

INSERT INTO dvd (id, tittel, bilde, added, regi, sjanger, vurdering, anmeldelse) VALUES ('','$_POST[id]','$_POST[tittel]','$_POST[bilde]','$_POST[added]','$_POST[regi]','$_POST[regi]','$_POST[sjanger]','$_POST[vurdering]','$_POST[anmeldelse]')

gjør du heller slik:

INSERT INTO dvd (tittel, bilde, added, regi, sjanger, vurdering, anmeldelse) VALUES ('$_POST[id]','$_POST[tittel]','$_POST[bilde]','$_POST[added]','$_POST[regi]','$_POST[regi]','$_POST[sjanger]','$_POST[vurdering]','$_POST[anmeldelse]')

Lenke til kommentar

Gjorde det, så slik er koden nå:

<?php
mysql_connect('localhost','halovasj_dvddb','XXX');
@mysql_select_db('halovasj_dvddb') or die("Ikke mulig å finne database");
mysql_query("INSERT INTO dvd (tittel, bilde, added, regi, sjanger, vurdering, anmeldelse) VALUES ('$_POST[id]','$_POST[tittel]','$_POST[bilde]','$_POST[added]','$_POST[regi]','$_POST[regi]','$_POST[sjanger]','$_POST[vurdering]','$_POST[anmeldelse]'");
echo '<div id="error">
	<p>' . mysql_error() . '</p>
</div>';
?>

Endret av Jooakim
Lenke til kommentar

Hurra!

 

Fikk fikset det! :-D

 

mysql_connect('localhost','halovasj_dvddb','XXX');
@mysql_select_db('halovasj_dvddb') or die("Ikke mulig å finne database");
mysql_query("INSERT INTO dvd (id, tittel, bilde, added, regi, sjanger, vurdering, anmeldelse, anmeldelsejanei) VALUES('','$_POST[tittel]','$_POST[bilde]','$_POST[added]','$_POST[regi]','$_POST[sjanger]','$_POST[vurdering]','$_POST[anmeldelse]','$_POST[anmeldelsejanei]')");

Endret av Jooakim
Lenke til kommentar

Beklager dobbelpost, men det har oppstått et nytt problem. Jeg har problemer med å hente ut info fra databasen.

<!-- Start innlegg //-->
<div id="innlegg">
<?php
	mysql_connect('localhost','halovasj_dvddb','XXX');
		@mysql_select_db('halovasj_dvddb') or die("Ikke mulig å finne database");
		switch ( $page ) {
		default:
			$resultat = mysql_query("SELECT * FROM dvd ORDER BY id DESC");
		break;
		case "eldst":
			$resultat = mysql_query("SELECT * FROM dvd ORDER BY LCASE(eldst) DESC, id ASC");
		break;
		case "vurdering":
			$resultat = mysql_query("SELECT * FROM dvd ORDER BY LCASE(vurdering) ASC, vurdering DESC");
		break;
		case "regi":
			$resultat = mysql_query("SELECT * FROM dvd ORDER BY LCASE(regi) ASC, vurdering DESC");
		break;
		case "sjanger":
			$resultat = mysql_query("SELECT * FROM dvd ORDER BY LCASE(sjanger) ASC, sjanger DESC");
		break;
		case "page":
			$resultat = mysql_query("SELECT * FROM dvd ORDER BY id DESC LIMIT " . $_GET['start'] .",25");
		$last = ( $_GET['start']-25 );
		if ($last < 0 ) $last = 0;
		break;
	}
?>
<? echo mysql_error() ?>
<div id="db">
	<div class="dvd">
		<img class="dvdbilde" src="<? $myrow['bilde'] ?>.jpg" border="0" alt="<? $myrow['tittel'] ?>" />
		<h2><? $myrow['tittel'] ?></h2>
		<p><span class="hva">Lagt til:</span> <? $myrow['added'] ?></p>
		<p><span class="hva">Regi:</span> <? $myrow['regi'] ?></p>
		<p><span class="hva">Sjanger:</span> <? $myrow['sjanger'] ?></p>
		<p><span class="hva">Vurdering:</span> <img src="<? $myrow['vurdering'] ?>.jpg" border="0" alt="<? $myrow['vurdering'] ?>" /></p>
		<p><span class="hva">IMDb:</span> <a href="http://www.imdb.com/title/<? $myrow['imdb'] ?>" target="_blank">Gå til IMDb-profil</a></p>
		<p><span class="hva">Anmeldelse:</span> <a href="#">Les anmeldelse</a></p>
	</div>
</div>
</div>
<!-- End innlegg //-->

Lenke til kommentar

Jeg får ingen feilmelding (se her). Det jeg også lurer på, er hvordan jeg kan implementere koden du ga meg i ditt første innlegg i tråden. Vil det bare å legge det rett inn "<p><span class="hva">Anmeldelse:</span> <? HER ?></p>"?

 

Jeg har ingen planer - men selvfølgelig kan det jo hende at jeg kommer til å gjøre noe mer etterhvert. Jeg har forresten tenkt å fikse en edit-side - men det fikser jeg nok når jeg har fått dette fikset. Det eneste jeg trenger å vite er hvordan jeg kan lage en input-sak der jeg skriver inn id-en til film jeg ønsker å redigere.

 

Edit: Ifølge phpMyAdmin er det noe i databasen:

 	 Plassbruk
Type	 	Bruk
Data 	 	80 B
Indeks 	2,048 B
Totalt 	2,128 B

 

Hei,

 

jeg har fortsatt fire ting jeg lurer på - ikke med å legeg inn i databasen, men å hente ut data og lignende. Koden jeg har nå, ser slik ut:

<?
mysql_connect('localhost','halovasj_dvddb','XXX');
@mysql_select_db('halovasj_dvddb') or die("Ikke mulig å finne database");
$sel = mysql_query("SELECT * FROM dvd");
$num_rows = mysql_num_rows($sel);
?>
<!-- Start innlegg //-->
<div id="innlegg">
<?
	echo mysql_error();
	$myrow = mysql_fetch_array($resultat, MYSQL_NUM);
	switch ( $page ) {
	default:
		$result = mysql_query("SELECT * FROM dvd ORDER BY id DESC");
	break;
	case "eldst":
		$result = mysql_query("SELECT * FROM dvd ORDER BY LCASE(eldst) DESC, id ASC");
	break;
	case "vurdering":
		$result = mysql_query("SELECT * FROM dvd ORDER BY LCASE(vurdering) ASC, vurdering DESC");
	break;
	case "regi":
		$result = mysql_query("SELECT * FROM dvd ORDER BY LCASE(regi) ASC, vurdering DESC");
	break;
	case "sjanger":
		$result = mysql_query("SELECT * FROM dvd ORDER BY LCASE(sjanger) ASC, sjanger DESC");
	break;
	case "page":
		$result = mysql_query("SELECT * FROM dvd ORDER BY id DESC LIMIT " . $_GET['start'] .  ",25");
		$last = ( $_GET['start']-25 );
		if ($last < 0 ) $last = 0;
	break;
	}
?>
<div class="dvd">
	<img class="dvdbilde" src="<? echo $myrow['bilde'] ?>.jpg" border="0" alt="<? echo $myrow['tittel'] ?>" />
	<h2><? $myrow['tittel'] ?></h2>
	<p><span class="hva">Lagt til:</span> <? echo $myrow['added'] ?></p>
	<p><span class="hva">Regi:</span> <? echo $myrow['regi'] ?></p>
	<p><span class="hva">Sjanger:</span> <? echo $myrow['sjanger'] ?></p>
	<p><span class="hva">Vurdering:</span> <img src="<? echo $myrow['vurdering'] ?>.jpg" border="0" alt="<? echo $myrow['vurdering'] ?>" /></p>
	<p><span class="hva">IMDb:</span> <a href="http://www.imdb.com/title/<? echo $myrow['imdb'] ?>" target="_blank">Gå til IMDb-profil</a></p>
	<p><span class="hva">Anmeldelse:</span> <a href="#">Les anmeldelse</a></p>
</div>
</div>
<!-- End innlegg //-->

Ellers lurer jeg på følgende:

  • Hvordan kan jeg la scriptet lage ny div for hver rad i databasen? Dette scriptet legger kun til én div. Jeg har brukt et annet script som veiledning, det er så å si likt, og det scriptet viser alle rader, og ikke bare én.
  • Gjør dette scriptet slik at det kun vises 25 rader kun ved sortering etter id? Om det er slik - hvordan kan jeg gjøre slik at det viser 25 rader uansett hva det sorteres etter? Og er det mulig å lage en "alias" som gjør at &page=2 viser de neste 25 osv.?
  • Jeg har tenkt å lage et redigeringsscript. Her er jeg ute etter å lage en input der jeg kan skrive inn id-en til den saken jeg vil redigere. Ved å trykke på submit, vil jeg at det skal postes verdiene for de forskjellige kolonnene(?) i inputs lengre nede på siden. Ved å trykke på neste submit-knapp, skal verdiene inputs skrive over de som allerede er i databasen.
  • Jeg får også en feilmelding på siden hvor det står "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/XX/dvddb.php on line 77" Linje 77 er "$myrow = mysql_fetch_array($resultat, MYSQL_NUM);"

Hadde vært veldig takknemmelig om noen kunne ha hjulpet meg her! :-)

Endret av Jooakim
Lenke til kommentar

Du vil sannsynligvis ikke finne et slikt script, i sin helhet. Du kan derimot prøve å lage et selv, ved hjelp av forumet og kombinering og implementring av andre skript.

 

Spørsmål 1: F.eks slik:

$array = mysql_query("SELECT `id`,`Header` FROM table");
while($row = mysql_fetch_array($array)){
echo '<div class="row">'.$row['id'].'::'.$row['Header'].'</div>';
}

Denne loopen vil liste alle "radene" i arrayet helt til det går tomt.

 

Spørsmål 2: Ved bruk av LIMIT-begrensing i SQL-spørringen din er dette fint mulig, søk litt rundt først, se f.eks her, her og her.

 

Spørsmål 3: Den tok jeg ikke, forklar litt nærmere :)

Spørsmål 4: Slike feilmeldinger skyldes ofte feilgivende spørringer mot SQL, da disse returnerer et tomt resultat/feilmelding, som blir mistolket av PHP. Vis oss heller spørringen din ;)

Endret av Garanti
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...