PHP Function loop

Gestart doorAntonn13 reacties60 weergaven

14 berichten · pagina 1 van 1

Antonn

Lid · Topicstarter

Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hi,

Ik ben bezig aan een "uploadsysteem" met "mappen". Nu wil ik alle mappen (IDs daarvan) van 1 bepaalde map in een array zetten met een functie. Alleen lukt die niet en krijg ik een lege array. Iemand die een probleem ziet? Dit heb ik nu:

[COLOR= #0000BB]<?php
$maps[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]();[/COLOR] [COLOR= #FF8000]// Array waar de IDs van de mappen in moeten[/COLOR]

[COLOR= #007700]function[/COLOR] lookmaps[COLOR= #007700]([/COLOR][COLOR= #0000BB]$mapid[/COLOR][COLOR= #007700]) {[/COLOR]
[COLOR= #0000BB]$maps[/COLOR][COLOR= #007700][] =[/COLOR] [COLOR= #0000BB]$mapid[/COLOR][COLOR= #007700];[/COLOR]
[COLOR= #0000BB]$select_sql[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT id FROM maps WHERE map="[/COLOR][COLOR= #007700].[/COLOR][URL="http://www.php.net/mysql_real_escape_string"]mysql_real_escape_string[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$mapid[/COLOR][COLOR= #007700]).[/COLOR][COLOR= #DD0000]""[/COLOR][COLOR= #007700]);[/COLOR]
    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/mysql_num_rows"]mysql_num_rows[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$select_sql[/COLOR][COLOR= #007700]) >[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700]) {[/COLOR]
        [URL="http://www.php.net/while"]while[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$select[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_fetch_assoc"]mysql_fetch_assoc[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$select_sql[/COLOR][COLOR= #007700])) {[/COLOR]
        lookmaps[COLOR= #007700]([/COLOR][COLOR= #0000BB]$select[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]id[/COLOR][COLOR= #007700]]);
        }
    }
}[/COLOR]

lookmaps[COLOR= #007700]([/COLOR][COLOR= #0000BB]$idvandemapwaarvanikalleonderliggendemappenineenarraywil[/COLOR][COLOR= #007700]);[/COLOR] [COLOR= #FF8000]// [/COLOR]

[URL="http://www.php.net/print_r"]print_r[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$maps[/COLOR][COLOR= #007700]);[/COLOR] [COLOR= #FF8000]// Outputten, ik krijg hier niets[/COLOR]
?>


Speciaal voor jullie uitgeleind pompom

Mijn databasestructuur lijkt me eenvoudig:
id | map | (naam) | (beschrijving) | (andere shyt)
ID van de map | ID van de map waar in deze map staat, indien hoofdmap => 0 | naam | .......

Echt bedankt, ik zet er 0.1 op wink
Greetz
0
Berichten
6.485
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Om alle bestanden en mappen te vinden gebruik ik altijd glob() kijk daar eens naar wink
0
Antonn

Lid · Topicstarter

Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Als je het topic had doorgelezen wist je dat ik iets uit een database probeerde te halen voor mijn zelfgemaakte mappen systeem...
0
Berichten
5.957
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Antonn schreef:
Als je het topic had doorgelezen wist je dat ik iets uit een database probeerde te halen voor mijn zelfgemaakte mappen systeem...
Je hele code brakt echt enorm.
Je begint volgens mij gewoon beter opnieuw.
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Je voert nu per map 1 query uit, dat moet je niet willen.
0
Antonn

Lid · Topicstarter

Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Lennard schreef:
Je voert nu per map 1 query uit, dat moet je niet willen.
Hoe wou je het dan doen? Een loop in MySQL ofzo?

toevoeging op 2 juli 2012, 09:06:35:
Even waarvoor dit is: Als iemand een "map" verwijdert moeten ook alle onderliggende bestanden verwijderd worden. Als er in de map die verwijderd word dus nog een map staat met daarin nog een map met daarin nog bestanden moeten die bestanden ook nog verwijderd worden.

toevoeging op 2 juli 2012, 09:07:06:
Alemaalte schreef:
Eerdere citaten tonen
Antonn schreef:
Als je het topic had doorgelezen wist je dat ik iets uit een database probeerde te halen voor mijn zelfgemaakte mappen systeem...
Je hele code brakt echt enorm.
Je begint volgens mij gewoon beter opnieuw.
Heb je die reactie gepost? Zonder computer? redfaceredfaceredface
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Antonn schreef:
Eerdere citaten tonen
Lennard schreef:
Je voert nu per map 1 query uit, dat moet je niet willen.
Hoe wou je het dan doen? Een loop in MySQL ofzo?
Ja dat weet ik zo snel niet, maar in ieder geval iets wat maar één query is.

Maar bestaan die mappen écht of zijn het fictieve mappen?
0
Antonn

Lid · Topicstarter

Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Lennard schreef:
Eerdere citaten tonen
Antonn schreef:
Eerdere citaten tonen
Lennard schreef:
Je voert nu per map 1 query uit, dat moet je niet willen.
Hoe wou je het dan doen? Een loop in MySQL ofzo?
Ja dat weet ik zo snel niet, maar in ieder geval iets wat maar één query is.

Maar bestaan die mappen écht of zijn het fictieve mappen?
Ze bestaan niet in het echt, enkel in de database. De geuploade bestanden bestaan dus wel in het echt (duhh...) maar de gegevens in welke map die staan en eigenaar enzo staan dus ook enkel in een database.Ik verwacht niet dat iemand 200 mappen gaat maken hoor, hooguit 20 met een maximum van 300 bestanden erin.

Mijn bedoeling was dus alle mappen van die map in een array te krijgen dat ik dan een query kon uitvoeren als deze: "UPDATE bestanden SET verwijderd = ja WHERE map=20 OR map=21 OR map=24". Hierna kon ik nog een query uitvoeren als dit: "UPDATE mappen SET verwijderd = ja WHERE id=20 OR id=21 OR id=24"
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Dan zou ik eerder in elke map alle submappen erbij zetten, dus dat je /home/bestanden/website/overige/anton.nl/afbeeldingen/ zegmaar helemaal opslaat, samen met een id van de map die er boven zit.
Je kunt dan meteen doen DELETE FROM mappen WHERE locatie LIKE /home/bestanden/% AND userid = 123 en dan hoef je heel niet met die ids te knoeien.

Je moet ze dan wel alleen renamen als iemand een mapnaam wijzigt, maar dat is nog altijd minder zwaar dan telkens tig nutteloze queries uitvoeren.
0
Antonn

Lid · Topicstarter

Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Lennard schreef:
Dan zou ik eerder in elke map alle submappen erbij zetten, dus dat je /home/bestanden/website/overige/anton.nl/afbeeldingen/ zegmaar helemaal opslaat, samen met een id van de map die er boven zit.
Je kunt dan meteen doen DELETE FROM mappen WHERE locatie LIKE /home/bestanden/% AND userid = 123 en dan hoef je heel niet met die ids te knoeien.

Je moet ze dan wel alleen renamen als iemand een mapnaam wijzigt, maar dat is nog altijd minder zwaar dan telkens tig nutteloze queries uitvoeren.
hmpff. Dan nog het feit dat ze dezelfde mapnamen mogen gebruiken moet ik het nog ns met IDs gaan doen. "/21/22/26/". Lijkt me echt niets. Is er geen manier dat het kan als dit? Lijkt me toch niet zo zwaar??
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Huh, dus je kan twee keer de map /anton/websites/ aanmaken ofzo? confusedDan zijn het dus ook geen mappen, want die moeten uniek zijn.

Met ids dat doen heeft geen zin nee, want dan kun je die like-truc uit mijn vorige post niet toepassen.

Zwaar is het nu niet, maar als jij straks weet ik hoeveel mappen hebt en iemand maakt 50 submappen aan dan heb je spijt dat je het niet meteen goed hebt aangepakt, want dan pas merk je dat het gigantisch inefficiënt is. Je kan het dan echter niet eenvoudig meer oplossen omdat je al onwijs veel mappen hebt.

Ik zou voor unieke mapnamen gaan (daar zijn het mappen voor), en dan mijn systeempje toepassen zolang je geen 100% perfecte SQL oplossing hebt.
0
Antonn

Lid · Topicstarter

Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Lennard schreef:
Huh, dus je kan twee keer de map /anton/websites/ aanmaken ofzo? confusedDan zijn het dus ook geen mappen, want die moeten uniek zijn.

Met ids dat doen heeft geen zin nee, want dan kun je die like-truc uit mijn vorige post niet toepassen.

Zwaar is het nu niet, maar als jij straks weet ik hoeveel mappen hebt en iemand maakt 50 submappen aan dan heb je spijt dat je het niet meteen goed hebt aangepakt, want dan pas merk je dat het gigantisch inefficiënt is. Je kan het dan echter niet eenvoudig meer oplossen omdat je al onwijs veel mappen hebt.

Ik zou voor unieke mapnamen gaan (daar zijn het mappen voor), en dan mijn systeempje toepassen zolang je geen 100% perfecte SQL oplossing hebt.
Hoezo kan het niet met IDs?

LIKE /123/456/%

toevoeging op 2 juli 2012, 09:45:17:
Ow, ik zie inderdaad dat ik op mijn PC niet 2 mappen hetzelfde kan noemen. Dat ga ik volgende week dan ook maar interpreteren in mijn systeem, wan nu vertrek ik zo op kamp voor een week.

toevoeging op 2 juli 2012, 09:45:28:
Ik gebruikte een moeilijk woord biggrin
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Antonn schreef:
Hoezo kan het niet met IDs?
LIKE /123/456/%
oja kan wel natuurlijk biggrindan zit je ook niet met het rename-probleem
0
Antonn

Lid · Topicstarter

Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Lennard schreef:
Eerdere citaten tonen
Antonn schreef:
Hoezo kan het niet met IDs?
LIKE /123/456/%
oja kan wel natuurlijk biggrindan zit je ook niet met het rename-probleem
Dat kan toch? Ik toon nu ook al in elke map "waar je zit" als "Hoofdmap >> een map >> een andere map >> huidige map" met links. Ook met een loop function uiteraard en dat werkt perfect.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren