Jump to content

POST .. GET


mrlankee

Recommended Posts

Hi,

 

I'm trying to figure this out.. I am creating a user search on my website thats connected to mysql.  What I have does not work :\

<form action="useraccount.php" method="post">
<input type="text" name="username"/>
<input type="submit" value="submit"/>
</form>
<?php

$username = $_POST['nome'];
$pdo = new PDO('mysql:host=myhost;dbname=mydb', 'user', 'pw');

if ($pdo->query("SELECT * from TABLENAME where username='".$username."'")->fetchColumn() > 0){
foreach($pdo->query("SELECT * from TABLENAME where username='".$username."'") as $row) {
echo $row['Player_Name'] . $row['Time_Online'];
}
$pdo = null;
}
else{
echo "Sorry, that username does not exist in our database.";
}
?>
Link to comment
https://forums.phpfreaks.com/topic/293569-post-get/
Share on other sites

www.rpproject.net/useraccount.php 

As you can see.. no matter what you enter.. the "else" does not show up as "Sorry, that username does not exist in our database.";"

 

I cannot figure out whats going on.. exact code.

<form action="account.php" method="GET">
In-Game Name:<br>
<input type="text" name="username" value="Username">
<br>
<input type="submit" value="Submit">
</form>
       <?php

$username = $_POST['username'];
$pdo = new PDO('mysql:host=xxxxx;dbname=xxxx', 'xxxx', 'xxxx');


if ($pdo->query("SELECT * from TABLENAME where username='".$username."'")->fetchColumn() > 0){
foreach($pdo->query("SELECT * from TABLENAME where username='".$username."'") as $row) {
echo $row['Player_Name'] . $row['Time_Online'];
}
$pdo = null;
}
else{
echo "Sorry, that username does not exist in our database.";
}
?>

Any ideas?

Link to comment
https://forums.phpfreaks.com/topic/293569-post-get/#findComment-1501386
Share on other sites

 

 

Sorry what i ment is .. If i enter username Alpha instead of Bravo.. it'll show Alpha's row's

There is a problem in your logic. If you enter any value in the form that exists in the database - it's going to return that row's value because you asked it to with this select statement.

SELECT * from TABLENAME where username='".$username."'"
Link to comment
https://forums.phpfreaks.com/topic/293569-post-get/#findComment-1501399
Share on other sites

Try:

$username = $_POST['username'];
$pdo = new PDO('mysql:host=xxxxx;dbname=xxxx', 'xxxx', 'xxxx');
$sql = "SELECT COUNT(*) from TABLENAME where username='".$username."'";

if ($result = $pdo->query($sql)
{
    if ($result->fetchcolumn() > 0)
    {
        $sql = "SELECT * from TABLENAME where username='".$username."'";
        
        foreach ($pdo->query($sql) as $row)
        {
            echo $row['Player_Name'] . ' ' . $row['Time_Online'];
        }
    }
}
else 
{
    echo "Sorry, that username does not exist in our database.";
}

Link to comment
https://forums.phpfreaks.com/topic/293569-post-get/#findComment-1501403
Share on other sites

Why do a fetchcolumn at all? Check the result of the operation, don't waste time on a retrieval of one piece of data. Of course if your db does not support rowcount() then stick with what you have, but here is how I would write your code:

 

<form action="useraccount.php" method="post">
<input type="text" name="username"/>
<input type="submit" value="submit"/>
</form>
<?php
$username = $_POST['username'];  // you retrieve form data using the html's name= attribute
$pdo = new PDO('mysql:host=myhost;dbname=mydb', 'user', 'pw');

// assign your query statement to a var so you can view it if you need to debug it
$q = "SELECT * from TABLENAME where username='$username'";

if (!$pdo->query($q)
{
   echo "Query failed - query is $q";// only do this during development - not in prod.
   exit();
}
if ($pdo->rowcount()== 0)
{
   echo "Sorry, that username does not exist in our database.";
   exit();
}
// now get your results
while ($row = $pdo->fetch_assoc(PDO::FETCH_ASSOC))
{
   echo $row['Player_Name']," ",$row['Time_Online'];
}
exit();
Link to comment
https://forums.phpfreaks.com/topic/293569-post-get/#findComment-1501476
Share on other sites

ginerjm - posted the preferred way to code this - smooth, elegant - with error handling. Just test that rowCount() works on the particular DB you're using. I use rowCount(), but because of the manual "warning", I am in the habit of using fetchColumnt() - however, it is an extra query and slows things down and usually unnecessary.

Link to comment
https://forums.phpfreaks.com/topic/293569-post-get/#findComment-1501488
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.