Archief - school: php

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Thomas9

Legacy Member
Hey

Voor school moet ik een website maken waar php bij gebruikt word.
Momenteel heb ik een simpel login systeem. Met een gastenboek.

Ik zat met het idee om een pc builder (zoals alternate) te maken in php.
Maar enige tips voor ik werkelijk hiermee mee start? Zodat ik niet voor verassingen kom te staan!

Wie wil helpen met deze site is welkom, zoolang ik kan volgen is het oke! :P
Het moet simpel blijven omdat php nog redelijk nieuw is voor mij.

Ook heb ik vragen met men gastenboek, momenteel laat het laatste 10 berichten zien, meer niet. maar ik wil dus knoppen om de rest te laten tonen. Hoe is nog de vraag voor mij!

Mvg,
Thomas

Thomas9

Legacy Member
PHP:
			<?php
				$result = mysql_query("SELECT * FROM `gastenBoek` ORDER BY `id` DESC LIMIT 0,10");
				while($row = mysql_fetch_array($result)) {
					echo '<div id="Boek">';
					if($fInfo['naam'] == $row['naam']){
						echo '<div style="float: right;"><input type="submit" value="Verwijder" onclick="<?php mysql_query("DELETE FROM `exaam`.`gastenboek` WHERE `id` = '.$row['id'].';"); ?>" /></div>';
					}
					echo '<b>'.$row['naam'].' op '.$row['datum'].':</b><br>'.$row['text'].'</div>';
				}
			?>

Het lukt niet om een knop te maken dat het weergegeven bericht kan verwijderen .. geen idee hoe ik dit kan doen :/

ook ideetjes om de andere berichten weer te geven? maar toch elke keer 10 berichten max te geven voor geen lange pagina's?

RobinVdB

Legacy Member
1. Gebruik in een query nooit SELECT * tenzij je echt alles nodig hebt. Dit verhoogt de duur van je script en je brandwidth. Als ik het me goed herinner stoppen sommige hosts je account als je dat doet en je unlimited brandwidth hebt.
2. Gebruik geen inline CSS maar extern...
3. Ik mis comments
4. Probeer variabelen altijd in het Engels te zetten, dit staat vaker beter en is duidelijker. (Persoonlijke voorkeur.)
5. Je while statement klopt niet helemaal.

Thomas9

Legacy Member
1. ik moet alles hebben van die tabel ;)
2. ja heb ik enkel bij deze div gedaan, is ook maar om te testen, als het werkt kan ik verbeteren ..
3. nja doe ik normaal niet, slechte gewoonte..
4. idd voorkeur, ik heb dyslexie, dus ik hou het bij wat ik het simpelste vind om te typen op dat moment ;)
5. wat klopt er niet?

PHP:
<?php
                $result = mysql_query("SELECT * FROM `gastenBoek` ORDER BY `id` DESC LIMIT 0,10");
                while($row = mysql_fetch_array($result)) {
                    echo '<div id="Boek">';
                    echo '<b>'.$row['naam'].' op '.$row['datum'].':</b><br>'.$row['text'].'</div>';
                }
            ?>
Dit werkt. ik krijg 10 berichten. Geen probleem.
Nu wil ik ervoor zorgen dat de gebruiker zijn eigen berichten ook kan verwijderen.

PHP:
<?php
                $result = mysql_query("SELECT * FROM `gastenBoek` ORDER BY `id` DESC LIMIT 0,10");
                while($row = mysql_fetch_array($result)) {
                    echo '<div id="Boek">';
                    if($fInfo['naam'] == $row['naam']){ // kijken of de naam overeen komt, zo ja mag er een knop om te verwijderen te voorschijn komen
                        echo '<div style="float: right;"><input type="submit" value="Verwijder" onclick="<?php mysql_query("DELETE FROM `exaam`.`gastenboek` WHERE `id` = '.$row['id'].';"); ?>" /></div>'; // de query geeft problemen, maar geen idee wat het net is..
                    }
                    echo '<b>'.$row['naam'].' op '.$row['datum'].':</b><br>'.$row['text'].'</div>';
                }
            ?>

Wel even toevoegen, ik heb sinds 2 weken geleden geleerd om met mysql te werken in php ..

Cycloon

Legacy Member
RobinVdB zei:
1. Gebruik in een query nooit SELECT * tenzij je echt alles nodig hebt. Dit verhoogt de duur van je script en je brandwidth. Als ik het me goed herinner stoppen sommige hosts je account als je dat doet en je unlimited brandwidth hebt.
2. Gebruik geen inline CSS maar extern...
3. Ik mis comments
4. Probeer variabelen altijd in het Engels te zetten, dit staat vaker beter en is duidelijker. (Persoonlijke voorkeur.)
5. Je while statement klopt niet helemaal.

1. Zolang je die informatie niet toont op je pagina heeft dat niks met bandbreedte te zien, je zal hooguit meer geheugen gebruiken.
3. Elke keer je commentaar gebruikt faal je in het schrijven van leesbare en duidelijke code.
4. Gelukkig dat je vermeld dat dit persoonlijk voorkeur is.

Thomas9

Legacy Member
is er mss een beter manier dan ik wil doen?
of enige fouten dat ik niet zie als onervaren?

ik doe alles in kladblok, is niet zo erg handig maarja

Cycloon

Legacy Member
De code die in de ondelete moet is javascript en geen php. Het meest eenvoudige is dat je gewoon een url achter je knop steekt die verwijst naar dezelfde pagina met een parameter pagina.php?verwijder=123 met 123 de id die je wil gaan verwijderen. Genoeg informatie te vinden via google over hoe je zoiets doet.

Cycloon

Legacy Member
Zoek eens op php guestbook tutorial, er zijn er duizenden te vinden. Kijk eens naar alle mogelijke manieren die zij bedacht hebben om een bericht te verwijderen. Kies er daarna de beste uit.

Thomas9

Legacy Member
dus,

Als ik een link leg naar een pagina
bv: delete.php?id=1

dan op de pagine de query uitvoer met dat id en dan terug verwijs naar gastenboek.php zou het moeten werken?

Thomas9

Legacy Member
PHP:
<?php
				$result = mysql_query("SELECT * FROM `gastenBoek` ORDER BY `id` DESC LIMIT 0,10");
				while($row = mysql_fetch_array($result)) {
					echo '<div id="Boek">';
					if($fInfo['naam'] == $row['naam']){
						echo '<div style="float: right;"><a href="verwijder.php?id='.$row['id'].'">Verwijder</a></div>'; 
					}
					echo '<b>'.$row['naam'].' op '.$row['datum'].':</b><br>'.nl2br($row['text']).'</div>';
				}
			?>

PHP:
<?php
	$con = mysql_connect("localhost","root","");
	if (!$con) {
		die('Could not connect: ' . mysql_error());
	}
	mysql_select_db("exaam", $con);

	$id = $_GET['id'];
	mysql_query("DELETE FROM `exaam`.`gastenboek` WHERE `id` = ".$id.";");
	header("Location: gastenBoek.php");
?>

dit werkt :D

Thomas9

Legacy Member
nu volgend probleem

Ik wil een pc-builder maken in php
maar hoe ga ik alles opslagen in een databank?
bv. ik nee 2 HD en deze zijn 2 verschillende ..

Alles komt in eigen tabbelen
zoals alle HDD, moederborden, ...
dus gebruik van id is het simpelste denk ik dan

maar opslagen van een hele config? hoe?

pietje666

Legacy Member
Als ik u was zou ik in netbeans werken ofzo, heb daar zelf ook php in geschreven en vond dat heel goed gaan. Code completion enzo kunt die debugger daar gemakkelijk in installeren, werkt algemeen gewoon veel beter.

Ook zoek u is dingen op over sql injection want string concatenatie in sql statements vraagt gewoon om misbruikt te worden

Thomas9

Legacy Member
PHP:
	$result = mysql_query("SELECT * FROM `gastenBoek` WHERE `id` = ".$id.";");
	$row = mysql_fetch_assoc($result);

PHP:
			<div id="Boek"><p><?php echo $fInfo['naam'];?></p>
			<textarea name="text1" cols="40" rows="5"><?php echo $row['text']; ?></textarea><br>
			<input type="submit" name="Post" value="Posten" /></div>
			<?php
			if( isset($_POST['Post'])){
				mysql_query("UPDATE `gastenboek` SET text='".$_POST['text1']."' WHERE id=".$id);
				header("Location: gastenBoek.php");
				exit;
			}
			?>

De info in textarea lukt.
Maar om het weer uit te halen en dan dus een update uit te voeren lukt niet ..
Waarom weet ik niet, er komen geen foutmeldingen maar het doet ook niet wat ik vraag .. :s

pietje666

Legacy Member
ge zet is ne form rond uw textarea en submit en zet de action op post. Als het werkt moet ge is ingeven => qsdf' truncate table exaam --

en volges mij moet er gene ; in dat sql statement als da verzonden wordt vanuit php

Thomas9

Legacy Member
Form sta ergens vanbove

PHP:
						<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">

werkte tot hiertoe altijd voor heel de pagina
probleem ligd ook aan de ubdate query
want knop werkt, maar eigelijk doet het niets ..
en geen errors

Thomas9

Legacy Member
bij de query in te voeren in phpmyadmin werkt het perfect
kan het dat de query niet word verstuurd?

pietje666

Legacy Member
echo uw update statement is hé dan weet ge of hij in de if geraakt en of er problemen zijn met uw update statement. Of hebde da net zo gedaan? of hebde die gwn overgetypt

Thomas9

Legacy Member
de query heb ik copt paste gedaan in phpmyadmin, daar werkte die :/

Thomas9

Legacy Member
echo ervoor en het komt er,
dus de update query word voor 1 of andere rede niet verstuurd naar mysql?
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan