Gå til innhold

Linken skrives ikke ut


Anbefalte innlegg

Hei Jeg har et lite problem i PHP nå. Se først på denne koden:

$getuser = mysql_query("SELECT * from fight_list order by id asc");
while ($user = mysql_fetch_array($getuser))
{
echo '<a href="index.php?side=fightlist&brukernavn=' . $user['username'] . '">' . $user['username'] . '</a><br />';

}

 

Der hvor det står echo og så html-koder skrives ikke linken ut, men <br /> virker fint.. Noen som vet hva dette kan komme av?

Lenke til kommentar
Videoannonse
Annonse

Nå fant jeg feilen! Jeg har ikke username i den tabellen, men jeg har et felt som heter "id", det er brukernes id. Men da sliter jeg fortsatt litt. Jeg har brukernavn i users-tabellen, men hvordan skal jeg kunne gjøøre slik at brukernavn skrives ut på skjermen. Slik at alle brukernavn i users som har sin id i fight_list-tabellen blir listet opp? Noen som vet det?

Lenke til kommentar

SELECT t2.username, t1.noe, t1.noe_annet 
FROM brukernavn_tabell t2, fight_list t1
WHERE t2.id=t1.id
GROUP BY t1.id
ORDER BY t1.id asc

 

Noe slikt, er ikke sikkert at du trenger GROUP BY, hadde vært enklere om jeg hadde sett tabell definisjonene. Jeg forutsetter at Id i brukernavn tabellen er lik id i fight_list, hvis ikke så må du bytte det ut med noe som knytter de to tabellene sammen.

Endret av crowly
Lenke til kommentar
SELECT t2.username, t1.noe, t1.noe_annet 
FROM brukernavn_tabell t2, fight_list t1
WHERE t2.id=t1.id
GROUP BY t1.id
ORDER BY t1.id asc

 

Noe slikt, er ikke sikkert at du trenger GROUP BY, hadde vært enklere om jeg hadde sett tabell definisjonene. Jeg forutsetter at Id i brukernavn tabellen er lik id i fight_list, hvis ikke så må du bytte det ut med noe som knytter de to tabellene sammen.

8653020[/snapback]

Den der fungerer vel ikke særlig bra?

Bør vel heller bruke noe ala Add Join.

SELECT u*, f.*
FROM fight_list f,
LEFT JOIN users u ON (u.id=f.id)
WHERE u.id=ID

Denne koden henter alt fra fight_list og users.

Lenke til kommentar

Da fikk jeg denne feilmeldingen:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

 

Jeg la til or die(mysql_error()) og da kom denne her:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' f.* FROM fight_list f, LEFT JOIN users u ON (u.id=f.id) WHERE u.id=ID' at line 1

 

Koden min:

 

$getuser = mysql_query("SELECT u*, f.*
FROM fight_list f,
LEFT JOIN users u ON (u.id=f.id)
WHERE u.id=ID");

while ($user = mysql_fetch_array($getuser) or die(mysql_error()))
{
echo ("<a href='index.php?side=fightlist&brukernavn=$user[username]'>$user[username]</a><br />");
}

 

Vet noen hva dette kommer av? Hvordan fikses det?

Lenke til kommentar

M4rTiN: Spørringene deres gjør i praksis akkurat det samme, bare at i crowly sin skal ikke GROUP BY være med, og i din skal ikke WHERE være med.

 

Rinox:

SELECT u.*, f.* FROM fight_list f, users u WHERE f.id = u.id

 

Og du må ha

echo "blahblah {$user['username']} lalal";

eller

echo "blahbah" . $user['username'] . "llala";

 

Sånn du har det nå fungerer innimellom, men er egentlig feil.

Lenke til kommentar

Klikk for å se/fjerne innholdet nedenfor
SELECT t2.username, t1.noe, t1.noe_annet 
FROM brukernavn_tabell t2, fight_list t1
WHERE t2.id=t1.id
GROUP BY t1.id
ORDER BY t1.id asc

 

Noe slikt, er ikke sikkert at du trenger GROUP BY, hadde vært enklere om jeg hadde sett tabell definisjonene. Jeg forutsetter at Id i brukernavn tabellen er lik id i fight_list, hvis ikke så må du bytte det ut med noe som knytter de to tabellene sammen.

8653020[/snapback]

Den der fungerer vel ikke særlig bra?

Bør vel heller bruke noe ala Add Join.

SELECT u*, f.*
FROM fight_list f,
LEFT JOIN users u ON (u.id=f.id)
WHERE u.id=ID

Denne koden henter alt fra fight_list og users.

8653461[/snapback]

 

WHERE t2.id=t1.id blir det samme som LEFT JOIN users u ON (u.id=f.id), men jeg tror LEFT JOIN er litt mer spesifikk for kolonne plassering eller noe slikt, har ikke satt meg inn i JOIN funksjonene til Mysql, er vant med Sql i Oracle og hittil så har det stortsett fungert greit for meg, men noe nytt må jeg ha lært meg :thumbup: Ellers så er det jo bare å teste, det værste som kan skje er at det ikke fungerer ;)

 

Edit: Noen kom meg i forkjøpet med ett bedre svar

Endret av crowly
Lenke til kommentar

Nå har jeg enda et lite problem med det samme scriptet mitt...

Nå ser koden slik ut:

 

Klikk for å se/fjerne innholdet nedenfor
if (!$_GET['brukernavn'])
{
$getuser = mysql_query("SELECT u.*, f.* FROM fight_list f, users u WHERE f.id = u.id");

while ($user = mysql_fetch_array($getuser))
{
echo ("<a href='index.php?side=fightlist&brukernavn=$user[username]'>$user[username]</a> , ");
}
}
else
{

$motstanderSporring = mysql_query("SELECT `id` FROM `users` WHERE `username` = '" . $_GET['brukernavn'] . "'"); 
$motstanderObj = mysql_fetch_object($motstanderSporring);
$motstander_id = $motstanderObj->id;


switch($_GET[act])
{
case 'sloss':

$motstanderInfo = mysql_fetch_array(mysql_query("SELECT * FROM fight_info WHERE id = " . $motstander_id));

$brukerInfo = mysql_fetch_array(mysql_query("SELECT * FROM fight_info WHERE id = " . $bruker_id));

if ($brukerInfo['level'] > $motstanderInfo['level']) {
 //bruker vinner'
 echo("du vant.");
}
elseif ($brukerInfo['level'] == $motstanderInfo['level']) {
 //Like sterke i level, prosent teller
 echo("likt");
 if ($brukerInfo['percent'] > $motstanderInfo['percent']) {
 	//bruker vinner
 	echo("wg");
 }
 elseif ($brukerInfo['percent'] == $motstanderInfo['percent']) {
 	//like sterke, tilfeldig trekning
 	echo("sfdh");
 }
 else {
 	//bruker taper
 	echo("ffff");
 }
}
else {
 //bruker taper
 echo("taper!");
}
echo("ehbtegtrheth");

break;
}


$getuser = mysql_query("SELECT * from fight_list");
$usernum = mysql_num_rows($getuser);
if ($usernum == 0)
{
echo ("<b>Brukeren er ikke lenger klar for sverdkamp!</b>");
}
else
{
if ($_GET['brukernavn'] == $logged['username']) {
 echo ("<b>Du kan ikke angripe deg selv. Velg en annen spiller.</b>");
}
else {
$bet = mysql_fetch_array(mysql_query("SELECT * FROM fight_list WHERE id = " . $motstander_id));
echo("For å slåss mot " . $_GET['brukernavn'] . " må du vedde " . $bet['bet'] . " kroner.<b />");
echo("<form action='?side=fightlist&go=fightlist&act=sloss' method='post'><input type='submit' name='submit' value='Sloss om " . $bet['bet'] . " kroner'></form>");
}
}





}

 

Etter jeg har sendt det skjemaet hvor det står: "For å sloss mot blablabla må du vedde blablabla kroner" så skjer ingenting av det som skal skje i casen "sloss".... Noen som vet hva som kan være problemet? Alt er helt vanlig...

Lenke til kommentar

Hjelper ikke... :( Kanskje det er fordi at et annet sted i koden som jeg ikke har vist dere så bruker jeg også switch($_GET[act]). Går det ikke ann å bruke to like på forskjellige steder?

 

EDIT: Nei, Ståle, jeg får ikke ut noe av det... :hmm:

Endret av Rinox
Lenke til kommentar

Foreslår heller at du binder case'ene til en eller flere funksjoner

 

PHP
<?php

switch ( $_GET['act'] )

{

case 'sloss':

dothis();

dothat();

}

?>

Men siden du kun har en case, hvorfor ikke ta det i en if istede?

if ( $_GET['act'] == 'sloss' ).

 

En annen debugmulighet man har er å printe ut linjenummeret.

PHP
<?php

echo __LINE__ "<br />";

//Litt kode

echo __LINE__ "<br />";

//enda mer kode

echo __LINE__ "<br />";

?>

Putt denne før og etter alle if'er feks. Så finner man lettere ut hvor saker og ting stopper opp.

Lenke til kommentar
Foreslår heller at du binder case'ene til en eller flere funksjoner

 

PHP
<?php

switch ( $_GET['act'] )

{

case 'sloss':

dothis();

dothat();

}

?>

Men siden du kun har en case, hvorfor ikke ta det i en if istede?

if ( $_GET['act'] == 'sloss' ).

 

 

Skjønte ikke helt hva du mente her... :hmm: Kan du forklare litt nærmere?

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...