pb de clé primaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : pb de clé primaire

par IxeX » 09 juin 2006, 11:37

Effectivement ça marche mieux comme ça :roll:

merci pour la rapidité de ta réponse et sa pertinence :D

par Cyrano » 08 juin 2006, 20:11

Mouais, d'où l'importance d'une indentation du code correcte et d'un alignement des accolades : il en manque une ouvrante :arrow: message d'erreur. Proposition de corrigé avec quelques détails en plus:
<?php
// --- création d'une requête de modification dans une table
function creation_requete_modification($tbl, $tbinfos, $id, $params='')
{
    $id = intval($id);
    if (!$tbl || !is_array($tbinfos) || count($tbinfos) == 0 || !$id)
    {
        return('');
    }
    if (!is_array($params))
    {
        $params = array();
    }
    // --- tableau des champs existants dans la table
    $tb_champs = $this->tb_champs($this->db, $tbl);
    // --- début de la requête
    $txt_requete = "update ". $tbl;

    // --- création des tableaux de champs et de valeurs
    reset($tbinfos);
    $i = 0;
    while (list($cle, $valeur) = each($tbinfos))
    {
        // --- ajout dans la requête si le champ existe
        if ($tb_champs[$cle] == 1)
        {
            $txt_requete .= ' SET ';
        }
        else
        {
            $txt_requete .= ',';
        }
        $valeur = $this->quote_smart($valeur);
        $txt_requete .= $cle ."='". $valeur ."'";
        $i++;
    }
    // --- clé primaire
    if (strlen($params['cle_primaire']) > 0)
    {
        $cle_primaire = $params['cle_primaire'];
    }
    else
    {
        $cle_primaire = 'id';
    }
    // --- conditions
    $txt_requete .= " where ". $cle_primaire ."=". $id .";";
    return($txt_requete);
}
?>

pb de clé primaire

par IxeX » 08 juin 2006, 20:02

Dans ma classe, j'ai le code suivant pour créer une requête de modification :
// --- clé primaire 
if (strlen($params['cle_primaire']) > 0) { ----------> 'l.189' 
$cle_primaire = $params['cle_primaire']; 
} 
else { 
$cle_primaire = 'id'; 
} 
avec le msg d'erreur suivant à la ligne 'l.189' :
Parse error: parse error, unexpected T_IF, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /
une piste ? merci d'avance :wink:

En annexe la totalité du code :
// --- création d'une requête de modification dans une table
function creation_requete_modification($tbl,
  $tbinfos, $id, $params='') {
  $id = intval($id);
  if (!$tbl
    || !is_array($tbinfos)
	|| count($tbinfos)==0
	|| !$id) {
	return('');
  }
  if (!is_array($params)) $params = array();
  // --- tableau des champs existants dans la table
  $tb_champs = $this->tb_champs($this->db, $tbl);
  // --- début de la requête
  $txt_requete = "update $tbl";
  
  // --- création des tableaux de champs et de valeurs
  reset($tbinfos);
  $i = 0;
  while (list($cle, $valeur) = each($tbinfos)) {
    // --- ajout dans la requête si le champ existe
	if ($tb_champs["$cle"] == 1) {
	  $txt_requete .= ' set ';
	 }
	 else {
	   $txt_requete .= ',';
	 }
	 $valeur = $this->quote_smart($valeur);
	 $txt_requete .= "$cle='$valeur'";
	 $i++;
	}
  }
    // --- clé primaire 
    if (strlen($params['cle_primaire']) > 0) {
    $cle_primaire = $params['cle_primaire'];
  }
  else {
    $cle_primaire = 'id';
  }
  // --- conditions
  $txt_requete .= " where $cle_primaire=$id";
  return($txt_requete);
}