2010-03-18 3 views
0

Depuis une table MySQL appelée "submission" contenant les champs "loginid, submissionid, titre, url, datesubmitted, displayurl", je voudrais imprimer un tableau HTML qui contient tous les "title" "et correspondant" datesubmitted "où" loginid "est égal à" $ profile ". Le code que j'essaie d'utiliser est ci-dessous. Ça ne marche pas. Des idées pour lesquelles ça ne marche pas?Extraction de données et impression dans un tableau HTML

Merci à l'avance,

John

$profile = $_GET['profile']; 

$sqlStr = "SELECT loginid, submissionid, title, url, datesubmitted, displayurl 
      FROM submission 
      WHERE loginid = $profile 
     ORDER BY datesubmitted DESC";  

$result = mysql_query($sqlStr); 

$arr = array(); 
echo "<table class=\"samplesrec\">"; 
while ($row = mysql_fetch_array($result)) { 
    echo '<tr>'; 
    echo '<td class="sitename1"><a href="http://www.'.$row["url"].'">'.$row["title"].'</a></td>'; 
    echo '</tr>'; 
    echo '<tr>'; 
    echo '<td class="sitename2">'.$row["datesubmitted"].'</a></td>'; 
    echo '</tr>'; 
    } 
echo "</table>"; 
+0

Impossible de voir quelque chose de mal, autre qu'une injection SQL potentielle. Qu'obtenez-vous et qu'attendez-vous? –

Répondre

1

Votre requête est probablement échoué.

Essayez de renvoyer le retour de mysql_error(); après avoir essayé la requête pour voir quel pourrait être le problème.

Vous devriez également protéger votre entrée contre l'injection. Si loginID est un nom d'utilisateur, vous devez entourer une chaîne dans une requête mySQL avec des guillemets - si loginID est un nom d'utilisateur. Si c'est un nombre entier, ça peut aller.

Il existe des moyens plus robustes pour faire cela, mais simplement:

$profile = mysql_real_escape_string($_GET['profile']); 

    $sqlStr = "SELECT loginid, submissionid, title, url, datesubmitted, displayurl 
       FROM submission 
       WHERE loginid = '$profile' 
      ORDER BY datesubmitted DESC"; 

    $result = mysql_query($sqlStr); 

    if($result) { 
     // Handle output 
    } 
    else { 
     echo 'query failed'; 
     // don't leave this here in production! 
     echo mysql_error(); 
    } 
+0

"id" tend à indiquer un nombre, qui ne nécessite pas de guillemets. –

+0

Cas de réponse trop rapide, là: D l'a vu et avait déjà le montage! – AvatarKava

+0

Salut ... J'ai essayé, mais rien n'a été fait. Il n'a même pas dit "requête a échoué." C'est comme si la requête n'était même pas là. – John

0

Un problème que je vois est que vous ne vérifiez pas la valeur de retour de mysql_query()

mysql_query() retours false si elle ne parvient pas à exécuter la requête. Donc, vous devez faire un chèque, quelque chose comme:

$result = mysql_query($sqlStr); 
if(! $result) { 

    //....error occured...prepare $message 
    die($message); 
} 
0

votre question concernant le débogage à , l'art de la programmation la plus importante. Personne ne peut trouver une erreur pour vous, vous devez le faire vous-même. Avec l'aide de petits trucs.

changement $profile = $_GET['profile']; à $profile = intval($_GET['profile'];)

changement $result = mysql_query($sqlStr); à

$result = mysql_query($sqlStr) or trigger_error(mysql_error()." in ".$sqlStr); 

etd suivant 2 lignes en haut de votre code, exécutez à nouveau et voir ce qu'il dit. si toujours rien, vous n'avez pas d'enregistrements correspondants dans votre tableau.

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