PHP en MYSQL BLOG

Status
Niet open voor verdere reacties.
simpel voorbeeld
PHP:
if(isset($_GET['blog'])) {
  $query = "SELECT verhaal FROM blog WHERE id='". $_GET['blog'] ."'";
  $result = mysql_query($query) or die(mysql_error());
  $row = mysql_fetch_assoc($result);
  print_r($row);
} else {
  $query = "SELECT id, titel FROM blog";
  $result = mysql_query($query) or die(mysql_error());
  while($row = mysql_fetch_assoc($result)) {
    echo '<a href="?blog='. $row['id'] .'">'. $row['titel'] .'</a><br />';
  }
}
 
simpel voorbeeld
PHP:
if(isset($_GET['blog'])) {
  $query = "SELECT verhaal FROM blog WHERE id='". $_GET['blog'] ."'";
  $result = mysql_query($query) or die(mysql_error());
  $row = mysql_fetch_assoc($result);
  print_r($row);
} else {
  $query = "SELECT id, titel FROM blog";
  $result = mysql_query($query) or die(mysql_error());
  while($row = mysql_fetch_assoc($result)) {
    echo '<a href="?blog='. $row['id'] .'">'. $row['titel'] .'</a><br />';
  }
}

ey Thadivel oesty..

dus dit moet in leesmeer.php
 
Ik heb het al eerder gezegd, maar volgens mij is het echt verstandiger als je gewoon overnieuw begint, met het leren van PHP. Dit zijn echt basisdingen, als je dan geen idee hebt waarover we het hebben, is het misschien toch echt raadzaam de stof nog eens van A tot Z door te nemen.
 
Ik heb het al eerder gezegd, maar volgens mij is het echt verstandiger als je gewoon overnieuw begint, met het leren van PHP. Dit zijn echt basisdingen, als je dan geen idee hebt waarover we het hebben, is het misschien toch echt raadzaam de stof nog eens van A tot Z door te nemen.

Ja denk het ook maar ik kan dus geen site's vinden waar ze begin tot eind uitlggen In het NEDERLANDS
 
Fout opvatting...

Programmeren = Engels, wil je programmeren dan is engelse taalbeheersing een must-have.

In principe is programmeren gewoon zinnetjes schrijven in het engels.
 
Fout opvatting...

Programmeren = Engels, wil je programmeren dan is engelse taalbeheersing een must-have.

In principe is programmeren gewoon zinnetjes schrijven in het engels.

o ok dat wist ik nog niet ;)

http://www.techzine.nl/tutorials/250/5 is echt heel handig
/

o dit valt mee ook op

IK {
naam => Jeroen Langenberg
leeftijd => 14
beroep => Scholier
Functie => Schrijver van deze tutorial
}

haha hij ook al ik ben ook 14
 
Laatst bewerkt:
HAHA BEN ER NIET ECHT VEEL WIJZER VAN GEWORDEN
o srry had Caps lock nog aan.

ja zo als je al las "maar ik snap dat al"

ik bedeol het meoilijker-makelijker
 
ik zal nu de code van show.php (of hoe je het bestand ook noemt) aanpassen, en stap voor stap uitleggen hoe ik dat doe.

deze code hadden we al:

PHP:
<?php  
         $dbname = "mmu0102_"; // database naam     
                $user = "timo"; // gebruikersnaam van mysql     
                $pass = "*********"; // wachtwoord van mysql     
                $host = "localhost"; // host naar mysql     
$dbh=mysql_connect("$host","$user","$pass");    
mysql_select_db( "$dbname" ) or trigger_error( mysql_error() );     

$query="SELECT * FROM `blog`;";  
$res=mysql_query($query);    
$fout=mysql_errno($dbh);   
    if ($fout != 0) {   
    $fout=mysql_error($dbh);   
    echo "<font color=\#FF0000\"><center>An error occured. This is the error message:$fout. <br> This was the query: $query</center></font>";   
    mysql_close($dbh);   
    echo "</body></html>";   
    exit;   
}   
$aantal_loops=mysql_num_rows($res); 
for($teller=0;$teller<$aantal_loops;$teller++){ 
$row=mysql_fetch_assoc($res); 
$ID=$row['ID'];  
$title=$row['title'];  
$text=$row['text']; 
$time=$row['time']; 
$leesbare_tijd=date("j-m-y h:i:s", $time); 
echo "<center><table border='1'>"; 
echo "<tr align='center'><td><h2>$title</h2>"; 
echo "<tr align='center'><td>This post was made on $leesbare_tijd"; 
echo "<tr align='center'><td>$text"; 
echo "</table></center>"; 
} 
?>

we willen nu alleen dat niet altijd alles wordt weergegeven, maar dat als je op een bepaalde link klikt, er maar 1 post te zien is. Hiervoor gebruik ik een if statement. Met dit if statement kijk ik of er een bepaalde post opgevraagd wordt, of dat ik ze allemaal moet laten zien:

PHP:
if($_GET['blog']==''){

}else{

}

we moeten deze code nu nog op de juiste plek in het gehele document brengen:

PHP:
<?php  
         $dbname = "mmu0102_"; // database naam     
                $user = "timo"; // gebruikersnaam van mysql     
                $pass = "*********"; // wachtwoord van mysql     
                $host = "localhost"; // host naar mysql     
$dbh=mysql_connect("$host","$user","$pass");    
mysql_select_db( "$dbname" ) or trigger_error( mysql_error() );     

if($_GET['blog']==''){
$query="SELECT * FROM `blog`;";  
$res=mysql_query($query);    
$fout=mysql_errno($dbh);   
    if ($fout != 0) {   
    $fout=mysql_error($dbh);   
    echo "<font color=\#FF0000\"><center>An error occured. This is the error message:$fout. <br> This was the query: $query</center></font>";   
    mysql_close($dbh);   
    echo "</body></html>";   
    exit;   
}   
$aantal_loops=mysql_num_rows($res); 
for($teller=0;$teller<$aantal_loops;$teller++){ 
$row=mysql_fetch_assoc($res); 
$ID=$row['ID'];  
$title=$row['title'];  
$text=$row['text']; 
$time=$row['time']; 
$leesbare_tijd=date("j-m-y h:i:s", $time); 
echo "<center><table border='1'>"; 
echo "<tr align='center'><td><h2>$title</h2>"; 
echo "<tr align='center'><td>This post was made on $leesbare_tijd"; 
echo "<tr align='center'><td>$text"; 
echo "</table></center>"; 
} 
}else{

}
?>

zolang er geen specifieke post opgevraagd wordt, zie je alle posts. Nu nog zorgen dat je de specifieke post kan zien. Eerst moeten we kijken welke post we uit de database moeten ophalen en uitvoeren:

PHP:
$query = "SELECT * FROM blog WHERE id='". $_GET['blog'] ."'"; 
$res=mysql_query($query);    
$fout=mysql_errno($dbh);   
    if ($fout != 0) {   
    $fout=mysql_error($dbh);   
    echo "<font color=\#FF0000\"><center>An error occured. This is the error message:$fout. <br> This was the query: $query</center></font>";   
    mysql_close($dbh);   
    echo "</body></html>";   
    exit;   
}

deze keer hebben we geen loop meer nodig, omdat we weten dat er maar 1 rij uit de databse komt. We kunnen dus direct de gegevens in een array zetten, en ze eruit halen en weergeven:

PHP:
$row=mysql_fetch_assoc($res); 
$ID=$row['ID'];  
$title=$row['title'];  
$text=$row['text']; 
$time=$row['time']; 
$leesbare_tijd=date("j-m-y h:i:s", $time); 
echo "<center><table border='1'>"; 
echo "<tr align='center'><td><h2>$title</h2>"; 
echo "<tr align='center'><td>This post was made on $leesbare_tijd"; 
echo "<tr align='center'><td>$text"; 
echo "</table></center>";

dan hebben we nu deze code:

PHP:
<?php   
         $dbname = "mmu0102_"; // database naam      
                $user = "timo"; // gebruikersnaam van mysql      
                $pass = "*********"; // wachtwoord van mysql      
                $host = "localhost"; // host naar mysql      
$dbh=mysql_connect("$host","$user","$pass");     
mysql_select_db( "$dbname" ) or trigger_error( mysql_error() );      

if($_GET['blog']==''){ 
$query="SELECT * FROM `blog`;";   
$res=mysql_query($query);     
$fout=mysql_errno($dbh);    
    if ($fout != 0) {    
    $fout=mysql_error($dbh);    
    echo "<font color=\#FF0000\"><center>An error occured. This is the error message:$fout. <br> This was the query: $query</center></font>";    
    mysql_close($dbh);    
    echo "</body></html>";    
    exit;    
}    
$aantal_loops=mysql_num_rows($res);  
for($teller=0;$teller<$aantal_loops;$teller++){  
$row=mysql_fetch_assoc($res);  
$ID=$row['ID'];   
$title=$row['title'];   
$text=$row['text'];  
$time=$row['time'];  
$leesbare_tijd=date("j-m-y h:i:s", $time);  
echo "<center><table border='1'>";  
echo "<tr align='center'><td><h2>$title</h2>";  
echo "<tr align='center'><td>This post was made on $leesbare_tijd";  
echo "<tr align='center'><td>$text";  
echo "</table></center>";  
}  
}else{ 
$query = "SELECT * FROM blog WHERE id='". $_GET['blog'] ."'";  
$res=mysql_query($query);     
$fout=mysql_errno($dbh);    
    if ($fout != 0) {    
    $fout=mysql_error($dbh);    
    echo "<font color=\#FF0000\"><center>An error occured. This is the error message:$fout. <br> This was the query: $query</center></font>";    
    mysql_close($dbh);    
    echo "</body></html>";    
    exit;    
}  

$row=mysql_fetch_assoc($res);  
$ID=$row['ID'];   
$title=$row['title'];   
$text=$row['text'];  
$time=$row['time'];  
$leesbare_tijd=date("j-m-y h:i:s", $time);  
echo "<center><table border='1'>";  
echo "<tr align='center'><td><h2>$title</h2>";  
echo "<tr align='center'><td>This post was made on $leesbare_tijd";  
echo "<tr align='center'><td>$text";  
echo "</table></center>";
}
?>

en zover ik begrepen heb, had je nog een laaste kleine wens: op de plek waar alle blogs worden weergegeven, alleen links.

PHP:
echo "<center><table border='1'>";  
echo "<tr align='center'><td><a href='index.php?page=default.php&blog=$ID'>$title<a>";  
echo "</table></center>";

het totaal komt er dan zo uit te zien:


PHP:
<?php   
         $dbname = "mmu0102_"; // database naam      
                $user = "timo"; // gebruikersnaam van mysql      
                $pass = "*********"; // wachtwoord van mysql      
                $host = "localhost"; // host naar mysql      
$dbh=mysql_connect("$host","$user","$pass");     
mysql_select_db( "$dbname" ) or trigger_error( mysql_error() );      

if($_GET['blog']==''){ 
$query="SELECT * FROM `blog`;";   
$res=mysql_query($query);     
$fout=mysql_errno($dbh);    
    if ($fout != 0) {    
    $fout=mysql_error($dbh);    
    echo "<font color=\#FF0000\"><center>An error occured. This is the error message:$fout. <br> This was the query: $query</center></font>";    
    mysql_close($dbh);    
    echo "</body></html>";    
    exit;    
}    
$aantal_loops=mysql_num_rows($res);  
for($teller=0;$teller<$aantal_loops;$teller++){  
$row=mysql_fetch_assoc($res);  
$ID=$row['ID'];   
$title=$row['title'];   
$text=$row['text'];  
$time=$row['time'];  
$leesbare_tijd=date("j-m-y h:i:s", $time);  
echo "<center><table border='1'>";  
echo "<center><table border='1'>";  
echo "<tr align='center'><td><a href='index.php?page=default.php&blog=$ID'>$title<a>";  
echo "</table></center>";
}  
}else{ 
$query = "SELECT * FROM blog WHERE id='". $_GET['blog'] ."'";  
$res=mysql_query($query);     
$fout=mysql_errno($dbh);    
    if ($fout != 0) {    
    $fout=mysql_error($dbh);    
    echo "<font color=\#FF0000\"><center>An error occured. This is the error message:$fout. <br> This was the query: $query</center></font>";    
    mysql_close($dbh);    
    echo "</body></html>";    
    exit;    
}  

$row=mysql_fetch_assoc($res);  
$ID=$row['ID'];   
$title=$row['title'];   
$text=$row['text'];  
$time=$row['time'];  
$leesbare_tijd=date("j-m-y h:i:s", $time);  
echo "<center><table border='1'>";  
echo "<tr align='center'><td><h2>$title</h2>";  
echo "<tr align='center'><td>This post was made on $leesbare_tijd";  
echo "<tr align='center'><td>$text";  
echo "</table></center>";
}
?>

succes ermee :thumb:
 
Toch zou ik je sterk afraden bovenstaande code te gebruiken, al is het alleen maar om de beveiligingslekken die erin zitten. Om nog maar te zwijgen over de HTML en de rest van de PHP.
 
lol, het is inderdaad ook niet de beste code, of de mooiste code. De html is alleen maar bedoeld om te laten zien waar de variablen kunnen komen te staan. Er zit inderdaad wel een redelijk groot veiligheids lek in, zie ik nu zelf. Volgens jouw was mysql_real_escape_string genoeg, dus die zal ik dan maar gebruiken:
PHP:
<?php    
         $dbname = "mmu0102_"; // database naam       
                $user = "timo"; // gebruikersnaam van mysql       
                $pass = "*********"; // wachtwoord van mysql       
                $host = "localhost"; // host naar mysql       
$dbh=mysql_connect("$host","$user","$pass");      
mysql_select_db( "$dbname" ) or trigger_error( mysql_error() );       

if($_GET['blog']==''){  
$query="SELECT * FROM `blog`;";    
$res=mysql_query($query);      
$fout=mysql_errno($dbh);     
    if ($fout != 0) {     
    $fout=mysql_error($dbh);     
    echo "<font color=\#FF0000\"><center>An error occured. This is the error message:$fout. <br> This was the query: $query</center></font>";     
    mysql_close($dbh);     
    echo "</body></html>";     
    exit;     
}     
$aantal_loops=mysql_num_rows($res);   
for($teller=0;$teller<$aantal_loops;$teller++){   
$row=mysql_fetch_assoc($res);   
$ID=$row['ID'];    
$title=$row['title'];    
$text=$row['text'];   
$time=$row['time'];   
$leesbare_tijd=date("j-m-y h:i:s", $time);   
echo "<center><table border='1'>";   
echo "<center><table border='1'>";   
echo "<tr align='center'><td><a href='index.php?page=default.php&blog=$ID'>$title<a>";   
echo "</table></center>"; 
}   
}else{  
$query = "SELECT * FROM blog WHERE id='". mysql_real_escape_string($_GET['blog'] )."'";   
$res=mysql_query($query);      
$fout=mysql_errno($dbh);     
    if ($fout != 0) {     
    $fout=mysql_error($dbh);     
    echo "<font color=\#FF0000\"><center>An error occured. This is the error message:$fout. <br> This was the query: $query</center></font>";     
    mysql_close($dbh);     
    echo "</body></html>";     
    exit;     
}   

$row=mysql_fetch_assoc($res);   
$ID=$row['ID'];    
$title=$row['title'];    
$text=$row['text'];   
$time=$row['time'];   
$leesbare_tijd=date("j-m-y h:i:s", $time);   
echo "<center><table border='1'>";   
echo "<tr align='center'><td><h2>$title</h2>";   
echo "<tr align='center'><td>This post was made on $leesbare_tijd";   
echo "<tr align='center'><td>$text";   
echo "</table></center>"; 
} 
?>
de code zou ook nog wat kleiner (en sneller) kunnen, bijvoorbeeld zo:
PHP:
<?php    
         $dbname = "mmu0102_"; // database naam       
                $user = "timo"; // gebruikersnaam van mysql       
                $pass = "*********"; // wachtwoord van mysql       
                $host = "localhost"; // host naar mysql       
$dbh=mysql_connect("$host","$user","$pass");      
mysql_select_db( "$dbname" ) or trigger_error( mysql_error() );       

if($_GET['blog']==''){  
$query="SELECT * FROM `blog`;";    
$res=mysql_query($query);      
$fout=mysql_errno($dbh);     
    if ($fout != 0) {     
    $fout=mysql_error($dbh);     
    echo "<font color=\#FF0000\"><center>An error occured. This is the error message:$fout. <br> This was the query: $query</center></font>";     
    mysql_close($dbh);     
    echo "</body></html>";     
    exit;     
}     
$aantal_loops=mysql_num_rows($res);   
for($teller=0;$teller<$aantal_loops;$teller++){   
$row=mysql_fetch_assoc($res);      
$leesbare_tijd=date("j-m-y h:i:s", $time);   
echo "<center><table border='1'>";   
echo "<center><table border='1'>";   
echo "<tr align='center'><td><a href='index.php?page=default.php&blog=".$row['ID']."'>".$row['title']."<a>";   
echo "</table></center>"; 
}   
}else{  
$query = "SELECT title, text, time FROM blog WHERE id='". mysql_real_escape_string($_GET['blog'] )."'";   
$res=mysql_query($query);      
$fout=mysql_errno($dbh);     
    if ($fout != 0) {     
    $fout=mysql_error($dbh);     
    echo "<font color=\#FF0000\"><center>An error occured. This is the error message:$fout. <br> This was the query: $query</center></font>";     
    mysql_close($dbh);     
    echo "</body></html>";     
    exit;     
}   

$row=mysql_fetch_assoc($res);      
$leesbare_tijd=date("j-m-y h:i:s", $row['time']);   
echo "<center><table border='1'>";   
echo "<tr align='center'><td><h2>".$row['title']."</h2>";   
echo "<tr align='center'><td>This post was made on $leesbare_tijd";   
echo "<tr align='center'><td>".$row['text'];   
echo "</table></center>"; 
} 
?>

zijn er nog andere dingen die jij denk dat hieraan beter kunnen?
 
Ja, nog ongeveer 300 dingen, maar sowieso heb je veel dingen die ik aangaf op de vorige pagina's ook niet meegenomen in deze code.


Paar punten uit deze code:

- Het gebruik van een for-loop is niet netjes en totaal overbodig.
- Controleer de input van de $_GET.
- Gebruik nooit SELECT *.


Even een voorbeeld:

PHP:
define('DEBUG_MODE', true);

if(isset($_GET['blog']) && ctype_digit($_GET['blog'])){

  $sQuery = "SELECT blog, title FROM blogs WHERE ID = ".$_GET['blog'];
  $rResult = mysql_query($sQuery);

  if($rResult === FALSE && DEBUG_MODE == TRUE){

     echo 'Iets is verkeerd gegaan in '.$sQuery.', de volgende foutmelding werd gevonden: '.mysql_error();

  }else if($rResult === FALSE && DEBUG_MODE == FALSE){

    echo 'Sorry, iets is misgegaan.';

  }else if(mysql_num_rows() == 0){

     echo 'Dit blog bestaat niet!';

  }else{

    $aRow = mysql_fetch_assoc($rResult);

      echo $aRow['title'].'<br />'.$aRow['blog'];

  }

}else{

// Geen $_GET-parameter, dus selecteer alles. De rest kun je zelf wel.

}
 
Laatst bewerkt:
ey ik heb zon gevoel dat ik maar kan stoppen met php wand me site doet het al 1 uur niet
 
De kans is klein dat dat iets met PHP te maken heeft. Verder zou het wel geinig zijn als je enige inzet zou tonen, we zetten die scripts voor jou in elkaar.
 
je moet even contact opnemen met het bedrijf waar je de ruimte host.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan