Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27

Discussione: While If numrows

  1. #1

    While If numrows

    forse ho il cervello spento...ma non mi riesce una cosa del tipo:

    Codice PHP:
    $query "SELECT * FROM tabella, tabella1, tabella2 WHERE tabella.id=tabella1.idt AND  tabella1.idt1=tabella.idt AND tabella2.idt2=tabella.idt ";
    $result mysql_query($query$db) or die( "Errore: " mysql_error() );

    $numrows mysql_num_rows($result);

    while (
    $numrows=mysql_fetch_array($result)) {
    echo 
    "
    "
    .$SEDE.": ";
    if (
    $lang==it){ echo "".$numrows['sedeP'].""; } 
    elseif (
    $lang==en) { echo "".$numrows['sedePEN'].""; }

    // e fin qui tutto ok!!
    // ora vorrei fare una cosina con IF e il numrows. 
    if ($numrows['tabella1.Datibinari']!=0) { echo "Risultato interrogazione condizionale"; } else { echo "Niente"; }

    // questo if non mi funziona! 
    Secondo voi sto sbagliando?

  2. #2

    Re: While If numrows

    Originariamente inviato da windtalk

    Secondo voi sto sbagliando?
    si.

    $numrows = mysql_num_rows($result);

    while ($numrows=mysql_fetch_array($result)) {

    valorizzi $numrows con il numero dei record trovati e subito dopo lo sovrascrivi facendolo diventare un array che contiene la riga del result set ....

    Si puo' fare volendo, ma la if successiva che compara?

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3

    Re: Re: While If numrows

    Originariamente inviato da piero.mac
    si.

    $numrows = mysql_num_rows($result);

    while ($numrows=mysql_fetch_array($result)) {

    valorizzi $numrows con il numero dei record trovati e subito dopo lo sovrascrivi facendolo diventare un array che contiene la riga del result set ....

    Si puo' fare volendo, ma la if successiva che compara?

    prima di tutto, grazie per la risposta.


    questa condizione mi serve per dirgli: se la lingua è It allora scrivi il contenuto della colonna A, se invece è En allora scrivi il contenuto della colonna B
    Codice PHP:
    if ($lang==it){ echo "".$numrows['sedeP'].""; } 
    elseif (
    $lang==en) { echo "".$numrows['sedePEN'].""; } 
    questo IF mi servirebbe per dirgli se nella colonna Datibinari della tabella1 è diverso da 0 allora scrivi ... se non è così scrivi ... Questo non mi funziona.
    Codice PHP:
    if ($numrows['tabella1.Datibinari']!=0) { echo "Risultato interrogazione condizionale"; } else { echo "Niente"; } 
    Non so forse il ragionamento che faccio è sbagliato in partenza perchè nello script uso numrows per valorizzare e poi come array del result e quindi per stampare il risultato...

  4. #4
    $numrows['tabella1.Datibinari']!=0)

    premesso che in $numrows non hai piu' il numero dei record (a prescindere) nel result set non esiste piu' il riferimento ad una specifica tabella ma tutte le tabelle che hai in join si presentano al result set come una unica grande tabella dove, per nomi di campo uguali nelle varie tabelle, ne verra' presentato solo uno che presentera' il valore dell'ultima tabella in elenco nella join.

    quindi sempre che ci sia una logica con il contenuto del campo:

    if($numrows['Datibinari']!=0)

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    grazie ancora
    ...anche se a dire la verità inizio a temere di dover ripensare la struttura, o almeno la parte in questione, dello script! :master:

    Codice PHP:
    if($numrows['Datibinari']!=0
    lo avevo già provato e non mi dava... nel senso che sia che la condizione sia rispettata (!=0) sia che non lo sia (=0) mi stampa la condizione impostata per else!!
    cioè è come se non legesse l'IF ma solo il secondo echo

  6. #6
    e se facessi una query?
    mi spiego...

    interrogo nuovamente il db e chiedo se un dato campo "pippo" della tabella "topolinia" è popolato o meno. Se è popolato (==1, !=0, !NULL, ...) allora scrivo A, se invece è vuoto scrivo B.

    è una scemata completa o è possibile farlo??

  7. #7
    Originariamente inviato da windtalk
    e se facessi una query?
    mi spiego...

    interrogo nuovamente il db e chiedo se un dato campo "pippo" della tabella "topolinia" è popolato o meno. Se è popolato (==1, !=0, !NULL, ...) allora scrivo A, se invece è vuoto scrivo B.

    è una scemata completa o è possibile farlo??
    non sono certo di aver capito cosa c'e' in quel campo, ma potresti aggiungere una if alla query...

    select *, if(topolinia.pippo = '', 'B', 'A') as pippopippo
    from... etc

    se topolinia.pippo e' vuoto in pippopippo troverai B in tutti gli altri casi troverai A

    nel controllo bastera' vedere se c'e' A oppure B nel campo alias pippopippo per decidere cosa stampare

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Originariamente inviato da piero.mac
    non sono certo di aver capito cosa c'e' in quel campo, ma potresti aggiungere una if alla query...
    è un campo varchar...
    a dire il vero nella query ci sono tre tabelle con 3 relativi campi varchar che devo verificare se sono pieni o vuoti. e se sono pieni stampo a video un link se invece sono vuoti non stampo nulla.

    ho provato a scrivere così:
    Codice PHP:
    $query "SELECT *, if(cv.NomeCV = '', '', 'True') as pippo FROM... WHERE .... ";
    $result mysql_query($query$db) or die( "Errore: " mysql_error() );
    $numrows mysql_num_rows($result);

    ....
    while (
    $numrows=mysql_fetch_array($result)) {

    ......

    if(
    $numrows['pippo'] && $numrows['pippo']!=0) { echo "Scrivi il link"; } else { echo ""; } 
    però non mi funziona. inserendo: $numrows['pippo']!=0 prende il campo come vuoto sempre e non stampa nulla. se invece inserisco solo una condizione $numrows['pippo'], ovviamente mi stampa sempre il link e considera sempre come pieno, anzi esistente!!, il campo.
    ho provato con isset() ma il risultato non cambia


  9. #9
    santissimi ... che confusione.

    Primo: se un campo e' un varchar mettere != 0 non ha molto senso. significa dire "diverso da ascii 48 decimale. il che potrebbe pure funzionare ma manca il senso logico.

    Poi dovresti "farti" la cortesia di cambiare il nome $numrows per il result set. Siccome lo utilizzi prima per:

    $numrows = mysql_num_rows($result);

    non dovrebbe essere un grosso impegno chiamare per esempio $row il result set....

    while ($row = mysql_fetch_assoc($result)) {

    Almeno si sgombra lo scenario da equivoci che ingenuamente potrebbero incorrere a chi legge.

    Altra cosa relativa ad un campo varchar. Il campo puo' assumere tre diversi, chiamiamoli per semplicita', "stati".

    1) campo NULL - cioe' NON esiste e non viene considerato nei raggruppamenti.
    2) campo vuoto, empty - Esiste ma non ha valori di alcun genere.
    3) campo valorizzato. - esiste ed e' diverso da "vuoto" e NULL.

    Poi una domanda: i tre campi delle tre tabelle devono essere tutti vuoti/pieni oppure e' ammesso che se almeno uno esiste lo puoi stampare? In ogni caso il link da stampare lo devi scegliere con il where nella query e non con un controllo sul contenuto a posteriori.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    ciao piero.mac ti ringrazio per l'attenzione e i suggerimenti preziosi. in effetti mi sento un pò confuso sulla corretta esecuzione dello script

    Poi una domanda: i tre campi delle tre tabelle devono essere tutti vuoti/pieni oppure e' ammesso che se almeno uno esiste lo puoi stampare?
    i tre campi delle tre tabelle possono essere:
    tutti 3 pieni
    tutti e 3 vuoti
    alcuni pieni e alcuni vuoti
    in relazione alla loro condizione, se contengono dati o meno, voglio scrivere un link se il campo è pieno o lasciare spazio se il campo è vuoto.
    per fare ciò devo però fare un controllo sui campi per verificare se hanno dei dati al loro interno o meno e in relazione a ciò stampare a video o meno.

    In ogni caso il link da stampare lo devi scegliere con il where nella query e non con un controllo sul contenuto a posteriori.
    :master: qui casca l'asino! nel senso che non mi è mai capitato di inserire in una query un echo condizionale che sarà eseguita nel ciclo while. come faccio???

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.