Deel url negeren

Status
Niet open voor verdere reacties.

Arthur K

Gebruiker
Lid geworden
19 jan 2008
Berichten
41
Nu probeer ik de volgende url om te bouwen zodat de naam van de pagina niet alleen een id bevat maar ook de naam van een game.

Hiervoor maak ik gebruik het van het volgende:

http://www.hierdomein.nl/nl/deeldomein\"game.php?id=".$row['id']."\">

Hoe krijg ik echter in de bovenstaande url het volgende verwerkt, de naam met de volgende code? ".$row['naam']."

Bovenstaande code laad ik namelijk in via tabel.php zodat alle games op een pagina worden getoond. Als ik de bovenstaande code dus in de url verwerk dan gaat er iets fout met het uitvoeren van tabel.php of er kunnen geeen gegevens in de msql database worden gevonden. Iemand enig idee hoe ik dus toch ".$row['naam']." in de url kan verwerken, maar op de manier dat deze word genegeerd door de browser en de website zelf?
 
http://www.hierdomein.nl/nl/deeldomein\"game.php?id=".$row['id']."\">

Je zou de url zo kunnen maken: http://www.hierdomein.nl/nl/deeldomeingame.php?id=id&naam=naam_van_spel
Het script wat de url uitleest blijft dan gewoon hetzelfde, omdat aan $_GET['id'] niets verandert. (er komt alleen een variable ($_GET['naam']) bij, waar je gewoon niets mee doet)

(btw, klopt het dat er geen / staat tussen deeldomein en game?)
 
Het klopt inderdaad dat er in de code tussen het deeldomein en game.php geen / staat.

Ik heb je advies geprobeerd op te volgen met =.$row['naam'] helaas krijg ik dan diverse foutmeldingen. Op welke moment zou jij in de volgende regel http://www.hierdomein.nl/nl/deeldomein\"game.php?id=".$row['id']."\"> de =.$row['naam'] invoegen?
 
Dus als ik het goed begrijp heb je een " in je bestandsnaam staan :shocked:

Waarom haal je niet die naam door middel van een query op?
PHP:
if(isset($_GET['id'])) {
  $selectQuery = "SELECT * FROM tabel WHERE id='". $_GET['id'] ."'";
  $selectResult = mysql_query($selectQuery) or die(mysql_error());
  $selectRow = mysql_fetch_array($selectResult);
  echo $selectRow['naam'];
} else {
  $allQuery = "SELECT * FROM tabel";
  $allResult = mysql_query($allQuery) or die(mysql_error());
  while($allRow = mysql_fetch_array($allResult)) {
    echo '<a href="?id='. $allRow['id'] .'">'. $allRow['naam'] .'</a><br />';
  }
}
 
Is het niet zo dat je nu het volgende doet:

<a href=http://www.domein.nl/?id=516>Hier staat de naam</a> en als je dan vervolgens op de naam klikt dan ga je naar de volgende pagina waarna er vervolgens in de browser het volgende staat: http://www.domein.nl/?id=516 ??? Dit heb ik namelijk al, ik wil alleen dat er nu in de browser ook de naam van een game komt te staan en voor de rest eigenlijk geen verdere functie heeft Dit om de url zoekmachine vriendelijk te maken.....

Als ik naar de bovengenoemde code kijk geef je alleen het id weer in de browser (url)..
 
Die komt nou toch ook in de browser te staan :rolleyes:
PHP:
if(isset($_GET['id'])) {
  $selectQuery = "SELECT * FROM tabel WHERE id='". $_GET['id'] ."'";
  $selectResult = mysql_query($selectQuery) or die(mysql_error());
  $selectRow = mysql_fetch_array($selectResult);
  echo $selectRow['naam']; // Hierdoor komt hij in de browser te staan

Als dit over de naam tussen de <title>-tag zien te krijgen gaat dan vraag ik mij af waarom je je vorige vraag op opgelost hebt gezet.

SEO-url's zien er trouwens aardig wat anders uit dan dat jij denkt, gewoon alle informatie in je url stoppen helpt niet om SEO te gaan werken.

Dan zou je url's als www.jesite.nl/naam-van-game moeten genereren. (Kan via mod_rewrite onder Apache)

Overigens om meerdere variabelen in je URL te krijgen gebruik je voor je eerste $_GET-variabele een ? en voor elke andere variabele die er dan nog bij moet gebruik je een &. Dan wordt het dus www.jesite.nl?variabele1=waarde1&variabele2=waarde2
 
De vraag van de <title> tags is opgelost :thumb: dat is iets heel anders dan dat ik nu wil uitvoeren.

Klopt inderdaad dat ik bezig ben om de url's SEO vriendelijk te maken. Echter als ik nu met de mod_rewrite zou gaan werken dan krijg ik alleen de id's in de url's, vandaar dat ik eerst de naam erin wil verwerken. Voordat ik eraan begin om de url's SEO vriendelijk te maken.

Ik ga je oplossing/advies is proberen door te voeren, even kijken of het lukt. :thumb:
 
Als elke naam uniek is kun je die ook gewoon als enige variabele in je url meegeven en daar een SELECT-query op uitvoeren.
PHP:
$strippedName = str_replace("_", " ", $_GET['naam']);
$detailQuery = "SELECT * FROM tabel WHERE naam='". $strippedName ."'";
De str_replace is wanneer je alle spaties wijzigt door een underscore ( _ );
 
Hmm ik heb even wat geprobeerd maar het wil niet echt helemaal lukken. Ik heb voor je eerste alternatief gekozen maar krijg dan het volgende probleem: klik daar maar is op een game welke in een van die categorieen staat.

Waarschijnlijk heb ik van tabel.php nu een rotzooi gemaakt, ik ben nog maar net gestart met PHP maar hieronder even de code wat ik ermee gedaan heb:

PHP:
<?php
if(isset($_GET['naam'])) { 
  $selectQuery = "SELECT * FROM games WHERE naam='". $_GET['naam'] ."'"; 
  $selectResult = mysql_query($selectQuery) or die(mysql_error()); 
  $selectRow = mysql_fetch_array($selectResult); 
  echo $selectRow['naam']; 
} else { 
  $allQuery = "SELECT * FROM games"; 
  $allResult = mysql_query($allQuery) or die(mysql_error()); 
  while($allRow = mysql_fetch_array($allResult)) { 
    echo '<a href="?naam='. $allRow['naam'] .'">'. $allRow['naam'] .'</a><br />'; 
  } 
}  


/*** Het 'game-laten-zien' gedeelte. ***/
if($tellen == 0) {

echo "  <tr>";
echo "    <td class=\"blue\" style=\"text-align: left; background-image: url(images/Blue_01.jpg); height: 19px; padding-left: 3px; padding-right: 3px;\">";
echo "      <i>No games</i>";
echo "    </td>";
echo "  </tr>";
}

/*** Als er spellen in de categorie staan moet hij ze laten zien ***/
else {

$i = 0;
	
while($row = mysql_fetch_assoc($select)) {
		
$i++;
		
if($i == 3)
{
$i = 1;
}
		
		
echo "  <tr>";
echo "    <td class=\"blue\" style=\"text-align: left; background-image: url(images/Blue_0".$i.".jpg); height: 19px; padding-left: 3px; padding-right: 3px;\">";
echo '<a href="?naam='. $allRow['naam'] .'">'. $allRow['naam'] .'</a><br />'; 
echo "    </td>";
echo "  </tr>";

	}

}

?>

Ik weet dat er een aantal dingen sowieso fout zitten, aangezien deze nu dubbel terugkomen in de code. Daarnaast heb ik aan het bovenste stuk de code welke jij mij gaf gesleuteld...
 
Vreemd, op de pagina die je geeft wordt nogsteeds gebruik gemaakt van ?id={getal}
 
Had zelf nog even verder zitten zoeken vandaar dat niet alles werd getoond. Heb hem weer vernieuwd, zie hier. En dan gaat het om de games waar geen screenshot bij zit dus de categorieen. Daar gaat iets goed mis als ik het goed heb.... (Waar die screenshots staan worden namelijk op een andere manier ingeladen, die pas ik aan zodra ik de rest ook heb).
 
Probeer dit eens:
PHP:
<?php 
if(isset($_GET['naam'])) {
  $originalName = str_replace("_", " ", $_GET['naam']);
  $selectQuery = "SELECT * FROM games WHERE naam='". $originalName ."'";  
  $selectResult = mysql_query($selectQuery) or die(mysql_error());  
  $selectRow = mysql_fetch_array($selectResult);  
  echo $selectRow['naam'];  
} else {  
  $allQuery = "SELECT * FROM games";  
  $allResult = mysql_query($allQuery) or die(mysql_error());  
  while($allRow = mysql_fetch_array($allResult)) {
    $formatName = str_replace(" ", "_", $allRow['naam']);
    echo '<a href="?naam='. $formatName .'">'. $allRow['naam'] .'</a><br />';  
  }  
}   


/*** Het 'game-laten-zien' gedeelte. ***/ 
if($tellen == 0) { 
  echo '
  <tr>
   <td class="blue" style="text-align: left; background-image: url(images/Blue_01.jpg); height: 19px; padding-left: 3px; padding-right: 3px;">
     <i>No games</i>
   </td>
  </tr>'; 
} 

/*** Als er spellen in de categorie staan moet hij ze laten zien ***/ 
else {
  $i = 0;
  while($row = mysql_fetch_assoc($select)) {
    // Waar je $select vandaan haalt weet ik niet maar neem het gewoon over
    $i++;
    if($i == 3) {
      $i = 1;
    }
    $formatName = str_replace(" ", "_", $allRow['naam']);
    echo '
    <tr>
     <td class="blue" style="text-align: left; background-image: url(images/Blue_0".$i.".jpg); height: 19px; padding-left: 3px; padding-right: 3px;">
      <a href="?naam='. $formatName .'">'. $allRow['naam'] .'</a><br />
     </td>
    </tr>';
  }
}
?>
 
Gebruik deze code eens dan en kijk of er een juiste query wordt weergegeven...
PHP:
<?php  
if(isset($_GET['naam'])) { 
  $originalName = str_replace("_", " ", $_GET['naam']); 
  $selectQuery = "SELECT * FROM games WHERE naam='". $originalName ."'";   
  $selectResult = mysql_query($selectQuery) or die(mysql_error());   
  $selectRow = mysql_fetch_array($selectResult);
  // Bugfixen
  echo 'Naam query: '. $selectQuery .'<br />';
  // end bugfixen
  echo $selectRow['naam'];   
} else {   
  $allQuery = "SELECT * FROM games";   
  $allResult = mysql_query($allQuery) or die(mysql_error());   
  while($allRow = mysql_fetch_array($allResult)) { 
    $formatName = str_replace(" ", "_", $allRow['naam']); 
    echo '<a href="?naam='. $formatName .'">'. $allRow['naam'] .'</a><br />';   
  }   
}    


/*** Het 'game-laten-zien' gedeelte. ***/  
if($tellen == 0) {  
  echo ' 
  <tr> 
   <td class="blue" style="text-align: left; background-image: url(images/Blue_01.jpg); height: 19px; padding-left: 3px; padding-right: 3px;"> 
     <i>No games</i> 
   </td> 
  </tr>';  
}  

/*** Als er spellen in de categorie staan moet hij ze laten zien ***/  
else { 
  $i = 0; 
  while($row = mysql_fetch_assoc($select)) { 
    // Waar je $select vandaan haalt weet ik niet maar neem het gewoon over 
    $i++; 
    if($i == 3) { 
      $i = 1; 
    } 
    $formatName = str_replace(" ", "_", $allRow['naam']); 
    echo ' 
    <tr> 
     <td class="blue" style="text-align: left; background-image: url(images/Blue_0'. $i .'.jpg); height: 19px; padding-left: 3px; padding-right: 3px;"> 
      <a href="?naam='. $formatName .'">'. $allRow['naam'] .'</a><br /> 
     </td> 
    </tr>'; 
  } 
} 
?>
De naamgeving klopt nu in ieder geval wel. Hij vervangt de spaties door underscores en als het goed is moet hij die bij isset($_GET['naam']) weer terugdraaien.
 
Hmm, het werkt nog niet helemaal. Ik krijg nu het volgende....

Index
Game frame

Hoe zie ik of de juiste query wordt uitgevoerd? Als ik zo kijk voert die alles goed uit, maar gaat het mis bij het game frame?
 
Hij geeft bij een enkele game bij elke categorie de naam van het spel, daar staat ook overal de query. :(

Ik weet niet wat daar je bedoeling is maar het lijkt mij dat je de url naar het spel moet opvragen zodat je die kunt tonen.

Als ik het zo bekijk include je dit bestand ergens want anders zou het maar 1x moeten verschijnen maar hij neemt hem nu bij elke categorie mee.

Offtopic: Leuke spelfout Avondtuur ;)
 
Spelfoutje heb ik even aangepast... :o :thumb:

Klopt het bestand tabel.php roep ik overal op om ook de games in die categorie te tonen. Waarschijnlijk loop ik de code nu in het verkeerde bestand aan te passen, tenminste dat begint bij mij heel vaag nu zo te dagen :p Volgens mij moet ik de code welke jij gaf in game.php aanpassen en niet tabel.php. Ik ga nog een keertje kijken :o
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan