Da ASP a PHP... movenext? do while not?

paolissimo

Nuovo Utente
4 Gen 2018
16
0
1
Ciao a tutti,
sto cercando di migrare da ASP a PHP e, ad esempio, non trovo l'equivalente di Do While Not o di Movenext.

Ecco quello che devo fare:

dopo aver interrogato mysql con un join tra tabelle (forse fin qui ci sono)

1. se i dati da estrarre sono finiti o non presenti, devo reindirizzare ad un'altra pagina

2. se invece i dati sono disponibili, carico il primo

3. poi il secondo e cosi via in loop sino alla fine dei dati presenti nel campo

Un aiuto sarebbe graditissimo, grazie! :-)
 
Grazie Marino51, ho letto e continuerò a farlo, è anche in inglese! ;-)
Completato il punto 1 e il 2, ora devo capire come fare con il punto 3... quanto meno ci provo.
 
se vuoi continuare su questa strada, ti suggerisco di estendere la classe PDO con metodi tuoi
questo ti permette di avere successivamente un codice molto pulito con pochissimi ma facili riferimenti al db
ti posto alcuni dei miei metodi, tutti si appoggiano a "BindParams" e restituiscono "qualcosa"
ai metodi viene passato il testo della query e l'eventuale array con i valori da usare
PHP:
  public function queryS($sql, $params=array())        // return the retrieved dataset
  {
    return $this->BindParams($sql, $params)->fetchALL();
  }


  public function queryM($sql, $params=array())        // return the involved rows counted (insert, update, delete)
  {
    return $this->BindParams($sql, $params)->rowCount();
  }


  public function queryC($sql, $params=array())        // return the retrieved element
  {
    $res = ($this->BindParams($sql, $params)->fetch()); return empty($res) ? "" : current($res);
  }


  public function query($sql, $params=array())        // return $sth, the object for subsequent operation
  {
    return $this->BindParams($sql, $params);
  }


  private function BindParams($sql, $params)
  {
    if($this->AllowLog) $this->MyLog($this->pdoSqlDebug($sql, $params));

    if (substr_count($sql, "?") != count($params))
      $this->MyErr("PDO : incongruenza nei parametri della query -> ".$sql);

    $params = $this->FixSQL($params);

    try { $sth = $this->pdo->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
          $sth->execute($params);
          return $sth; }
    catch(PDOException $e){ $this->handle_sql_errors($sql, $e, $params); }
  }
 
Grazie Marino, molto interessante. Mi sono avvicinato a PHP solo da pochissimi giorni e 10 anni dopo aver appeso al chiodo ASP...
ma mi sta piacendo. Ho moltissimo da imparare e sapere quale strada percorrere è senza dubbio un buon aiuto. Al momento sto facendo in modo che tutto funzioni ma è una bozza su cui tornare non appena avrò acquisito maggiori conoscenze.
Sono come un bambino che muove i primi passi... :-)
Mi scontro con problemi banali, ad esempio: volendo separare il codice dall'htlm e di conseguenza, volendo richiamare solo le variabili in php all'interno dell'html, non ho ancora trovato il modo di estrarre tutti i dati di un ciclo while e non solo quelli di una singola riga del db. Beh... oggi qui da me il tempo è brutto, una buona occasione per andare avanti. Buona domenica!
 
utilizzando il metodo "query" del post precedente ed ipotizzando una ricerca, questi sono possibili modi di gestire la lettura sequenziale del risultato
PHP:
$sql = "SELECT * FROM PERIODI with (ROWLOCK) WHERE id_periodo IN( ?, ?, ? ) and id_struttura=?";


print "<br />-------------------- SELECT WHILE : Ritorna il numero e le righe selezionate<br />";
  $sth = $db->query( $sql, array( 11, 13, 15, 2 ) );

  print $sth->rowCount()." record( s ) contati <br />";

  while( $row = $sth->fetch() )
      print $row['id_periodo']."&emsp;".$row['id_struttura']."&emsp;".$row['data_inizio']."&emsp;".$row['data_fine']."<br />";
  print "<br />";


print "<br />-------------------- SELECT FOREACH : Ritorna le righe selezionate<br />";
  foreach ( $db->query( $sql, array( 11, 13, 15, 2 ) ) as $row )
      print $row['id_periodo']."&emsp;".$row['id_struttura']."&emsp;".$row['data_inizio']."&emsp;".$row['data_fine']."<br />";
  print "<br />";


print "<br />-------------------- SELECT FOR : Ritorna le righe selezionate<br />";
  $sth = $db->query( $sql, array( 11, 13, 15, 2 ) );
  for( ; $row = $sth->fetch(); )
      print $row['id_periodo']."&emsp;".$row['id_struttura']."&emsp;".$row['data_inizio']."&emsp;".$row['data_fine']."<br />";
  print "<br />";
ed relativo risultato
upload_2018-1-7_10-5-5.png

buona domenica
 

Discussioni simili