Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Analizzare una variabile per creare una condizione

    Ciao ragazzi fino ad adesso ho eseguito questo codice

    if ($vbulletin->userinfo['field'.$inputids.''])
    {
    codice php
    }
    $inputids = 5

    Nella variabile inputids potevi mettere un numero e ti usciva questa condizione

    if ($vbulletin->userinfo['field5'])

    Ora però ho bisogno che sulla variabile inputids si possano mettere più numeri (esempio 5 e 6)

    In modo che la condizione esca cosi

    if ($vbulletin->userinfo['field5'] OR $vbulletin->userinfo['field6'])

    Nella variabile invece venga messo qualcosa del genere
    5, 6

    A livello di logica ma anche di pratica cosa dovrei fare per analizzare il contenuto di $inputids e trasformarlo in una condizione come quella?
    Grazie in anticipo per l'aiuto
    xD97Macio97xD
    oO
    0

  2. #2
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Ciao, tu sai già quanti valori massimo puoi inserire?oppure sono dinamici volta per volta?perchè se fosse così ti è impossibile realizzare il codice dell'if, in quanto dovresti crearti dinamicamente la condizione al suo interno...cosa non fattibile. Nel caso in cui, invece, sai già a priori quanti siano i valori e restino sempre tali puoi ovviare così

    Codice PHP:

    $inputids 
    "5,6"//immaginando che tu divida tutti i tuoi numeri attraverso la virgola
    $valori=explode(",",$inputids);

    foreach
    if (
    $vbulletin->userinfo['field'.$valori[0].''] OR $vbulletin->userinfo['field'.$valori[1].''])
    {
    codice php


  3. #3
    Ciao prima di tutto grazie della risposta il numero dei valori purtroppo è anche esso una variabile, è infatti l'utente a deciderlo può essere un solo valore oppure più di uno (almeno fino a 5 o 4) quindi dici che non fà oppure che è complicato?
    xD97Macio97xD
    oO
    0

  4. #4
    volevo anche aiutarvi dicendovi che questo è già stato fatto ma considerando le mie esperienze non sono in grado di interpretare il codice e quindi adattarlo, nella variabile $ids si scrive field1, field2, fiel4, field7 ecc quanti ne vuoi

    $ids = field1, field2, field3, field4
    $checkfields = explode(",", str_replace(", ", ",", str_replace("field", "", $ids)));
    foreach ($checkfields AS $check)
    {
    if (isset($vbulletin->userinfo["field" . $check]) AND empty($vbulletin->userinfo["field" . $check]))
    {
    $checkarray[] = "field" . $check;
    }
    }

    if (sizeof($checkarray) > 0)
    {
    foreach ($checkarray AS $check)
    {
    $fieldname = htmlspecialchars_uni($vbphrase[$check . '_title']);
    $blankfields_bit .= "[*]$fieldname";
    }

    unset($checkarray, $checkfields);

    switch($vbulletin->options['blankfields_pages'])
    {
    case 0:
    $vbulletin->templatecache['FORUMHOME'] = str_replace('$navbar','$navbar'.fetch_template('bl ankfields').'
    ',$vbulletin->templatecache['FORUMHOME']);
    break;
    case 1:
    $vbulletin->templatecache['navbar'] .= fetch_template('blankfields') . "
    ";
    break;
    case 2:
    eval('$blankfields = "' . fetch_template('blankfields') . '";');
    break;
    default:
    $vbulletin->templatecache['FORUMHOME'] = str_replace('$navbar','$navbar'.fetch_template('bl ankfields').'
    ',$vbulletin->templatecache['FORUMHOME']);
    break;
    }
    xD97Macio97xD
    oO
    0

  5. #5
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Analisi:

    Hai un array cui accedi tramite $vbulletin->userinfo i cui indici sono composti dalla parola field seguita da un numero. Il contenuto di questo array è di tipo booleano o similare dato che nelle condizioni scrivi direttamente if ($vbulletin->userinfo['field'.$inputids])

    Dato un elenco di numeri, desideri effettuare la verifica di tutti e soli quegli elementi dell'array il cui indice sia field seguito dal numero appartenente al suddetto elenco, legando le condizioni con operatore logico or.

    Sappiamo che l'operatore or è verificato se anche sola una delle preposizioni logiche è verificata, quindi possiamo scrivere
    Codice PHP:
    $elenco=array(4,5);
    foreach(
    $elenco as $n){
        if(
    $vbulletin->userinfo['field'.$n']){
            //codice PHP
            break;
        } 

    Come la vedi?
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  6. #6
    detto non la capisco molto o.o ma nel codice qualcosina si e credo che mi sono spiegato male.. questo è il codice che mi hai postato tu

    $elenco=array(4,5);
    foreach($elenco as $n){
    if($vbulletin->userinfo['field'.$n]){
    //codice PHP
    break;
    }
    }
    Anche se la variabile è composta da un solo numero la condizione risulterebbe (fosse esso 5)

    if($vbulletin->userinfo['field5'])

    Quindi credo che la condizione sia cosi

    if($vbulletin->userinfo['field'.$n''])

    correggimi se sbaglio mentre se la variabile è composta da più numeri (separati da una virgola)

    La condizione finale uscirebbe (fossero i numeri 5 e 6)

    if($vbulletin->userinfo['field5,6'])

    Anzichè

    if($vbulletin->userinfo['field5'] OR $vbulletin->userinfo['field6'])

    Se ho interpretato male il tuo codice scusami in anticipo ma non sono abbastanza capace per questo
    xD97Macio97xD
    oO
    0

  7. #7
    Mi sono letto un paio di volte quello che hai scritto e credo di aver proprio capito male il tuo codice fà quello che intendo io? Aspetto una risposta
    xD97Macio97xD
    oO
    0

  8. #8
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    if($vbulletin->userinfo['field'.$n'']) è sinattticamente errata. Quei due singoli apici in fondo non hanno alcun significato.

    Il codice
    Codice PHP:
    $elenco=array(4,5);
    foreach(
    $elenco as $n){
        if(
    $vbulletin->userinfo['field'.$n]){
            
    //codice PHP
            
    break;
        }

    Questo codice esegue
    if($vbulletin->userinfo['field4'])
    se vero esegue 'codice php' ed esce dal ciclo foreach
    se falso esegue
    if($vbulletin->userinfo['field5'])
    se vero esegue codice php ed esce dal ciclo foreach
    se falso non essendoci altri valori in $elenco esce dal for each

    ampliando l'elenco $elenco puoi verificare tutti i campi che ti pare
    al prima codizione verificata e volendo tu legare le condizioni con or, dopo l'esecuzione del 'codice php' esco dal foreach

    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  9. #9
    A livello teorico non capisco ancora, quindi proverò direttamente e ti farà sapere grazie mille
    comunque io ho sempre scritto cosi altrementi non funzionava
    if ($vbulletin->userinfo['field'. $vbulletin->options['var_field'] .''])
    var = $vbulletin->options['var_field']
    xD97Macio97xD
    oO
    0

  10. #10
    Ciao GRAZIE MILLE il codice funziona splendidamente il problema è quando vado ad inserire la variabile
    Codice PHP:
    $ids $vbulletin->options['var_field1'];
    $ids_array explode(','$ids);
    $elenco=array($ids_array); 
    foreach(
    $elenco as $n){ 
        if(
    $vbulletin->userinfo['field'.$n]){ 
    $template_hook['header_userinfo'] .= 'test';
            break; 
        } 

    $vbulletin->options['var_field1']; sarebbe la variabile la trasformo in un array tramite la funzione explode ma non funziona se invece lo faccio a mano e mette io l' array funziona
    Per assicurarmi che tutto andava liscio ho fatto cosi
    ho aggiunto sotto
    Codice PHP:
    $template_hook['header_userinfo'] .= ''.$ids.''.ids_array.''
    E mi usciva 6,7 Array quindi tutto funziona come deve funzionare l'array viene creato.
    xD97Macio97xD
    oO
    0

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.