Hallo,
Ik ben echt een leek op PHP gebied (nee hé niet weer één) maar heb toch een vraag.
Ik heb een script waar leden op een wielerforum een tijd kunnen invullen hoelang ze over een beklimming van een berg doen. Tot hier gaat het allemaal goed :-)
Maar ik zou graag die tijden (als beheerder) evt bij een foute invoer willen verwijderen of aanpassen.

http://www.wielertoerist.nl/?pag=helling&id=15
Cees, om je verder te kunnen helpen is het van belang dat we weten of je die tijden wegschrijft naar MySQL of naar een bestandje.
Verder is het dan ook handig om te weten hoe je database of bestand er (qua indeling) uit ziet.
Hoi Robbert, ja dom van me om dat niet even te melden.
Schrijf hem naar Mysql weg.
Onderstaand even de toevoeg pagina.

<?php
if (isset($_POST['action'])) {
if ($_POST['u'] <> ""){
$tijd = $_POST['u'].":".$_POST['m'].":".$_POST['s'];
$datum = $_POST['ja']."-".$_POST['ma'].":".$_POST['d'];
$opmerking = bbencode_first_pass($_POST['opmerking'],87);
 $database_server = mysql_connect($dbHost,$dbUser,$dbPass);
   mysql_select_db($dbName, $database_server); 
  	$sql = "INSERT INTO wt_hellingen_tijden (hellingid,userid,tijd,datum,opmerking) VALUES ('$_POST[id]', '$userdata[user_id]','$tijd','$datum','$opmerking')"; 
   $resultaat = mysql_query($sql); 
    }
}

$database_server = mysql_connect($dbHost,$dbUser,$dbPass);
   mysql_select_db($dbName, $database_server); 
   $sql = "SELECT * FROM wt_hellingen WHERE id = $_GET[id]"; 
   $resultaat = mysql_query($sql); 
   while ($record = mysql_fetch_object($resultaat)) {  
   ?>

	<div id="titel"><strong><?php echo $record->naam; ?></strong></div>
    <p><?php echo smilies_pass(bbencode_second_pass(nl2br($record->omschrijving),87));?></p>
    <p><strong>Provincie:</strong> <?php echo $record->provincie?><br>
      <strong>Startplaats</strong>: <?php echo $record->startplaats?> <br>
      <strong>Hoogte:</strong> <?php echo $record->hoogte?> m <br>
      <strong>Lengte: </strong><?php echo $record->lengte?> m <br>
      <strong>Gemiddelde stijgingspercentage:</strong> <?php echo $record->gem?> % <br>
    </p><?php
		if(in_array($userdata['user_id'], $arrayhellingen) OR $userdata['user_level'] == "1") {
		
			echo "<br><a href='?pag=heledit&id=$record->id'><img src='img/modify_inline.gif' border='0' width='20' height='20' /></a><br/>";
			}
			} ?>
    <p>&nbsp;</p>
    <hr />
    <p><b>Tijden van sitebezoekers:</b></p>
    <table width="100%" border="0">
      <tr>
        <td width="9%">Tijd</td>
        <td width="14%">Gebruiker</td>
        <td width="13%">Datum</td>
        <td width="64%">Opmerking</td>
      </tr>
	  <?php   

$database_server = mysql_connect($dbHost,$dbUser,$dbPass);
   mysql_select_db($dbName, $database_server); 
   $sql = "SELECT * FROM wt_hellingen_tijden WHERE hellingid = $_GET[id] ORDER BY tijd ASC"; 
   $resultaat = mysql_query($sql); 
   while ($record = mysql_fetch_object($resultaat)) {  
   $username = mysql_fetch_object(mysql_query("SELECT * FROM phpbb_users WHERE user_id='$record->userid'"));
echo "<tr>";
echo "<td>$record->tijd</td>";
echo "<td><a href='?pag=profiel&id=$username->user_id'>$username->username</a> <br></td>";
echo "<td>";
list($jaar,$maand,$dag) = split('-',$record->datum);
echo $dag ."-". $maand ."-". $jaar."</td>";
echo "<td>$record->opmerking</td>";
echo "</tr>";
    
	
	
		    
		
}

?>
    </table>
    </p>
    <p>&nbsp;</p>
    </p>
    <hr />
    <p>
      <?php if ($userdata['username'] <> "Anonymous") {
	?>
    <form id="form1" name="form1" method="post" action="">
	  <label><strong>Voeg je eigen tijd toe:</strong></label>
      <input type="hidden" value="1" name="action" id="1" />
      <input type="hidden" value="<?php echo $_GET['id']; ?>" name="id" id="action" />
      <br />
	  <br />
	  Tijd: 
	  <input name="u" type="text" id="u" size="4" />
	  u  
	  <input name="m" type="text" id="m" size="4" />
min  
	  <input name="s" type="text" id="s" size="4" />
sec <br />
Datum 
<input name="d" type="text" id="d" size="4" maxlength="2" />
/
<input name="ma" type="text" id="ma" size="4" maxlength="2" />
/
<input name="ja" type="text" id="ja" size="4" maxlength="4" />
<br />
Opmerking: 
<label> <br />
<textarea name="opmerking" cols="60" rows="4" id="opmerking"></textarea>
</label>
<p>
    <label></label><label>
          <input type="submit" name="Submit" value="Submit" />
          </label>
      </p>
</form>
	<?php } else {
	echo "Om je tijd te posten moet je ingelogd zijn";
	}?>
Je kunt met een mysql query de entries uit je database aanpassen of verwijderen.

verwijderen:

DELETE FROM tabel
WHERE id = 'id van foute tijd'


aanpassen:

UPDATE tabel
SET tijd = 'nieuwe tijd'
WHERE id = 'id van foute tijd'


Dan nog wat opmerkingen over je script: zorg altijd voor foutafhandeling. Jij gaat er bijvoorbeeld vanuit dat elke query zomaar lukt, maar de praktijk leert dat dat niet altijd waar is.

Daarnaast hoop ik dat je in je database wel de juiste veldtypen gebruikt. Een tijd heb je hopelijk opgeslagen in een TIME veld?
Blanche schreef op 31.10.2006 10:25
Daarnaast hoop ik dat je in je database wel de juiste veldtypen gebruikt. Een tijd heb je hopelijk opgeslagen in een TIME veld?
Dat denk ik niet als ik zijn script bekijk.
3 velden voor de datum.

het datumveld zou je in je database van het type DATETIME / DATE moeten zijn.

dan kan je de huidige tijd in de database opslaan als NOW() <- output hiervan is dan: 0000-00-00 00:00:00 ( alleen staat hier dan jou systeemtijd + datum ).

Succes
Aanvulling:
dan kan je de huidige tijd in de database opslaan als NOW() <- output hiervan is dan: 0000-00-00 00:00:00 ( alleen staat hier dan jou systeemtijd + datum ).
Met NOW() zet je de datum/tijd van de databaseserver in de database. Wanneer de databaseserver jouw eigen pc is, dan is het inderdaad de systeemtijd + datum van jouw pc (= server).
Servertijd inderdaad :)
bedoelde ik ook ;)
Erik schreef op 31.10.2006 10:30
Dat denk ik niet als ik zijn script bekijk. 3 velden voor de datum.
Ja ok, maar als je ze met php eerst in de goede volgorde aan elkaar plakt en dan insert in mysql in een date veld, is er niets aan de hand. MySQL is bij het invoeren van data/tijden vrij vriendelijk wat betreft het formaat waarin je iets invoert. Als de datum maar in het yyyy-mm-dd formaat staat, accepteert mysql vrij veel verschillende scheidingstekens.

Daarnaast is in dit geval de datum en de tijd geen combinatie, en hoort dus niet in een datetime veld. Op een bepaalde datum is namelijk een bepaalde tijd gedaan over een beklimming. Dit is ook de reden waarom het gebruik NOW() op dit punt geen optie is.
Volgens mij zijn het gewoon 3 velden en heeft het eigenlijk niks met tijd te maken.
Gewoon 3 cijfer combinaties die wij als 'tijd' zien.
Maar die tijd zou ik toch echt opslaan in een TIME veld in je database. Doe je dit niet dan is het straks ook niet mogelijk om berekeningen uit te voeren, te sorteren etc.

Sla je het wel op in een TIME veld, dan kun je bijvoorbeeld alles sorteren om te zien wie de snelste tijd heeft, verschillen tussen 2 tijden berekenen, gemiddeldes uitrekenen etc. Dat zijn toch wel leuke cijfers voor op een wielerforum.
Sorteren doet hij nu op tijd, dus de snelste tijd staat bovenaan de lijst zie :
http://www.wielertoerist.nl/index.php?pag=helling&id=4 Verder hoeft hij met dit script niks te doen.
Daar heb ik verder ook geen problemen mee :-), weet alleen niet hoe je tijden en opmerkingen moet verwijderen en wijzigen :-(

Reageren