input probleem
Dit staat in het speler_wijzigen.php script. En in het inputveld word de tekst die in de database staat zichtbaar in het daarbij behorende inputveld, Dus bij de spelernaam staat de naam die in de database staat, en dat doet het dus dat is geen probleem. Maar bij afbeelding gebeurt er iets raars en ik weet niet wat daar de oorzaak van is, ik heb wel een vermoeden, maar heb er geen oplossing voor. In de database staat voor de afbeeldingen <img src="images/afbeelding.jpg"> en dat is opzich wel goed want de afbeeldingen worden wel zichtbaar in de andere scripts, Dus alleen het wijzigen word de text zichtbaar. Maar bij de afbeelding staan de "> na ?> nu buiten de input. Ik heb van 1 speler de afbeelding gewijzigt in de database zelf naar images/foto.png om te proberen of dat verschil maakten, En dat doet het wel in de input krijg ik nu geen "> meer buiten het veld te staan, Maar worden de afbeeldingen niet meer zichbaar in de rest van de scripts.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
<label>Foto</label>
<div id="waarde">
<input type="text" size="34" maxlength="40" name="afbeelding" value="<?php echo $log->afbeelding; ?>">
</div>
<br />
<label>Speler naam</label>
<div id="waarde">
<input type="text" size="34" maxlength="40" name="spelernaam" value="<?php echo $log->spelernaam; ?>">
</div>
<br />
?>
Gewijzigd op 15/02/2015 05:26:03 door Niek Kasius
Dat is natuurlijk weer NOT DONE.
Maximaal zou dit in je database moeten staan:
Maar misschien ook enkel
Waarom?
- meer flexabiliteit zo kun je tenminste ook gewoon de filenaam bijvoorbeeld echo-en
- minder nodeloze data opslag (=== sneller)
Daarnaast moet je de bewaker bij de hoofdingang zetten. Ik bedoel dat daar waar de afbeeldingen ge-upload worden en dus in jouw applicatie komen moet je zo verschrikkelijk goed valideren dat je nooit geen shit in je database krijgt. (welke karakters mogen in de filename voorkomen?)
Zoals je aangeeft betreft het een formulier voor het wijzigen van een spelers-profiel.
Als je met afbeeldingen werkt kun je wellicht beter werken met input-velden van het type "file". Deze plaatjes sla je in een vaste directory op waarbij de naam van de afbeelding het spelers-id is. Ik hoop dat je ook op een of andere manier het user-id aan dit formulier gekoppeld hebt? Als je alle afbeeldingen in hetzelfde formaat opslaat (gif, png, jpg) wordt het natuurlijk nog simpeler.
Nu, wanneer iemand zijn / jij iemand zijn profiel wijzigt, controleer je of het plaatje bestaat en druk je deze af. Verder geef je de mogelijkheid om de afbeelding te verwijderen (met een checkbox of wat dan ook) en een upload-veld om een nieuwe afbeelding te uploaden (en daarmee mogelijk de oude te overschrijven).
Als het uploadveld leeg blijft en/of de checkbox niet wordt aangevinkt blijft de huidige toestand gehandhaafd, dat wil zeggen, als er al een geupload plaatje was verandert er niets.
---
Wat mij meer verontrust is het volgende: zoals SanThe al aangaf, je drukt je profiel-data rauw af.
Wat nu als iemand zijn gebruikersnaam verandert naar:
Of nog een leuke:
Dit zou in eerste instantie niet geaccepteerd mogen worden. Deze input zou gefilterd moeten worden, zodat enkel alfanumerieke karakters zijn toegestaan. Ik weet verder niet of de afhandeling van dat script dit doet?
Maar zelfs als je dat niet zou doen zou je te allen tijde deze output moeten escapen als je deze afdrukt, omdat zelfs als er dan rotzooi inzit als in het bovenstaande voorbeeld, dit je pagina niet breekt.
Je gebruikt 2 verschillende DIV's met hetzelfde ID, dit is niet toegestaan en vraagt dan ook om problemen.
Quote:
Je gebruikt 2 verschillende DIV's met hetzelfde ID, dit is niet toegestaan en vraagt dan ook om problemen.
Ik denk dat dat het minste van zijn problemen is ;-). Maar je hebt gelijk.
En daar werkt alles gewoon goed.
Ik vind het maar raar.
Lees de reactie Frank Nietbelangrijk van 15/02/2015 11:29:47 nog eens door; hij geeft het daar ook al aan.
Ik had in spelers de afbeeldingen inderdaad opgeslagen als <img src="images/afbeelding.gif"> en dat heb ik nu veranderd, dat kwam omdat er in de input van toevoegen een value="<img src="images/"> en dat heb ik veranderd in images/ En in de Map admin in bewerken.php de onderstaande code aangepast zoals hieronder.
En in speler het zelfde maar dan zonder../ omdat die in de zelfe Map staat waar ook de Map images in staat.
pipo Clown
Quote:
Je gebruikt 2 verschillende DIV's met hetzelfde ID, dit is niet toegestaan en vraagt dan ook om problemen.
en kun je me ook vertellen waarom dat niet mag.
In html5 doen ze dat toch ook ze heten dan wel geen div maar article of acide en zo, maar die mag je zoveel gebruiken als je zelf wilt in 1 section.
In html5 doen ze dat toch ook ze heten dan wel geen div maar article of acide en zo, maar die mag je zoveel gebruiken als je zelf wilt in 1 section.
Een div/article/aside zijn elementen en hebben niks met een ID te maken. Het zijn verschillende dingen. Een ID is een IDentifier, ofwel de unieke naam waaraan een element herkend kan worden. Stel we hebben een article en dat geven we als ID "niek". Stel dat we nu een ander article ook "niek" als ID geven, dan krijgen we:
Nu willen we via javascript of css iets doen met het article "niek". Euh ... welk article? Want ik heb 2x een article "niek"! Zie je het probleem? Daarom mag een ID dus altijd maar 1x op een pagina voorkomen.
een class mag wel meerdere keren voorkomen. Dit is dan ook tevens het grootste verschil tussen id en class.
Dus wel correct:
Maar door al dat gedoe met die veranderingen in het script om maar te proberen het te laten werken.
Heb ik nu weer een probleem dat ik al eens eerder had met dit: Warning: mysqli_fetch_object() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\biljart\spelers.php on line 17.
Dat is hieronder regel 3
Code (php)
1
2
3
4
2
3
4
<?php
$query = mysqli_query($con, "SELECT foto, speler, achternaam, gebdatum, straat, huisnr, postcode, plaats, telefoon. email, club, caramboles, hoogste FROM spelers WHERE id='".mysqli_real_escape_string($con, $_GET['id'])."'");
while($show = mysqli_fetch_object($query)){
?>
$query = mysqli_query($con, "SELECT foto, speler, achternaam, gebdatum, straat, huisnr, postcode, plaats, telefoon. email, club, caramboles, hoogste FROM spelers WHERE id='".mysqli_real_escape_string($con, $_GET['id'])."'");
while($show = mysqli_fetch_object($query)){
?>
En dat komt van de index waar deze link staat die spelers opent
Gewijzigd op 16/02/2015 18:57:07 door Niek Kasius
Je query is niet goed. echo hem eens?
Kijk eens naar de broncode van je output.
Dan staat hier letterlijk $show['id'] in waarschijnlijk.
Dat zorgt ervoor dat je query misgaat.
En je de boolean false terugkrijgt.
Ik snap de aantrekkingskracht niet om al je statische HTML te echo'en.
Echo uitsluitend de variabele delen, en voorzie deze van output escaping.
En controleer of mysqli_query uberhaupt iets oplevert.
Maak je code "mondig" met het melden van fouten, want nu schuif je alles onder het tapijt en vraag je je af wat er misgaat...
EDIT: het probleem is dus: je variabele staat IN een string met ENKELE QUOTES.
Gewijzigd op 16/02/2015 19:20:00 door Thomas van den Heuvel
Heb het member script gekopieerd en daar de SESSION eruit gehaald omdat ik daarin moet inloggen, en dat als spelers.php opgeslagen.