webForumDet fria alternativet

Hämta data från mysql efter url?

PHPur PHP

9 svar · 1 178 visningar · startad av Akerlundh

Medlem sedan maj 20031 682 inlägg
Frågan#1

Skriver jag sidan.php?id=1 så vill ja skriva ut information som finns just på det id.

något i stil med detta vill jag ska hämtas från databasen. Men vet inte hur jag ska skriva koden så han ska hämta id nummer från url.

SELECT * FROM lead WHERE id = ".$id

Medlem sedan maj 20031 682 inlägg
#2

Vet inte om jag är ute och cyklar nu men kan det vara denna kod jag letar efter? Om det är det så funkar det inte ändå :P


<?php
$dbhost = '';
$dbuser = '';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}

$id = (int) $_GET['id']; 
$sql = "SELECT * FROM lead WHERE id = '$id'";  

mysql_select_db('');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
    echo " {$row['foretag']}  ".
         " {$row['ort']}  ".
         " {$row['mobilnr']} ".
         " {$row['kontaktperson']} ".
         " {$row['ovriginfo']} ".
         " {$row['utfall']} ";
} 
mysql_close($conn);
?>
Medlem sedan mars 2006296 inlägg
#3

Får du några felmeddelanden eller blir det bara en blank sida?

Om du vill visa alla felmeddelanden kan du lägga till det här längst upp efter "<?php"

error_reporting(E_ALL);
ini_set("display_errors", "1");

...och det kan vara vettigt att kontrollera så id är satt

if(isset($_GET['id']) && is_numeric($_GET['id'])){
    $id = (int)$_GET['id'];  
    $sql = "SELECT * FROM lead WHERE id = " . $id ." LIMIT 1"; 
} else {
    // Vad som händer om inte id finns
    die("Inget ID");
}
Medlem sedan maj 20031 682 inlägg
#4

Får bara en blank sida och inga felmeddelande trots att jag satt in koden du skrev ovan.

Medlem sedan maj 20031 682 inlägg
#5

Jag är så korkad! Jag har ju skrivet ett id som inte finns så det är ju inte konstigt att det inte kommer fram något resultat.

Medlem sedan maj 20031 682 inlägg
#6

Kan ju passa på att fråga om du vet vad detta problemet kan bero på ?

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /storage/content/51/191351/crm.mivamedia.se/public_html/update_lead.php on line 30

if(isset($_GET['id']) && is_numeric($_GET['id'])){ 
$id = (int)$_GET['id']; 
$sql=" UPDATE lead (orgnr, foretag, kontaktperson, ftgnr, mobilnr, epost, besokadress, ovriginfo, utfall, datum, ort, agare, senastupdaterad)
VALUES ('$orgnr', '$foretag', '$kontaktperson', '$ftgnr', '$mobil', '$epost', '$besokadress', '$ovriginfo', '$utfall', '$datum', '$ort', '$agare', NOW())
WHERE id=" . $id ." LIMIT 1"";
} else { 
    // Vad som händer om inte id finns 
    die("Inget ID"); 
}  <!--- linje 30
Medlem sedan jan. 2005953 inlägg
#7

Du har ett citationstecken (") för mycket efter LIMIT 1 några rader ovanför.

Medlem sedan maj 20031 682 inlägg
#8

metalboy skrev:

Du har ett citationstecken (") för mycket efter LIMIT 1 några rader ovanför.

När jag tog bort det fick jag.

Error: 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 '(orgnr, foretag, kontaktperson, ftgnr, mobilnr, epost, besokadress, ovriginfo, u' at line 1
Medlem sedan jan. 2005953 inlägg
#9

En UPDATE-sats ska skrivas som

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

(http://dev.mysql.com/doc/refman/5.0/en/update.html)

Skriv alltså om det så här:

$sql="UPDATE lead SET orgnr='$orgnr', foretag='$foretag', kontaktperson='$kontaktperson', ftgnr='$ftgnr', mobilnr='$mobil', epost='$epost', besokadress='$besoksadress', ovriginfo='$ovriginfo', utfall='$utfall', datum='$datum', ort='$ort', agare='$agare', senastupdaterad=NOW()
WHERE id=" . $id ." LIMIT 1";

Jag vill också passa på att påpeka att PHP:s mysql-funktioner är deprecated. Det betyder att de kommer att försvinna i någon av de kommande versionerna. Titta gärna på PDO eller Mysqli istället.

Medlem sedan maj 20031 682 inlägg
#10

metalboy skrev:

En UPDATE-sats ska skrivas som

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

(http://dev.mysql.com/doc/refman/5.0/en/update.html)

Skriv alltså om det så här:

$sql="UPDATE lead SET orgnr='$orgnr', foretag='$foretag', kontaktperson='$kontaktperson', ftgnr='$ftgnr', mobilnr='$mobil', epost='$epost', besokadress='$besoksadress', ovriginfo='$ovriginfo', utfall='$utfall', datum='$datum', ort='$ort', agare='$agare', senastupdaterad=NOW()
WHERE id=" . $id ." LIMIT 1";

Jag vill också passa på att påpeka att PHP:s mysql-funktioner är deprecated. Det betyder att de kommer att försvinna i någon av de kommande versionerna. Titta gärna på PDO eller Mysqli istället.

Nu funkade det. Tusen tack.

134 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)